当前位置:首页 > 计算机控制技术试卷及答案(1)
由于AD7543的12位数据是由高字节至低字节串行输入的,而8031单片机串行口工作于方式0时,其数据是由低字节至高字节串行输出的。因此,在数据输出之前必须重新装配,并改变发送顺序,以适应AD7543的时序要求。如表3所列,其中数据缓冲区DBH为高字节存储单元,DBL为数据低8位存储单元。
改变数据发送顺序的程序如下:
OUTDA:MOV A,DBH ;取高位 SWAP ;高4位和低4位交换 MOV DBH,A
MOV A,DBL ;取低位
ANL A,#OFOH ;截取高4位 SWAP ;高4位和低4位交换
ORL A,DBH ;合成,(DBH)=D11 D10 D9 D8 D7 D6 D5 D4 LCALL ASMBB ;顺序转换
MOV DBH,A ;存结果(DBH)=D4 D5 D6 D7 D8 D9 D10 D11 MOV A,DBL ;取低位
ANL A,#OFH ;截取低4位
SWAP ;交换,(A)=D3 D2 D1 D0 0 0 0 0 LCALL ASMBB ;顺序转换
MOV DBL,A ;存结果(A)=0 0 0 0 D0 D1 D2 D3 MOV A, DBH
MOV SBUF,A ;发送高8位 JNB TI $ ;等待发送完成
CLR TI ;发送完毕,清标志 MOV A,DBL
MOV SBUF,A ;发送低4位 JNB TI $ ;等待 CLR TI ;发送完毕
CLR P1.0 ;A寄存器加载到B寄存器 NOP
SETB P1.0 ;恢复 REF ……
ASMBB: MOV R6,#00H MOV R7,#08H CLR C
ALO: RLC A XCH A,R6 RRC A XCH A,R6 DJNZ R7,AL0 XCH A,R6 RET
这种方式的单片机串行通讯口与AD7543的接口电路,其波特率固定为CPU时钟频率的1/12,如果CPU的频率为6MHz,那么波特率为50kbps,位周期为20μs,显然,这种连接方法只能用于高速系统。
2、 AD7543与单片机普通输入输出口线的连接:
AD7543可以用8031的P1口实现数据传送。这种方法的波特率可调,传输速度由程序控制。电路与图2相同,仅把8031的数据输出端由RXD引脚改为P1.1,将移位脉冲输出端由TXD改为P1.2口线,P1.0仍为加载脉冲输出。其程序如下:
FS: MOV R7,#04H
MOV A,DBH;数据高4位 SWAP
LOOP1: RLC A MOV P1.0 ;输出
LCALL PULSE ;移位脉冲输出 DJNZ R7,LOOP1 ;4位未完继续 MOV R7,#08H
MOV A,DBLH ;数据低8位LOOP2: RLC A MOV P1.0 C ;输出
LCALL PULSE ;移位脉冲输出 DJNZ R7,LOOP2 ;8位未完继续 CLR P1.1 ;输出加载脉冲 NOP
SETB P1.1
RET ;传送完毕
PULSE: SETB P1.1 ;输出高电平 MOV R3,#4
PULS1: DJNZ R3,PULS1 CLR P1.1;输出低电平 MOV R3,#4
PULS2:DJNZ R3,PULS2 RET
其中FS为AD7543驱动程序,子程序PULSE为移位脉冲形成程序,改变R3的数值可以改变移位脉冲的频率。从而改变串行通讯波特率。
共分享92篇相关文档