1、2016 年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)试题真题试卷及答案解析(总分:32.00,做题时间:90 分钟)一、试题一(总题数:1,分数:6.00)阅读以下说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。【说明】 某综合化智能空气净化器设计以微处理器为核心,包含各种传感器和控制器,具有检测环境空气参数(包含温湿度、可燃气体、细颗粒物等),空气净化、加湿、除湿、加热和杀菌等功能,并能通过移动客户端对其进行远程控制。 图 1-1 为该系统电气部分连接图,除微处理器外,还包括了片上 32KB FLASH,以及 SRAM 和 EEPROM。(分数:6.00)(1)
2、.该系统的 SRAM 的地址线宽度为 11,数据线宽度为 8,其容量为多少字节?(分数:2.00)_(2).该系统分别设计了 iOS 和 Android 两种不同操作系统下的客户端程序,二者在开发上都使用 MVC(模型(M)一视图(V)一控制器(C)设计模式。在典型的程序设计中,用户可以直接和视图进行交互,通过对事件的操作,可以触发视图的各种事件,再通过控制器,以达到更新模型或数据的目的。请完善图 1-2 所示的流程模型。(分数:2.00)_(3).该系统采用数字式激光传感器检测 PM25、PM10,并通过异步串行接口将数据上报给处理器,通信波特率为 9600bps,上报周期为 15 秒,数据
3、帧内容包括:报文头、指令号、数据(6 字节)、校验和及报文尾,具体字段描述如表 1-1 所示。 (分数:2.00)_二、试题二(总题数:1,分数:8.00)阅读以下说明,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。【说明】 王工在采用某 16 位嵌入式 CPU 进行 AiD 采集硬件电路设计时,利用 8255 控制器 C 口中的 PC0 输出控制信号,利用 PC7 读入AD574 的状态信号,利用 A 口和 B 口读入 AD574 转换好的 12 位数据。图 2-1 为该 AD 采集硬件系统设计的部分连接示意图。 其中,AD574 各个管脚功能定义如表 2-1 所述。 AD574 的
4、控制功能状态表如表 2-2 所示。 8255 控制器各个管脚及地址控制描述如表 2-3 所示。 (分数:8.00)(1).在该嵌入式系统设计中,AD574 是工作在 12 位转换模式还是 8 位转换模式?(分数:2.00)_(2).图 21 中 245 为双向缓冲器,在该硬件设计中配置 8255 控制字时,CPU 需要向 245 进行数据输出(245 的 A 口传输给 B 口);在获取 AID 采集数据时 CPU 需要接收 245 所传输过来的数据(245 的 B 口传输给A 口)。根据硬件设计,描述 DR 分别为高、低电平时,245 双向缓冲器在 A、B 口之间进行数据传输的方向。(分数:2
5、.00)_(3).在该 AD 变换中,如果用 I2 LSB(最低有效位)来表示量化误差,当该 AID 控制器的量程范围为 5V时,其量化误差是多大?(分数:2.00)_(4).王工根据上述硬件设计,编写对应的数据采集程序,首先需要对 8255 进行初始化,然后进行数据采集,请根据注释要求补全如下 X86 汇编程序。 初始化 8255 程序如下: INIT8255: MOV DPTR, (1) ;进行 8255 的工作模式配置 MOV A, 10011010B MOVX DPRT, A MOV A,0000000IB MOVXDPRT, A 数据采集程序如下: ORG 0200H ACQU NO
6、P 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 寄存器中
7、有效的低 4 位数据 MOV R3, A ;4 位有效数据存放在R3 寄存器中 RET(分数:2.00)_三、试题三(总题数:1,分数:6.00)阅读以下说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 【说明】 某嵌入式控制软件中,通过采集传感器数值来计算输出控制率,同时为提高数据采集的可靠性,对采集数值使用三余度采集方法进行三个通道的数据采集。 1三余度数据采集及处理要求: (1)如果某通道采集值在-30,30v正常范围内,且与任一相邻通道间差值不大于 05v,则该通道数据满足要求; (2)如果某通道采集值超过-30,30v 正常范围,或者此通道采集值与其他两个通道的差值均大于
8、 05v,则该通道数据不满足要求; (3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据平均值; (4)如果三通道值均满足要求,且相邻两数值的差值相等,则取三个采集值的中间值; (5)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据平均值; (6)如果大于一个通道数据不满足采集要求,取安全值0v。 2对计算输出控制率的具体处理算法如下: (1)如果依据采集数据计算的控制率 C 1 与目前实际控制率 C 0 差值不大于 001,则使用本周期计算控制率 C 1 进行输出控制,否则使用目前实际控制率 C 0 输出控制,连续超过范围计数加 1,不上报传感器故障; (2)如果连续
9、3 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值大于 001,则上报传感器三级故障,连续超过范围计数清零,使用目前实际控制率C 0 输出控制;如果已经连续 3 个周期控制率差值超过范围,并已上报三级故障,但第 4 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值不大于 001,则清除三级故障上报,并使用 C 1 进行输出控制; (3)如果累计大于等于 10 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值大于 001,则上报传感器二级故障,使用目前实际控制率 C 0 输出控制; (4)如果累计大于等于 100 个周期计算的控制率 C 1 与目前实际控制率 C
10、0 差值大于 001,则上报传感器一级故障,清除二级故障,并切断输出控制(输出安全值 0); (5)如果低级故障和高级故障同时发生,则按高级故障上报和处理。(分数:6.00)(1).为了测试采集算法,在不考虑测量误差的情况下,根据所设计测试用例的输入填写表 3-1 中的(1)(6)空,预期输出结果精度为小数点后保留两位数字。 (分数:2.00)_(2).白盒测试方法和黑盒测试方法是目前嵌入式软件测试常用的方法,请简述白盒测试方法与黑盒测试方法的概念。同时依据本题说明,指明问题 1 中设计的测试用例使用了白盒测试方法还是黑盒测试方法。(分数:2.00)_(3).为了测试控制率计算算法,在不考虑测
11、量误差的情况下,请完善所设计的测试用例,填写表 3-2 中的空(1)(6)。 (分数:2.00)_四、试题四(总题数:1,分数:6.00)阅读下列说明,回答问题 1 至问题 3,将答案填入答题纸的对应栏内。【说明】 某公司承接了一个数据处理模块的项目,由沈工负责模块的方案设计,沈工的设计方案如图 4-1 所示。该数据处理模块以PowerPC 处理器为核心,设计了存储器、以太网、温度传感器、调试接口等功能电路。 处理器外接 FLASH存储器用于存储上电初始化程序和应用程序。处理器通过 12C 接口连接测温电路,监控模块的工作温度。以太网、串口、调试离散量等用于软件调试和状态显示。 测温电路选用
12、ADT7461AR 芯片,用于测试模块温度。ADT7461AR 是一个双通道数字温度计,工作电压 3v 至 5v,具有低超温报警功能,采用 IzC 接口实现主机对远程本地温度数据的采集,采集数据存储在高低两个数据寄存器中,每个寄存器为 16 位,高寄存器表示整数值,低寄存器表示小数值。 存储模块采用某公司的 FLASH 存储芯片。支持编程、擦除、复位等操作命令。该 FLASH 芯片的常用命令序列如表 4-1 所示。表中的地址和数据皆为 16 进制数。(分数:6.00)(1).ADT7461AR 芯片支持两种测温模式,其中第一种模式为二进制模式,用 0 表示 0 度,测温范围为0+127;第二种
13、模式为偏移二进制模式,用 64 表示 0 度,测温范围为一 55+150,温度数据转换关系如表 4-2 所示。 请在(1)(4)处写出对应温度的二进制数。 (分数:2.00)_(2).沈工用 C 语言实现对 FLASH 的操作,需按照表 4-1 中定义的命令序列顺序执行即可。仔细阅读下列代码,请在(1)(4)处将对应的 C 语言代码补全。*定义宏 FLASH_BASE_ADDRESS 为 FLASH 芯片的基地址*: #define FLASH_BASE_ADDRESS XXXXXXXX(此处代码略) *定义向 FLASH 空间写一个命令的宏* #de fine FLASH_WRITE_BYT
14、E(addr,data)XXXXXXXX(此处代码略) *Reset Flash* Void ResetFlash(VOid) FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS,0xF0); return; *对 FLASH 的擦除是按扇区进行的,SectorErase 函数每次可擦除一个扇区。假设某扇区的偏移地址为 offset_addr,下面SectorErase 函数体为擦除该扇区的命令序列* void SectorErase(int offset_addr) FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x555,0xAA); FLAS
15、H_WRITE_BYTE(FLASH_BASE_ADDRESS+(1),0x55); FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x555,(2); FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x555,0xAA); FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+0x2AA,0x55); FLASH_WRITE_BYTE(FLASH_BASE_ADDRESS+(3),(4); return; (分数:2.00)_(3).该嵌入式系统对处理的性能要求较高,沈工在完成软件设计后,需要对每一个函数的执行性能进行测试
16、,检测其是否满足系统设计的要求。沈工通过 PowerPC 处理器内部的高精度时钟寄存器(TimeBase)进行计时,该寄存器由高低两个 32 位的寄存器组成,根据总线频率自动递增,当低 32 位寄存器递增到0xFFFFFFFF 时,向高 32 位寄存器进位。计数值可以换算成时间值,精确到微秒级。 在功能函数functionlO 的执行体前后,进行时间统计,最后计算出该函数的执行时间值,请在(1)(2)处将对应的C 语言代码补全。 S truct timeBase uns igned int upper; unsigned int lower; ;Void function1(Void) str
17、uct timeBase tb0,tb1,tb2; long Value; *获取 TimeBase 寄存器中的计数值* TimeBaseGet(tb0upper,tb0lower); /* 函数执行体 */ *再次获取 TimeBase寄存器中的计数值* TimeBaseGet(tb1upper,tbllower); tb2upper=tb1uppertb0upper; *当低 32 位计数值未反转,则直接进行计算,否则需借用高位进行计算* if ( tb1lower = tb0lower ) tb2lower=(1); else tb2upper 一=1; tb2lower=(2); *根
18、据总线频率,将时钟节拍转换为时间值* value=CountToUs (tb2); printf(”s cost timedusn”,_function_,Value); (分数:2.00)_五、试题五(总题数:1,分数:6.00)阅读以下说明和 C 程序代码,回答问题 1 至问题 3,将答案填入答题纸的对应栏内。 【说明】 【程序1】是关于条件编译的一段程序示例; 【程序 2】是一段 switch 语句应用示例。C 语言要求 switch 之后圆括弧内的“表达式” 类型必须是整型或字符型。该程序代码中 a 与 x 的对应关系如表 5-1 所示。 (分数:6.00)(1).(1)什么是 C 语
19、言的条件编译? (2)请解释#ifndef 的作用。 (3)分析【C 程序代码 1】,写出该段执行后的输出结果。(分数:2.00)_(2).完成【C 程序代码 2】中的(1)(3)空,将答案写到答题纸相应的位置。(分数:2.00)_(3).完成【C 程序代码 3】中的(4)(6)空,将答案写到答题纸相应的位置。(分数:2.00)_2016 年下半年软件水平考试(中级)嵌入式系统设计师下午(应用技术)试题真题试卷答案解析(总分:32.00,做题时间:90 分钟)一、试题一(总题数:1,分数:6.00)阅读以下说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。【说明】 某综合化智能空气净
20、化器设计以微处理器为核心,包含各种传感器和控制器,具有检测环境空气参数(包含温湿度、可燃气体、细颗粒物等),空气净化、加湿、除湿、加热和杀菌等功能,并能通过移动客户端对其进行远程控制。 图 1-1 为该系统电气部分连接图,除微处理器外,还包括了片上 32KB FLASH,以及 SRAM 和 EEPROM。(分数:6.00)(1).该系统的 SRAM 的地址线宽度为 11,数据线宽度为 8,其容量为多少字节?(分数:2.00)_正确答案:(正确答案:2 11 8=2048B=2KB)解析:解析:该微处理器系统拥有一块 11 条地址线、8 条数据线的 SRAM,要求计算其容量。此题考查嵌入式系统微
21、处理器体系结构的基本概念。题目说明有 8 根数据线,表示访问数据一次可以访问 8 个bit(一个字节),即一个单元放一个字节。有 11 根地址线,表示编址为 02 11 一 1。 因此存储的容量大小为:8*2 11 bit=2048B=2KB。(2).该系统分别设计了 iOS 和 Android 两种不同操作系统下的客户端程序,二者在开发上都使用 MVC(模型(M)一视图(V)一控制器(C)设计模式。在典型的程序设计中,用户可以直接和视图进行交互,通过对事件的操作,可以触发视图的各种事件,再通过控制器,以达到更新模型或数据的目的。请完善图 1-2 所示的流程模型。(分数:2.00)_正确答案:
22、(正确答案:(1)控制器 (2)视图 (3)模型)解析:解析:此题考查嵌入式系统软件设计的基本概念和流程。客户端软件开发使用框架形式,采用模型(M)一视图(V)一控制器(C)设计模式。MVC 模式使应用程序的输入、处理和输出分开。使用 MVC 应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。 视图是用户看到并与之交互的界面。对老式的 Web 应用程序来说,视图就是由 HTML 元素组成的界面,在新式的 Web 应用程序中,HTML 依旧在视图中扮演着重要的角色,但一些新的技术己层出不穷,它们包括 Adobe Flash 和XHTML,XMLXSL,WM
23、L 等一些标识语言和 Web services。如何处理应用程序的界面变得越来越有挑战性。MVC 的好处是它能为你的应用程序处理很多不同的视图。 模型表示企业数据和业务规则。在 MVC 的三个部件中,模型拥有最多的处理任务。例如它可能用像 EJBs 和 ColdFusion Components 这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击 Web 页面中的超链接和发送 HTML 表单
24、时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。 完整的流程模型如下图所述:(3).该系统采用数字式激光传感器检测 PM25、PM10,并通过异步串行接口将数据上报给处理器,通信波特率为 9600bps,上报周期为 15 秒,数据帧内容包括:报文头、指令号、数据(6 字节)、校验和及报文尾,具体字段描述如表 1-1 所示。 (分数:2.00)_正确答案:(正确答案:(1)0xAA (2)0xC0 (3)mPkti+2 (4)mPkt8 (5)(uintl6_t)mPkt2|(uintl6_t)(mPkt38)
25、或其等价形式)解析:解析:此题考查嵌入式系统底层代码的阅读与理解及编写的能力,结合题目给出的代码分析如下: 首先定义数据类型,为了在不同平台之间更方便的移植,嵌入式系统代码编写时经常对数据类型进行重新定义。题目代码中明确说明了此类定义后,考生在答题时应尽量使用定义后的数据类型声明。 #define uintl 6_t unsigned short #define uint8_t unsigned char void ProcessSerialData() uint8_t mData=0; uint8_t i=0; uint8_t mPkt10=0), uint8_t mCheck=0; 表示串
26、口已经准备好了数据,Serialavailable 判断串口接收缓冲器的状态函数相关说明已在题目中给出。 */ while(Serialavailable()0) mData=Serialread(); 通过 Serialread 读取串口函数接口读一个字节串口数据,存到 mData 变量中。 delay(2); 延迟 2ms,确保数据包已被接收。 if(mData=0xAA)判断是否为数据帧头,帧头标志 0xAA 已在题目中给出。 mPkt0=mData; 如果为帧头,说明一帧数据开始,此时将帧头存到接收缓冲区内 mData=Serialread(); *使用Serialread 接口继续读
27、取一个字节帧数据,存到 mData 变量中,完整的代码此时也应用延时 1 一 2ms的操作* if(mData=0xc0)继续判断是否为指令号 0xC0,即数据帧中第二个字节内容 mPkt1=mData; 将指令号 0xC0 存到接收缓冲区内 mCheck=0; 校验和变量 mCheck 清零 for(i=0;i6;i+) data recv and crc calc 使用 Serialread 接口循环接收 6 个字节的数据,依次存入接收缓冲区中 mPkti+2=Serialread(); delay(2); 每次调用 Serialread 接口读数据后,延迟 2ms 的时间 mCheck+
28、=mPkti+2;计算校验和,存到变量 mCheck 中 mPkt8=Seriallread(); 使用 Seriallread 接口读取校验和数据,存到接收缓冲区中 delay(1); mPkt9=Seriallread(); 使用 Seriallread 接口读取帧尾数据 if(mCheck=mPkt8) 判断校验和是否相符 Seriallflush(); *校验和相符,表示已完成一帧数据接收,调用Seriallflush 接口清除串口 数据* Pm25=(uintl6 一 t)mPkt2|(uintl6 一 t)(mPkt38); *计算 PM25 的数值,题目给出数据 1 表示 PM2
29、5 的低字节,数据 2 表示 PM25 的高字节,因此将字节序为 3 的数据 mPkt3左移 8 位于字节序为 2 的数据 mPkt2进行或操作得出,注意使用强制类型转换,位操作的方式计算量相对小,计算速度快,因此在计算资源紧张的嵌入式环境中大量使用* Pm10=(uint16 一 t)mPkt4|(uint16 一 t)(mPkt58); get one good packet return; 通过上述分析,容易得出各问题答案如下: (1)判断是否为数据帧的帧头,查题干数据可知帧头标识为0xAA; (2)判断是否为数据帧的指令号,查题干数据可知指令号为 0xC0: (3)进行 CRC 计算,
30、根据代码上下文可知为为第 27 字节数据 mPkti+2; (4)进行 CRC 校验,查题干数据可知 CRC 校验位为 mPkt8;(5)考查位操作,根据题干数据可知为数据 2 左移 8 位加上数据 l(uintl6_t)mVkt2| (uintl6_t)(mPkt38)或者(uintl6_t)(mPkt38)|mPkt2); (6)考查位操作,根据题干数据可知为数据4 左移 8 位加上数据 3(uintl6_t)mPkt4| (uintl6_t)(InPl(t58)或者(uintl6_t)(mPkt58)|mPkt4)。二、试题二(总题数:1,分数:8.00)阅读以下说明,回答问题 1 至问
31、题 4,将解答填入答题纸的对应栏内。【说明】 王工在采用某 16 位嵌入式 CPU 进行 AiD 采集硬件电路设计时,利用 8255 控制器 C 口中的 PC0 输出控制信号,利用 PC7 读入AD574 的状态信号,利用 A 口和 B 口读入 AD574 转换好的 12 位数据。图 2-1 为该 AD 采集硬件系统设计的部分连接示意图。 其中,AD574 各个管脚功能定义如表 2-1 所述。 AD574 的控制功能状态表如表 2-2 所示。 8255 控制器各个管脚及地址控制描述如表 2-3 所示。 (分数:8.00)(1).在该嵌入式系统设计中,AD574 是工作在 12 位转换模式还是
32、8 位转换模式?(分数:2.00)_正确答案:(正确答案:12 位)解析:解析:在该嵌入式系统设计中,AD574 是工作在 12 位转换模式还是 8 位转换模式依赖于 AD574 周边的管脚电路设计。从题目中已经给出的器件功能描述并结合原理图进行推断。 从题目给出的器件描述中可以看出,根据 AD574 的 A0 管脚确定 12 位8 位模式,从原理图可以看出,A0 接地,即低电平。结合AD574 的功能描述,可以知道该系统设计中 AD574 工作在 12 位模式。(2).图 21 中 245 为双向缓冲器,在该硬件设计中配置 8255 控制字时,CPU 需要向 245 进行数据输出(245 的
33、 A 口传输给 B 口);在获取 AID 采集数据时 CPU 需要接收 245 所传输过来的数据(245 的 B 口传输给A 口)。根据硬件设计,描述 DR 分别为高、低电平时,245 双向缓冲器在 A、B 口之间进行数据传输的方向。(分数:2.00)_正确答案:(正确答案:DR=高电平时,A 口传向 B 口 DR=低电平时,B 口传向 A 口)解析:解析:图 2-1 中 245 为双向缓冲器,在该硬件设计中配置 8255 控制字时,CPU 需要向 245 进行数据输出(245 的 A 口传输给 B 口);在获取 AD 采集数据时 CPU 需要接收 245 所传输过来的数据(245 的 B 口
34、传输给 A 口)。 根据硬件设计图可以看出,当 DR 为高电平时,RD 信号是无效的,也就是读信号无效,即此时为写信号有效。在写信号有效情况下,数据传输方向是从处理器向 8255 方向进行数据传输,即从 A口传输给 B 口。反之,如果 RD 为低电平时,此时 RD 信号有效,也就是读信号有效,既需要从外部将数据读入到 CPU 处理器中,即从 8255 进行数据读取,放到处理器中,所以方向应该是从 B 口传输到 A 口。(3).在该 AD 变换中,如果用 I2 LSB(最低有效位)来表示量化误差,当该 AID 控制器的量程范围为 5V时,其量化误差是多大?(分数:2.00)_正确答案:(正确答案
35、:5V40962=061mv)解析:解析:在该 AD 变换中,如果用 12 LSB(最低有效位)来表示量化误差,当该 AD 控制器的量程范围为 5v 时,其量化误差是多大? 由于工作在 12 位,其范围为 4096 个刻度。另外考虑到采用12LSB 作为量化误差,所以误差大小即为:5v(4096*2)=061mv。(4).王工根据上述硬件设计,编写对应的数据采集程序,首先需要对 8255 进行初始化,然后进行数据采集,请根据注释要求补全如下 X86 汇编程序。 初始化 8255 程序如下: INIT8255: MOV DPTR, (1) ;进行 8255 的工作模式配置 MOV A, 1001
36、1010B MOVX DPRT, A MOV A,0000000IB MOVXDPRT, 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 寄
37、存器中 MOV DPTR, (7) ;读取 8255 B 口的 AD 转换数据 MUVX A, DPTR ANL A, (8) ;提取 A 寄存器中有效的低 4 位数据 MOV R3, A ;4 位有效数据存放在R3 寄存器中 RET(分数:2.00)_正确答案:(正确答案:(1)#C003H (2)#C002H (3)#00H (4)#01H (5)#80H (6)#C000H (7)#C001H (8)#0FH)解析:解析:运行数据采集程序时,首先需要对 8255 进行初始化,然后进行数据采集。 在该程序中,需要先进行 8255 的工作模式配置,由原理图和 8255 的工作模式可知,在该配
38、置情况下,必须使得 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 进行转换完毕的
39、状态判断,因此取出数据存在 A 寄存器后,需要和#80H 进行与操作来判断最高位的完成状态。 当判断有有效数据时候,需要分别从 8255 的 A 口和 B 口进行数据的获取,因此需要分别配置 A 口和 B 口的地址,依次为#C000H 和#C001H。 在进行 12 位数据合并时,只需要通过与操作取出低 4 位数据,和#0FH 进行与操作即可。三、试题三(总题数:1,分数:6.00)阅读以下说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 【说明】 某嵌入式控制软件中,通过采集传感器数值来计算输出控制率,同时为提高数据采集的可靠性,对采集数值使用三余度采集方法进行三个通道的数据采集
40、。 1三余度数据采集及处理要求: (1)如果某通道采集值在-30,30v正常范围内,且与任一相邻通道间差值不大于 05v,则该通道数据满足要求; (2)如果某通道采集值超过-30,30v 正常范围,或者此通道采集值与其他两个通道的差值均大于 05v,则该通道数据不满足要求; (3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据平均值; (4)如果三通道值均满足要求,且相邻两数值的差值相等,则取三个采集值的中间值; (5)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据平均值; (6)如果大于一个通道数据不满足采集要求,取安全值0v。 2对计算输出控制率的具体处理算法如下:
41、 (1)如果依据采集数据计算的控制率 C 1 与目前实际控制率 C 0 差值不大于 001,则使用本周期计算控制率 C 1 进行输出控制,否则使用目前实际控制率 C 0 输出控制,连续超过范围计数加 1,不上报传感器故障; (2)如果连续 3 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值大于 001,则上报传感器三级故障,连续超过范围计数清零,使用目前实际控制率C 0 输出控制;如果已经连续 3 个周期控制率差值超过范围,并已上报三级故障,但第 4 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值不大于 001,则清除三级故障上报,并使用 C 1 进行输出控制; (3)如果累计大于等于 10 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值大于 001,则上报传感器二级故障,使用目前实际控制率 C 0 输出控制; (4)如果累计大于等于 100 个周期计算的控制率 C 1 与目前实际控制率 C 0 差值大于 001,则上报传感器一级故障,清除二级故障,并切断输出控制(输出安全值 0); (5)如果低级故障和高级故障同时发生,则按高级故障上报和处理。(分数:6.00)(1).为了测试采集算法,在不考虑测量误差的情况下,根据所设计测试用例的输入填写表 3-1 中的(1)(6)空,预期输出结果精度为小数点后保留两位数字。 (分数:2.00)_