- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机程序抗干扰软件措施
单片机程序抗干扰软件措施
摘要:程序跑飞是单片机系统因干扰引起程序失控的一种现象。对程序跑飞现象进行剖析,就程序跑飞对单片机系统的影响进行了分类讨论,指出借助数字电路的存储、判断以及高速运算等功能,发挥软件优势,可及时发现和抑制干扰。
关键词:单片机程序跑飞软件抗干扰
单片机作为微型计算机的一种,是软件和硬件紧密结合的有机整体,硬件是系统运行的基础,软件是系统运行的“灵魂”。程序作为系统软件最重要的组成部分,其合理编排和正常执行是确保系统正常运行的关键。由于来自空间电磁辐射、过程通道及供电系统等干扰,单片机系统在运行过程中时常出现程序跑飞的现象,轻者程序失控、操作错误、死循环,重则造成系统瘫痪,甚至引发故障或安全事故,属于单片机可靠性设计中重点防范和纠错的对象。本文对程序跑飞给系统造成的影响进行分析,提出应对程序跑飞的几项措施。
1何谓程序跑飞
程序跑飞是微机系统因干扰引发程序计数器PC出错,使程序离开正常运行轨道、盲目运行,导致系统失控的一种现象。PC在计算机中用于存放即将执行的指令地址,并有内容自动加1的功能。一般指令是按顺序执行的,故PC可以用于控制程序的执行顺序;只有在遇到转移指令时PC的内容才被指定的地址值所取代,改变程序的执行顺序,从而实现程序的转移。计算机程序的执行靠程序计数器PC的引导进行。干扰情况下,PC之值不能按程序要求正常变化,导致CPU准备执行的下一条指令的首地址错误。CPU会把操作数当作指令代码,从而执行一系列毫无意义的指令,产生预料以外的误动作,如:导致后面的双字节、三字节指令继续被拆散,并将这个错误一直传递下去,形成一系列错误;使PC值超出应用程序区,将非程序区中的随机数作为指令码运行。不管怎样,都造成程序盲目运行,最后由偶然巧合进入死循环或导致系统瘫痪。此即所谓程序跑飞。
2应对程序跑飞的措施
程序跑飞反映出微机系统的不可靠性,为此单片机系统在设计之初,必须从软件、硬件及结构设计等方面进行可靠性设计,全面考虑抗干扰问题。可靠性设计是一项系统工程,硬件系统的可靠性设计主要从加强供电系统、过程通道、印制板电路等方面的抗干扰入手,尽可能减少干扰源,减小干扰对系统的影响;软件系统的可靠性设计主要借助数字电路有存储、判断以及高速运算等功能,及时发现、控制干扰,起到抑制外来干扰的作用,尤其在程序跑飞时,迅速拦截失控程序流,及时捕获跑飞程序,并将其引向正常入口。以MCS-51单片机系统为例,讨论通过软件途径应对程序跑飞的措施。
2.1利用指令冗余拦截失控的程序流
程序的误跳或跑飞,主要是多字节指令被冲散,CPU不能正确地识别操作代码和操作数。由于MCS-51系统中所有指令都不超过1个字节,而且有很多单字节指令,当程序跳飞到某一条单字节指令上时,便会自动执行真正的指令,从而拦截住失控的程序流。为使失控的程序迅速走入正轨,可在关键位置插入两三条NOP指令,保证其后的双字节和三字节指令不被拆散,即指令冗余技术。也可在某些对系统工作状态至关重要的指令前插入两条NOP指令,以保证被正确执行。
2.2设置软件陷阱捕捉跳入非程序区的程序
当程序误跳入非程序区时,可用软件陷阱加以解决。在非程序区可每间隔一段地址,设置拦截失控程序的指令,将捕获的程序引向出错处理程序或将系统重新复位,使程序转入正轨。为加强捕捉效果,常在无条件跳转指令LJMP前插入两条空操作NOP指令。可用以下1组指令组成软件陷阱:
NOP
NOP
LJMPMAIN
软件陷阱可安排在未使用的中断向量区、未使用的大片ROM空间、表格、程序段之间;如子程序之间或一段处理程序完成后=及一页的末尾处。
2.3借助看门狗摆脱死循环
当跳飞的程序落到非程序的数据表格区,或跳飞的程序在没有碰到冗余指令之前,已经自动形成一个死循环,指令冗余和软件陷阱均无法使失控程序摆脱死循环,这时可采用看门狗技术解决。看门狗技术就是不断监视程序循环运行的时间,若发现时间超过正常的循环时间,则认为系统陷入了死循环。这时强迫系统执行一段出错处理程序,使系统脱离死循环,转入正轨运行。
2.4编写专门的数据保护程序以恢复重要数据
编写专门的数据保护子程序是纠正跑飞程序的有效途径,在编写程序的过程中,对于由指令改变结果性质的数据,可以考虑在每次改变后都尽可能地保护起来,以便在需要时恢复正确值。
对于大多数微处理机而言,在运行错误而强制“复位”之后,I/O端口和特殊寄存器SFR中的内容都将变成芯片出厂时的设定值,这很可能会引起整个系统的运行混乱。因此计算机在重新启动后,应当首先执行数据恢复程序,把控制端口等重要寄存器被保护的内容恢复还原。
2.5设立标志协
文档评论(0)