24位模数转换器AD7713及其应用
、图5所示,其中图4为读操作程序流程图,图5为写操作程序流程图,下面是按照各自流程图给出的8031单片机的相应操作码。
(1)读程序清单:
MOV SCON,#11H ;设置8031为串口方式0
MOV IE,#10H ;中断初始化
SETB 90H;SETB 91H ;使RFS=TFS=1
SETB 93H ;使A0=1
MOV R1,#03H ;设置循环计数器次数
MOV R0,#30H ;置数据缓冲区首地址
MOV R6,#04H ;用P1.2读DRDY状态
WAIT:MOV A,PI ;读P1口
ANL A,R6 ;判P1.2状态
JZ READ ;若P1.2为0则继续
SJMP WAIT ;若P1.2为1则等待
READ:CLR 90H ;使RFS=0
CLR 98H ;清除串口接收中断标志
POLL:JB 98H,READ1 ;判RI=1否
SJMP POLL ;RI=0继续等待
READ1:MOV A,SBUF ;RI=1则读数
RLC A ;数据位重排列
MOV B.0,C;
RLC A;MOV B.1,C;RLC A;MOV B.2,C;
RLC A;MOV B.3,C;RLC A;MOV B4,C;
RLC A;MOV B.5;RLC A;MOV B.6,C;
RLC A;MOV B.7,C;
MOV A,B:MOV @R0,A;数据暂存
INC R0;DEC R1 ;修正地址
MOV A,R1;JZ END ;R1=0则退出
JMP WAIT ;继续下一字节
END:SETB 90H ;使RFS=1
SJMP END;
写程序清单:
MOV SCON,#00H ;设置8031为串口方式0
MOV IE,#10H ;中断初始化
MOV IP,#10H ;串口中断优先级高
SETB 90H;SETB 91H ;使RFS=TFS=1
SETB 93H ;使A0=1
MOV R1,#03H ;设置循环计数器次数
MOV R0,#30H ;置数据缓冲区首地址
MOV A,#00H ;清累加器
MOV SBUF,A ;初始化串口
WAIT:NOP;
JMP WAIT ;等待串口中断
SINT:MOV A,R1;
JZ FIN ;若R1为0则退出
DEC R1 ;计数器R1减1
MOV A,@R0 ;读数据到A
INC R0 ; 地址加1
RLC A ;数据位重排列
MOV B.0,C ;高位在前
RLC A;MOV B.1,C;RLC A;MOV B.2,C;
RLC A;MOV B.3,C;RLC A;MOV B.4,C;
RLC A;MOV B.5,C;RLC A;MOV B.6,C;
RLC A;MOV B.7,C;
MOV A,B;
CLR 93H;CLR 91H ;使A0,TFS为低
MOV SBUF,A ;写串口数据
RETI ;中断退出
FIN;SETB 91H ;使TFS为高
SETB 93H ;使A0为高
RETI ;中断退出
5 注意事项
(1)模拟电源AVDD不得低于数字电源DVDD,至少DVDD不能超过AVDD幅度0.3V;
(2)AD7713的电源必须比系统的数字电源优先加载,否则可能出现自锁;
(3)给AD7713的控制寄存器写入控制字时,字长必须是24位,否则不能可靠加载;
(4)对AD7713进行读/写操作时,应注意串行数据流的顺序。
更多资讯请关注:21ic模拟频道
- 12位串行A/D转换器MAX187的应用(10-06)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- 利用GM6801实现智能快速充电器设计(11-20)
- 稳定低噪声放大器中晶体管工作点的设计方法(下)(11-20)
- 如何使低功耗放大器在便携式产品中提高性能(10-03)
- 12位串行A/D转换器的原理及应用开发(10-09)