已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章 应用程序设计技术 81 系统应用程序设计应包含哪些内容? 为什么说可靠性设计和运行管理设计也是系统应用程序设计的重要组成部分?答: 单片机应用系统中,应用程序设计内容主要有功能性设计、可靠性设计和运行管理设计。 (1)功能性设计 功能性设计是应用程序设计的主干内容,是满足应用系统运行功能的程序设计内容。它包括运行结构设计和任务模块设计。 (2)可靠性设计 可靠性设计是应用程序设计中十分重要的一环,是系统安全可靠运行的保证。应用程序中的可靠性设计与系统的可靠性等级有关。可靠性等级越高,可靠性设计投入就越大。 (3)运行管理设计 运行管理设计是指应用程序中用于某些非系统功能要求的特殊操作。目前主要是低功耗的运行管理,随着MCU技术的发展,会出现许多新的运行管理要求,诸如ISP的相关管理、固化软件的管理等。82 单片机应用系统中有哪几种常见的系统程序结构?答: 单片机应用系统的多种应用状态、应用模式,相应会有多种多样的系统程序结构。这些程序结构大致有:以键盘管理为中心的键操作结构,无外部操作的自主运行程序结构和基于RTOS任务管理的嵌入式结构。83 什么是实时多任务操作系统(RTOS)? 在 RTOS中如何保证任务运行的实时性?答: (1)实时多任务操作系统(RTOS) RTOS是植人单片机应用系统中的一个背景程序,用户的应用程序是运行在RTOS中的一些任务模块。RTOS根据各个任务的要求,进行资源管理、消息管理、任务调度、异常处理等工作。 (2)在RTOS中要保证任务运行的实时性 在RTOS支持的系统中,每个任务都有一个优先级,RTOS根据各个任务的优先级进行动态切换,以保证任务的实时性要求。84 什么是汇编语言程序设计中的编辑与汇编? 常用80C51的编辑软件是什么? 为什么要对源文件进行汇编? 源文件中的伪指令起什么作用?答: 应用程序设计时,在进入程序调试前,应完成源程序的编写和汇编,这就是调试前的编辑与汇编工作。 汇编语言源程序由许多汇编语句组成,它的文件扩展名为ASM。通常采用QE或PE编辑软件来编写汇编语言源程序。在80C51中,对源程序迸行汇编的软件工具为MASM一51。 伪指令为汇编控制命令,为源程序汇编操作提供所需要的数据信息,只在源程序中使用。如上述源程序GAMPLEASM中用于地址定位的ORG和汇编终止标记END等。815 子程序能否独立运行? 子程序怎样才能运行? 通常怎样调试一个子程序?答:(1)子程序的运行子程序是不能独立运行的。子程序只能在调用状态下运行。(2)子程序的调试由于子程序只能在调用状态下运行,因此,可在程序入口处设置一子程序调用指令,而子返回后设置一循环指令即可。如下所示,用伪指令ORG将程序定位在某一指令空间,例如1000H。ORG 1000HMOV R0,#FRQNM ;结果缓冲区首址入R0LCALL SMPNM ;调用SMPNM子程序SJMP $ ;子程序返回后原地循环SMPNM: MOV TMOD, # 55 H ;SMPNM子程序,详见SMPNM子程序;清单,其中省去了;MOVR0,#FRQNM指令CLR AMOV R0,TL0RET86 子程序调用和返回时,堆栈起什么作用? 如何利用堆栈特性实现中断程序中的散转操作?答: (1)子程序调用和返回时堆栈的作用通常,在调用子程序时,调用指令的下一条指令地址自动进栈(低位在先,高位在后);子程序返回时,地址自动弹出,形成子程序返回地址。一般子程序的调用过程如题图8-1(a)所示。题图8-1(2)利用堆栈特性实现中断程序中的散转操作子程序中压栈的程序转移原理:在子程序返回前将转移地址进行入栈操作,就可以实现子程序的任意转移操作。主程序调用某ABC子程序时,如调用指令的下一条标号为MADD的指令地址(MADDL) 入栈保护。执行完ABC子程序后,栈中地址弹出,程序返回到主程序MADD处。如果在执行子程序ABC中,将某个子程序的入口地址XYZ压入堆栈,如题图8-K(b)所示。当ABC子程序返回时,堆栈中弹出的地址是XYZ。这时ABC子程序不会返回主程序,而是转向XYZ子程序。只有执行完XYZ子程序,在子程序返回指令RET操作下,弹出MADDH、MADDL,程序才返回MADD处。多中断源的散转操作:利用上述的程序转移原理可以实现多中断源的散转操作。将散转的入口地址ADDiL、ADDiH依次压入堆栈,随后执行子程序返回指令,程序就会转移到入口地址。不同的中断源输入,转移到不同的入口处,实现了多中断源的散转。如题图8-2所示。题图8-2例如:请按书图 8-21设计一个中断散转程序。设K0K3为INT1的扩展中断源,中断源的中断服务程序为INK0INK3,相应的入口地址是ADD0H、ADD3H、ADD3L。 中断散转程序设计: 主程序MKEY4:HADD EQU 2FH ;散转入口地址高 8位存放单元ADDH EQU l0H ;散转入口地址高 8位ADD0L EQU 00H ;INK0散转入口地址低 8位ADDlL EQU 40H ;INKl散转入口地址低 8位ADD2L EQU 80H ;INK2散转入口地址低 8位ADD3L EQU 0C0H ;INK3散转入口地址低 8位 ORG 0050H ;INTl中断源扩展主程序入口地址给定MKEY4:MOV HADD, # ADDH ;INK0INK3散转入口地址高8位入;HADDSETB EA ;开CPU中断SETB EX1 ;开INTl中断SJMP $ ;等待中断INTl中断服务程序 ORG 0013H ;INTl中断入口地址 LJMP IKEY4 ORG 0060H ;INTl中断服务程序地址给定IKEY4: ORL P1, # 0FH ;置Pl.0一P1.3为输入方式 MOV A, P1 ;中断源查询,读入Pl口状态 JB ACC.0,KEY1 ;不是K0按下,查KlMOV A,#ADD0L ;是K0按下,ADD0L入A AJMP KEYJMP ;散转操作KEY1: JB ACC.1,KEY2 ;不是Kl按下,查区K2 MOV A,#ADDlL ;是Kl按下,ADDlL入A AJMP KEYJMP ;散转操作KEY2: JB ACC.2,KEY3 ;不是K2按下,查K3 MOV A,#ADD2L ;是K2按下,ADD2L入A AJMP KEYJMP ;散转操作KEYS: JB ACC.3,KEY0 ;不是K3按下,转入中断返回 MOV A,#ADD3L ;是K3按下,ADD3L入AKEYJMP: PUSH ACC ;中断散转ADDiL、ADDiH入堆栈 PUSH HADD RET;子程序返回,程序转至ADDiL、ADDiH处KEYNO: RETI中断散转与返回程序ORG ADDH、ADD0L ;INK0入口地址INK0: ;INK0中断服务程序RETIORG ADDH, ADDIL ;INKl入口地址INK1: ;INKl中断服务程序RETIORG ADDH.ADD2L ;INK2入口地址INK2: ;INK2中断服务程序RETIORG ADDH,ADD3L ;INK3入口地址INK3: ;INK3中断服务程序RETI87 请叙述中断程序设计的一般格式。在什么情况下,中断服务中要设资源保护指令 PUSH PSW? 通常该指令设在何处?答: (1)中断程序设计的一般格式 中断程序一般都包含有两个部分,即主程序中的中断初始化和实现中断操作任务的中断服务程序,如题图8-3所示。题图8-3 在主程序中任何地点都可设置中断初始化,但只有在中断初始化开中断之后,有中断源请求中断时才响应中断,将程序立即转移到该中断源的入口地址处,进入中断服务操作。 中断服务操作结束后,程序又返回到主程序的中断出口处,继续执行原来被中断的主程序。题图8-4 (2)中断服务中资源保护指令的设置 由于中断响应是对主程序的随机插入性操作,在主程序断点前后资源必须连续使用,若该资源会被中断服务程序占用时,必须将主程序中的该资源压入堆栈保护,待中断返回前退出堆栈。例如:如题图8-4所示,设计一个循环点亮L4L7的主程序,每次点亮的时间由data给定。在主程序起始处设置INT0、INTl中断初始化。在中断服务程序中分制点亮L0和 Ll片刻,其时间由常数data0、datal给定。主程序清单如下:data EQU H ;延时时间常数data0 EQU Hdatal EQU H ORG 0050HMLEDI: ORL Pl,#0F3H ;熄灭所有LED MOV IE,#85H ;开CPU及INT0、INTl中断DIS: CLR P1.4 ;点亮L4 MOV R7,#dtat LCALL DELAY SETB P14CLR Pl.5 ;点亮L5 MOV R7,#dtatLCALL DELAYSETB Pl.5CLR P1.6 ;点亮L6MOV R7,#dtalLCALL DELAYSETB P1.6CLR P1.7 ;点亮L7MOV R7,#dtatLCALL DELAYSETB P1.7AJMP DISDELAY: MOV R6,#0FFH ;延时子程序,延时常数预装在R7中DL1: MOV R5,#0FFHDL0: DJNZ R5,DL0DJNZ R6,DL1DJNZ R7, DELAYRETINT0中断服务程序:ORG 0003H ;INT0中断入口地址LJMP K0L0 ;INT0中断转移K0L0: PUSH PSW ;PSW保护进栈MOV PSW,#18H ;改变使用的寄存器组,保护主程序中的;寄存器CLR Pl.0 ;点亮L0,延时片刻后熄灭MOV R7,#data0LCALL DELAYSETB Pl.0POP PSW ;恢复主程序中的寄存器组RETIINTl中断服务程序:ORG 0013H ;INTl中断入口地址LJMP K1L1 ;INTl中断转移K1L1: PUSH PSW ;PSW保护进栈MOV PSW,#18H ;改变使用的寄存器组,保护主程序中的;寄存器CLR Pl.0 ;点0亮Ll,延时片刻后熄灭MOV R7,#datalLCALL DELAYSETB Pl.0POP PSW ;恢复主程序中的寄存器组RETI(3)资源保护指令(PUSH PSW)的位置通常资源保护指令(PUSH PSW)设在中断服务程序开始之处,在中断返回之前再从堆栈中弹出来。88 在子程序及中断服务程序中能否随意设置压栈指令PUSH? 子程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁合同安全附加协议
- 请求解除合同补充协议
- 设计行业版权合同范本
- 装修管理监督合同范本
- 阿里巴巴合同保密协议
- 租赁押车借款合同范本
- 留学事务委托合同范本
- 设备保养项目合同范本
- 装潢装饰合同股份协议
- 销售代理合同续签协议
- 安全生产台账的管理制度
- 2025年监理工程师继续教育机电安装考试试题及答案
- 医药代表新员工
- 医疗技术安全培训课件
- ICU获得性衰弱课件
- 消毒供应中心不良事件案例
- 公安系统舆情事件应急预案
- 初中美术人教版(2024) 七年级上册第二单元第2课《科技之光》课件
- (正式版)DB61∕T 1466-2021 《检验检测机构危险废弃物处置管理规范》
- 2025年LNG车载气瓶行业研究报告及未来行业发展趋势预测
- 临床成人住院患者跌倒风险评估及预防-团体标准
评论
0/150
提交评论