【说明】
王工在采用某16位嵌入式CPU进行A/D采集硬件电路设计时,利用8255控制器C口中的PCO输出控制信号,利用PC7读入AD574的状态信号,利用A口和B口读入AD574转换好的12位数据。图2-1为该A/D采集硬件系统设计的部分连接示意图。
其中,AD574各个管脚功能定义如表24所述。
AD574的控制功能状态表如表2-2所示。
8255控制器各个管脚及地址控制描述如表2-3所示。
【问题1】
在该嵌入式系统设计中,AD574是工作在12位转换模式还是8位转换模式?
【问题2】
图2-1中245为双向缓冲器,在该硬件设计中配置8255控制字时,CPU需要向245进行数据输出(245的A口传输给B口);在获取AD采集数据时CPU需要接收245所传输过来的数据(245的B口传输给A口)。根据硬件设计,描述DR分别为高、低电平时,245双向缓冲器在A、B口之间进行数据传输的方向。
【问题3】
在该A/D变换中,如果用1/2LSB(最低有效位)来表示量化误差,当该A/D控制器的量程范围为5V时,其量化误差是多大?
【问题4】
王工根据上述硬件设计,编写对应的数据采集程序,首先需要对8255进行初始化,然后进行数据采集,请根据注释要求补全如下X86汇编程序。
初始化8255程序如下:
INIT8255: MOV DPTR, (1) ; 进行8255的工作模式配置
MOV A, 10011010B
MOVX @DPRT, A
MOV A, 0000001B
MOVX @DPRT, A
数据采集程序如下:
ORG 0200H
ACQU NOP
MOV DPTR, (2):通过8255的C口进行AD574的
MOV A,(3);转换控制
MOVX DPRT,A
MOV A, (4)
MOVX @DPRT,A
WAIT: MOVX A,@DPTR
ANL A,(5):通过与操作判断AD转换是否完毕
JNZ WAIT
MOV DPTR,(6):读取8255 A口的AD转换数据
MOVX A,@DPTR
MOV R2,A;有效数据存放在R2寄存器中
MOV DPTR, (7):读取8255B口的AD转换数据:
MOVX A,@DPTR
ANL A,(8);提取A寄存器中有效的低4位数据
MOV R3, A; 4位有效数据存放在R3寄存器中
RET