数据采集程序如下:
DATA_SAM:_____________ MOV____ R0,#30H_____________ ;数据缓冲区首地址30H→R0MOV____ R1,#00000000B_____________ ;0通道方式/通道数据
_____________ ACALL_ RD_AD_____________ ;第一次读取的转换结果可能不准确,丢弃。MOV____ R1,#00010000B_____________ ;1通道方式/通道数据ACALL_ RD_AD_____________ ;送1通道方式/通道数据并读第0通道转换结果MOV____ @R0,R2_____________ ;转换结果存放到数据缓冲区,下同INC___ R0_____________ MOV____ @R0,R3_____________ INC___ R0_____________ MOV____ R1,#00100000B_____________ ;2通道方式/通道数据ACALL_ RD_AD_____________ ;送2通道方式/通道数据并读第1通道转换结果MOV____ @R0,R2_____________ INC___ R0_____________ MOV____ @RO,R3_____________ INC___ R0_____________ …………_____________ ;其它通道操作方式类推RET_____________
单片机通过编程产生串行时钟,并按时序发送与接收数据位,完成通道方式/通道数据的写入和转换结果的读出,程序如下,供数据采集模块“DATA_SAM” 调用。____ CLK___ EQU_____ P3.3_____________ ____ DIN___ EQU_____ P3.4_____________ ____ DOUT__ EQU_____ P3.5_____________ CS_____ EQU____ P3.7_____________ ____ RD_AD: _____________ ____ CLR___ CLK _____________ ;清I/O时钟 SETB__ CS _____________ ;设置片选为高 CLR___ CS _____________ ;设置片选为低 MOV____ R4,#08 _____________ ;先读高8位 MOV___ A, R1_____________ ;把方式/通道控制字放到ALOP1:_____________ MOV___ C,DOUT _____________ ;读转换结果 RLC___ A_____________ ;A寄存器左移,移入结果数据位,移出方式/通道控制位 MOV____ DIN,C_____________ ;输出方式/通道位 SETB__ CLK_____________ ;设置I/O时钟为高 CLR___ CLK_____________ ;清I/O时钟 DJNZ__ R4,LOP1_____________ ;R4不为0,则返回LOP1 MOV____ R2,A_____________ ;转换结果的高8位放到R2中 MOV____ A,#00H_____________ ;复位A寄存器 MOV____ R4,#04_____________ ;再读低4位LOP2:_____________ MOV____ C,DOUT_____________ ;读转换结果 RLC___ A_____________ ;A寄存器左移,移入结果数据位 SETB__ CLK_____________ ;设置I/O时钟为高 CLR___ CLK_____________ ;清I/O时钟 DJNZ__ R4,LOP2_____________ ;R4不为0,则返回LOP2
_____________ MOV____ R3,A_____________ ;转换结果的低4位放到R3中SETB__ CS_____________ ;设置片选为高RET_____________
串行数据传输模块包括串行口初始化子程序和数据传输子程序,各子程序分别如下。其中数据传输采用查询方式,也可以方便地改为中断方式。
INIT_COM:_____________ MOV__ SCON,#50H_____________ ;串口方式1工作,8位数据位,1位停止位,无奇偶校验MOV__ PCON,#80H _____________ ;SMOD=1,波特率增倍MOV__ TMOD,#20H_____________ ;波特率设置,fOSC=12MHz,波特率=2* 2400,N=0F3HMOV__ TH1,#0F3H _____________ MOV__ TL1,#0F3H_____________ SETB_ TR1 _____________ ;启动定时器T1RET_____________