R1置位,一次串行接收结束,单片机自动停止发送移位脉冲,该8位数据从串行口缓冲器读入内存,并使用软件清除RI 标志,单片机又开始发送移位脉冲,直到又收到8位数据,则另一次串行接收结束。这样,这次的8位数据与刚才接收的高8位数据组合成为16位数据,即一次 A/D转换的结果。这种接口方法直接利用了单片机本身的硬件资源,从而简化了电路的设计。
程序1 AD7706的初始化程序
BEGIN:
CLR A
MOV A ,#010H;设置串行工作方式0
MOV SCON ,A
CLR P1.0;选中芯片AD7706
MOV A ,#20H;对CMR进行写操作,下一操作选定CKR
MOV SBUF ,A
JNB TI
,﹩;接收完毕,TI复位
CLR TI
MOV A ,#0CH;设置CLK
MOV SBUF ,A
JNB TI ,
CLR TI
MOV A ,#010H;对CMR进行写操作,下一操作选定STR
MOV SBUF ,A
JNB TI ,﹩
CLR TI
MOV A ,#40H;设置STR
MOV SBUF ,A
JNB TI ,﹩
CLR TI
RET
程序2 输入字节程序(判断DRDY引脚):
INB1: CLR C
JB P1.1 ,INB1;判断DRDY引脚电平
CLR P1.0;DRDY为0,有效数据,进行读数据操作
MOV A ,#38H;对CMR进行写操作,下一操作选定DOR
MOV SBUF ,A
MOV A ,SBUF;从AD7706中读入转换数据
MOV R3 ,A;高8位存入R3中
JNB TI ,﹩
CLR TI
MOV A ,SBUF;从AD7706中读入转换数据
MOV R4 ,A;低8位存入R4中
JNB TI ,﹩
CLR TI
RET
程序3 输入字节程序(判断CMR的最高位):
INB2: CLR P1.0;对AD7706进行操作
MOV A ,#08H;对CMR进行写操作,下一操作选定CMR
MOV SBUF,A
MOV SBUF ,A;读AD7706的CMR
ANL A ,#10000000B ;判断DRDY位,若为0,则有有效数据
JNZ INB2;等待
MOV A ,#38H;对CMR进行写操作,下一操作选定DOR
MOV SBUF ,A