APP下载

51单片机应用系统软件抗干扰初探

2016-05-14王芳

青春岁月 2016年8期
关键词:抗干扰单片机软件

【摘要】在提高单片机硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好等特点,越来越受到设计者的重视,本文主要从实际应用的角度阐述单片机系统软件抗干扰的具体实现方法。

【关键词】单片机;软件;看门狗;抗干扰;指令集

随着单片机在各个领域应用愈来愈广泛,单片机应用系统的可靠性越来越成为人们关注的一个重要课题。由于51系列单片机的指令系统是复杂指令集结构,致使其抗干扰性能不高,尤其用在工业控制的场合,不增加额外的抗干扰措施,甚至无法正常工作。要提高单片机系统的抗干扰性能无非是从硬件和软件两个方面加以考虑。硬件系统是单片机系统稳定工作的根本,经常采用的方法有:改善系统的布局、布线;提高强电与弱电的隔离度;增加滤波器;增加“硬件看门狗”等等,成本高;而软件抗干扰在不增加系统复杂性,不提高成本,也可以提高系统的稳定性。51系列单片机的指令包括单字节、双字节和三字节指令,双字节和三字节指令包含操作码和操作数两部分。当单片机受到严重干扰时,程序计数器PC因干扰而改变,程序便脱离正常轨道“乱飞”,如果“飞”到单字节指令或双字节、三字节指令的操作码上,称这种“跑飞”为“第一类跑飞”。当“飞”到某双字节或三字节指令的操作数上,误将操作数当作操作码执行,出现严重错误,称这种“跑飞”为“第二类跑飞”。无论是前一种情况还是后一种情况,“跑飞”的程序执行结果将是无法预料的。

一、单片机软件抗干扰设计的主要方法

软件抗干扰设计的主要目的就是及时发现程序的“跑飞”,并及时地将程序拉入正常轨道,主要方法有:指令冗余、软件“看门狗”、软件“陷阱”、程序“跑飞”拦截等等。

1、指令冗余

CPU取指令过程是先取操作码,再取操作数。在程序的关键地方人为的插入一些单字节指令,或将有效单字节指令重写称为指令冗余,通常是在双字节指令和三字节指令后插入两个字节以上的NOP指令。此外,对系统流向起重要作用的指令,如RET、RETI、LCALL、LJMP、JC等,可以在这些指令之前插入两条NOP指令,可将跑飞程序纳入正轨,以确保这些重要指令的执行。指令冗余只能使CPU不再将操作数当作操作码错误地执行,却不能主动地将程序的错误执行方向扭转过来,要想纠正程序的错误执行方向,就需要下面的技术。

2、软件“看门狗”技术

跑飞的程序在执行一些错误操作之后,经常会进入“死循环”,也就是常说的“死机”。通常采用“看门狗”技术使程序脱离“死循环”,“看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断,造成看门狗失效,这时可以采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。

软件“看门狗”技术需要使用定时器,而在大多数的控制程序中,定时器都是紧俏的资源,这就使软件“看门狗”技术的实际应用受到了限制,可以采取一些技巧性的处理,将软件“看门狗”程序与其它定时程序复用同一个定时器,这样既完成定时功能又完成软件“看门狗”的功能。

3、软件“陷阱”

通常在程序存储器中未使用的EPROM空间填入空操作指令NOP(00H),最后再填入一条跳转指令,跳转到跑飞处理程序,或者直接填入指令LJMP 0000H (020000),当跑飞程序落到此区,即可在执行一段空操作后转入正轨。

软件陷阱的一般结构为:

NOP

NOP

LJMP FLY;FLY为跑飞处理程序。

如果程序正常执行,软件陷阱部分是永远也执行不到的,只有在程序跑飞到陷阱里,软件陷阱会立刻将程序跳转到正常轨道。

除了程序存储器的空白区,程序的数据表结尾也应该设置软件陷阱,如果数据表比较大,应该在数据表的中间也设置软件陷阱,以保证程序跑飞到数据区能及时转入正轨。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:

NOP

NOP

RETI

返回指令可用“RETI”,也可用“LJMP FLY”,用“LJMP FLY”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。软件陷阱的数量要根据实际受到干扰的情况和程序存贮器的容量来确定。

4、设置程序运行标志,拦截“跑飞”程序

单片机程序的结构一般都是由一个上电复位初始化程序、一个主程序、几个中断服务程序和若干子程序组成的,51系列单片机的RAM区中有一个位寻址区,可以在位寻址区中设立一些标志位,这些标志位分别代表不同的程序模块,一个字节可以对应8个程序模块。举一个简单的例子来说明拦截“跑飞”程序的应用,在调用每一个子程序的开始将自己的标志位置1,在子程序的结尾进行检查,如果自己的标志位是1,说明程序执行正常,否则程序就出现了“跑飞”,在退出该子程序之前,将其对应标志位清零。

如果程序模块比较多,位寻址区不够使用,可以给不同的模块分配不同的代码,在RAM区选择一个特殊字节作为运行标志,当某个程序模块正在执行时,将该特殊字节赋值为该模块的代码,这样一个RAM字节就可以对应256个程序模块。

二、经常用到的其它提高单片机系统抗干扰性能的方法

1、检查RAM区标志数据,及时发现严重干扰

这种方法是在RAM区中选择几个固定单元,在初始化程序中将其设置成固定的数据,如“55H”或“0AAH”等,只要程序正常运行,这些单元的内容是不会改变的。如果因为程序“跑飞”或其它干扰导致这些RAM单元中的任何单元的数据发生了变化,说明单片机系统已经受到了严重的干扰,不能可靠地运行下去了。适时地检查RAM单元的内容,发现有数据改变,立刻执行LJMP0000H语句,强制单片机复位。

2、刷新输出端口,排除严重干扰

当单片机系统受到严重干扰时,输出端口的状态也可能因干扰而改变,在程序的执行过程中适时地根据相关程序模块的运算结果刷新输出端口,可以排除干扰对输出端口状态的影响,使错误的输出状态及时得到纠正。

3、输入多次采样,避免严重干扰

强烈的干扰会影响单片机的输入信号,造成输入信号瞬间采样的误差或误读,要避免干扰的影响,通常采取重复采样、加权平均的方法。

4、结束语

软件运行过程中受到的干扰是不确定的,软件抗干扰属于微机系统的自身防御行为,以上所提到的软件抗干扰的方法,都不是单独使用的,只有根据实际情况将这些方法有效地结合起来,并与硬件抗干扰措施一起使用,才能达到最佳抗干扰效果,使单片机系统稳定可靠地工作。

【参考文献】

[1] 胡汉才. 单片机原理及其接口技术. 北京:清华大学出版社, 2005.

[2] 戴梅萼. 微型计算机及其应用. 北京:清华大学出版社, 2000.

【作者简介】

王芳(1981—),女,汉族,内蒙包头人,硕士学位,包头轻工职业技术学院讲师,主要研究方向:计算机科技。

猜你喜欢

抗干扰单片机软件
有趣的识花软件
舰载雷达面临的电子对抗威胁及防范措施分析
变频器控制回路抗干扰措施及调试故障处理
即时通讯软件WhatsApp
异步电动机节能控制方法及抗干扰技术
C8051F020与80C51单片机的异同点
丰富多彩的Android软件
如何在智能手机中安装软件
单片机I/O口模拟串行通讯的C51实现方法
单片机调试方法的探讨