单片机原理及接口技术艾学忠12节.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PPT研究院 POWERPOINT ACADEMY * * 在执行输出功能时,应该将有关输出芯片的状态也一并重复设置。 例如8155芯片和8255芯片常用来扩展输入输出功能,很多外设通过它们来获得单片机的控制信息。这类芯片均应进行初始化编程,已明确各端口的功能。由于干扰的作用,有可能在无意中将芯片的编程方式改变。 为了确保输出功能正确实现,输出功能模块在执行具体的数据输出之前,应该先执行对芯片的初始化编程指令,再输出有关数据。 12.6.4 指令冗余及软件陷阱 单片机系统由于干扰而使运行程序发生混乱、导致程序乱飞或陷入死循环时,采取使程序纳入正规的措施,如指令冗余、软件陷阱等。 一、指令冗余 CPU取指令是先取操作码,再取操作码数。当单片机系统受干扰出现错误时,程序便脱离正常轨道“乱飞”。 当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序有可能出错。 若乱飞到三字节指令,出错机率更大。在关键的地方人为地插入一些单字节指令或将有效单字节指令重写称为指令冗余。 指令冗余无疑会降低系统的效率,通常是在双字节指令和三字节指令后插入两个字节以上“NOP”指令,可保护其后的指令不被拆散。因此,常在一些对程序流向起决定作用的指令之前插入两条NOP指令,此类指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等,以保证乱飞的程序迅速纳入正轨。在某些对系统工作状态至关重要的指令 指令冗余措施可以减少程序乱飞的次数,使其很快纳入程序轨道,但这并不能保证在失控期间不干坏事,更不能保证程序纳入正常轨道后就太平无事了。程序的运行事实上已经偏离了正常顺序,有可能做着它现在不该做的事情。解决这个问题还必须采用软件容错技术(限于篇幅,本书不作介绍),使系统的误动作减少,并消灭重大误动作。 二、软件陷阱 就是一条引导指令,强行将乱飞的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理 的程序。如果我们把这段程序的入口标号称为ERR的话,软件陷阱即为一条LJMP ERR指令。为加强其捕捉效果,一般还在它前面加两条NOP指令。 NOP NOP LJMP ERR 软件陷阱一般安排在下列4种地方: (1)未使用的中断向量区:0003H-002FH 当干扰使未使用的中断开放,并激活这些中断时,就 会进一步引起混乱。如果在这些地方布上陷阱,就能及时捕捉到错误中断。 例如:系统共使用三个中断:INT0* 、T0、T1,它们的中断子程序分别为PGINT0、PGT0、PGT1,建议按如下方式来设置中断向量区: ORG 0000H 0000 START: LJMP MAIN ;跳向主程序入口 0003 LJMP PGINT0 ;外中断0中断入口 0006 NOP ;冗余和陷阱 0007 NOP 0008 LJMP ERR 000B LJMP PGT0 ;T0中断正常入口 0016 NOP ;冗余和陷阱 0017 NOP 0018 LJMP ERR 001B LJMP PGT1 ;T1中断正常入口 001E NOP ;冗余和陷阱 001F NOP 0020 LJMP ERR 0023 LJMP ERR ;串口中断未用 0026 NOP ;设陷阱冗余和陷阱 0027 NOP 0028 LJMP ERR ┇ 0030 MAIN: ┇ ;主程序 ┇ 从0030H开始再编写正式程序 (2)未使用的EPROM空间 对于剩余EPROM空间,一般均维持原状态(FFH)。FFH是一条单字指令(MOV R7,A)程序弹飞到这一区域后将顺流而下,只要每隔一段设置一个陷阱,就一定能捕捉到乱飞的程序。 软件陷阱一定要指向处理过程ERR。可以将ERR安排在0030H开始的地方,这样就可用00 00 02 00 30五个字节作为陷阱来填充EPROM中的未使用空间,或每隔一段设置一个陷阱(02 00 30),其它单元保持FFH不变。 (3)表格 有两类表格,一类是数据表格,供MOVC A,@A+PC或

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档