问答题
阅读以下说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】 王工在采用某16位嵌入式CPU进行AiD采集硬件电路设计时,利用8255控制器C口中的PC0输出控制信号,利用PC7读入AD574的状态信号,利用A口和B口读入AD574转换好的12位数据。图2-1为该A/D采集硬件系统设计的部分连接示意图。

其中,AD574各个管脚功能定义如表2-1所述。

AD574的控制功能状态表如表2-2所示。

8255控制器各个管脚及地址控制描述如表2-3所示。
问答题
在该嵌入式系统设计中,AD574是工作在12位转换模式还是8位转换模式?
【正确答案】正确答案:12位
【答案解析】解析:在该嵌入式系统设计中,AD574是工作在12位转换模式还是8位转换模式依赖于AD574周边的管脚电路设计。从题目中已经给出的器件功能描述并结合原理图进行推断。 从题目给出的器件描述中可以看出,根据AD574的A0管脚确定12位/8位模式,从原理图可以看出,A0接地,即低电平。结合AD574的功能描述,可以知道该系统设计中AD574工作在12位模式。
问答题
图2.1中245为双向缓冲器,在该硬件设计中配置8255控制字时,CPU需要向245进行数据输出(245的A口传输给B口);在获取AID采集数据时CPU需要接收245所传输过来的数据(245的B口传输给A口)。根据硬件设计,描述DR分别为高、低电平时,245双向缓冲器在A、B口之间进行数据传输的方向。
【正确答案】正确答案:DR=高电平时,A口传向B口 DR=低电平时,B口传向A口
【答案解析】解析:图2-1中245为双向缓冲器,在该硬件设计中配置8255控制字时,CPU需要向245进行数据输出(245的A口传输给B口);在获取AD采集数据时CPU需要接收245所传输过来的数据(245的B口传输给A口)。 根据硬件设计图可以看出,当DR为高电平时,RD信号是无效的,也就是读信号无效,即此时为写信号有效。在写信号有效情况下,数据传输方向是从处理器向8255方向进行数据传输,即从A口传输给B口。反之,如果RD为低电平时,此时RD信号有效,也就是读信号有效,既需要从外部将数据读入到CPU处理器中,即从8255进行数据读取,放到处理器中,所以方向应该是从B口传输到A口。
问答题
在该A/D变换中,如果用I/2 LSB(最低有效位)来表示量化误差,当该AID控制器的量程范围为5V时,其量化误差是多大?
【正确答案】正确答案:5V÷4096÷2=0.61mv
【答案解析】解析:在该A/D变换中,如果用1/2 LSB(最低有效位)来表示量化误差,当该A/D控制器的量程范围为5v时,其量化误差是多大? 由于工作在12位,其范围为4096个刻度。另外考虑到采用1/2LSB作为量化误差,所以误差大小即为:5v/(4096*2)=0.61mv。
问答题
王工根据上述硬件设计,编写对应的数据采集程序,首先需要对8255进行初始化,然后进行数据采集,请根据注释要求补全如下X86汇编程序。 初始化8255程序如下: INIT8255: MOV DPTR, (1) ;进行8255的工作模式配置 MOV A, 10011010B MOVX @DPRT, A MOV A,0000000IB MOVX@DPRT, A 数据采集程序如下: ORG 0200H ACQU NOP MOV DPTR, (2) ;通过8255的C口进行AD574的 MOV A, (3) ;转换控制 MOVX QDPRT, 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) ;读取8255 B口的AD转换数据 MUVX A, @DPTR ANL A, (8) ;提取A寄存器中有效的低4位数据 MOV R3, A ;4位有效数据存放在R3寄存器中 RET
【正确答案】正确答案:(1)#C003H (2)#C002H (3)#00H (4)#01H (5)#80H (6)#C000H (7)#C001H (8)#0FH
【答案解析】解析:运行数据采集程序时,首先需要对8255进行初始化,然后进行数据采集。 在该程序中,需要先进行8255的工作模式配置,由原理图和8255的工作模式可知,在该配置情况下,必须使得8255的A1 A0=11,即工作在寻址控制器模式下,同时保证8255的片选有效,即必须使得A15=A14=1,A13=A12=A11=…=A2=0才可以,所以此时需要给DPTR寄存器的地址为#C003H。 在进行数据采集过程中,需要先通过8255的C口进行AD574的转换控制,要对C口操作即需要A1A0=10,再考虑到片选的有效性,需要给DPTR的地址是#C002H。 在进行一次数据转换时需要在PC0产生一个上升沿,所以要给C口输出配置为#00H和#01H。 当从C口取出状态字后,需要借助C口的最高位STS进行转换完毕的状态判断,因此取出数据存在A寄存器后,需要和#80H进行与操作来判断最高位的完成状态。 当判断有有效数据时候,需要分别从8255的A口和B口进行数据的获取,因此需要分别配置A口和B口的地址,依次为#C000H和#C001H。 在进行12位数据合并时,只需要通过与操作取出低4位数据,和#0FH进行与操作即可。