欢迎来到专业的宏发范文网平台! 心得体会 党建材料 工作总结 工作计划 思想汇报 事迹材料 发言讲话 述职报告
当前位置:首页 > 范文大全 > 公文范文 > 正文

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

时间:2022-03-14 15:25:43 浏览量:

(呼和浩特市委党校,内蒙古 呼和浩特 010010)
摘 要:文章主要从实际应用的角度阐述单片机系统软件 抗干扰的具体实现方法。
关键词:单片机;软件;抗干扰;指令集
中图分类号:TP273  文献标识码:A  文章编号:1007—6921(2009)07—0167—02

随着单片机在各个领域应用愈来愈广泛,单片机应用系统的可靠性越来越成为人们关注的一 个重要课题。单片机应用系统的可靠性是由多种因素决定的,其中系统的抗干扰能力是系统 可靠性的重要指标。由于51系列单片机的指令系统是复杂指令集结构,致使其抗干扰性能不 高,尤其用在工业控制的场合,如果不增加额外的抗干扰措施,甚至无法正常工作。要提高 单片机系统的抗干扰性能无非是从硬件和软件两个方面加以考虑。硬件系统是单片机系统稳 定工作的根本,经常采用的方法有:改善系统的布局、布线;采用光电耦合器以提高强电与 弱电的隔离度;在电源变压器的初级增加滤波器;增加“硬件看门狗”等等。硬件抗干扰设 计的缺点是增加了系统的复杂性,提高了硬件成本,而软件抗干扰设计在不增加系统复杂性 ,不提高硬件成本的前提下,同样可以在很大程度上提高系统的稳定性。

51系列单片机的指令包括单字节、双字节和三字节指令,双字节和三字节指令包含操作码和 操作数两部分。当单片机受到严重干扰时,程序计数器PC因干扰而改变,程序便脱离正常轨 道“乱飞”,如果“飞”到单字节指令或双字节、三字节指令的操作码上,此时程序将沿错 误的轨道执行而出错,称这种“跑飞”为“第一类跑飞”。当“飞”到某双字节或三字 节指令的操作数上,误将操作数当作操作码而执行,程序将出现严重错误,称这种“跑 飞”为“第二类跑飞”。无论是前一种情况还是后一种情况,“跑飞”的程序执行结果将是 无法预料的。“第一类跑飞”在执行一段错误程序之后还有可能回到正常轨道,但是 “第 二类跑飞”不可能再回到正常轨道了,往往是以进入“死循环”而告终,本文主要从实际应 用的角度阐述单片机系统软件抗干扰的具体实现方法。
1 单片机软件抗干扰设计的主要方法

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

CPU取指令过程是先取操作码,再取操作数。在程序的关键地方人为的插入一些单字节指令, 或将有效单字节指令重写称为指令冗余,通常是在双字节指令和三字节指令后插入两个字节 以上的NOP指令。这样即使跑飞程序飞到双字节指令和三字节指令操作数上,由于空操作指 令NOP的存在,避免了后面的指令被错误地执行,为程序纳入正轨做好准备。此外,对系统 流向起重要作用的指令,如RET、RETI、LCALL、LJMP、JC等,可以在这些指令之前插入两条 NOP指令,可将跑飞程序纳入正轨,以确保这些重要指令的执行。

指令冗余只能使CPU不再将操作数当作操作码错误地执行,却不能主动地将程序的错误执行 方向扭转过来,要想纠正程序的错误执行方向,就需要下面的技术。
1.2 软件“看门狗”技术

跑飞的程序在执行一些错误操作之后,经常会进入“死循环”,也就是常说的“死机”。通 常采用“看门狗”技术使程序脱离“死循环”,“看门狗”技术可由硬件实现,也可由软件 实现。硬件“看门狗”技术这里不再赘述,软件“看门狗”技术的原理是通过不断检测程序 循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”, 需要进行出错处理。

在实际应用中,通常用定时中断服务程序定时地检查主程序的运行情况。例如,在RAM区选择 一个字节作为软件看门狗寄存器,主程序每循环一次将该寄存器加1,定时器T0的中断服务 程序每中断一次将该寄存器减1并检查一次,如果程序执行正常,看门狗寄存器不会改变或 改变不大,如果看门狗寄存器发生了改变或改变很大,则说明系统陷入“死循环”,需要进 行出错处理。

在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断,造成看门狗失效,这时 可以采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监 视定时器T0。采用这种环形结构的软

件“看门狗”具有良好的抗干扰性能,大大提高了系统 可靠性。对于需经常使用T1定时器进行串口通信的测控系统,则定时器T1不能进行中断,可 改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。当然, 对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。

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

通常在程序存储器中未使用的EPROM空间填入空操作指令NOP(00H),最后再填入一条跳转指 令,跳转到跑飞处理程序,或者直接填入指令LJMP 0000H (020000),当跑飞程序落到此区 ,即可在执行一段空操作后转入正轨。如果未使用的EPROM空间比较大,可以均匀地填入几 条跳转指令,这种几条空操作指令加一个跳转指令的结构称之为“软件陷阱”。
软件陷阱的一般结构为:
NOP;
NOP;
LJMP FLY:FLY为跑飞处理程序。

如果程序正常执行,软件陷阱部分是永远也执行不到的,只有在程序跑飞到陷阱里,软件陷 阱会立刻将程序跳转到正常轨道。即使程序没有跑飞到陷阱里,也可以在程序执行一段错误 操作后遇到一个软件陷阱,从而转入正轨。

除了程序存储器的空白区,程序的数据表结尾也应该设置软件陷阱,如果数据表比较大,应 该在数据表的中间也设置软件陷阱,以保证程序跑飞到数据区能及时转入正轨。另外,如果 程序存储器的空间足够的话,可以在每两个子程序中间设置一个软件陷阱。当使用的中断因 干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用 系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:
NOP;
NOP;
RETI。
返回指令可用“RETI”,也可用“LJMP FLY”,用“LJMP FLY”作返回指令可直接进入故障 诊断程序,尽早地处理故障并恢复程序的运行。软件陷阱的数量要根据实际受到干扰的情况 和程序存储器的容量来确定,如果太少不能进行有效的跑飞拦截,如果太多又会占用大量的 程序存储器空间。
1.4 设置程序运行标志,拦截“跑飞”程序

单片机程序的结构一般都是由一个上电复位初始化程序、一个主程序、几个中断服务程序和 若干子程序组成的,51系列单片机的RAM区中有一个位寻址区,可以在位寻址区中设立 一些标志位,这些标志位分别代表不同的程序模块,一个字节可以对应8个程序模块。当某 个程序模块正在执行时,对应的标志位置1,不执行时对应的标志位置0,就可以知道当前正 在执行的程序是哪一个模块,当标志位的值与正在执行的程序模块不一致时,可以肯定 程序出现了“跑飞”,需要尽快进行错误处理,通过进一步的检查还可以知道程序是从哪个 模块“飞”过来的。

举一个简单的例子来说明拦截“跑飞”程序的应用,在调用每一个子程序的开始将自己的标 志位置1,在子程序的结尾进行检查,如果自己的标志位是1,说明程序执行正常,否则程序 就出现了“跑飞”,当然在退出该子程序之前,需要将其对应标志位清零。另外我们还可以 检查的复杂一些,每个程序模块在检查时,其父程序的标志位为1,其子程序的标志位一定 为零,如果违背了这一原则,则程序出现了“跑飞”。

如果程序模块比较多,位寻址区不够使用,我们可以给不同的模块分配不同的代码,在RAM 区选择一个特殊字节作为运行标志,当某个程序模块正在执行时,将该特殊字节赋值为该模 块的代码,这样一个RAM字节就可以对应256个程序模块。需要注意的是,在调用子程序时必 须先将运行标志压入堆栈,因为此时父程序也在执行。然后将运行标志设置成子程序的代码 ,在该子程序退出之前检查运行标志,并将父程序的代码从堆栈里弹出,赋值给运行标志。 由以上的内容可以看出,当程序的结构化比较好时,这种拦截跑飞的技术可以比较容易实施 。
2 经常用到的其他提高单片机系统抗干扰性能的方法
2.1 检查RAM区标志数据,及时发现严重干扰

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

当单片机系统受到严重干扰时,输出端口的状态也可能因干扰而改变,在程序的执行过程中 适时地根据相关程序模块的运算结果刷新输出端口,可以排除干扰对输出端口状态的影响, 使错误的输出状态及时得到纠正。可以在指定的RAM单元中保存相关程序模块的运算结果, 以及输出端口当时应处的状态,在程序运行过程中根据这些RAM单元的内容去刷新输出I/O口 。
2.3 输入多次采样,避免严重干扰

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

软件运行过程中受到的干扰是不确定的,软件抗干扰属于微机系统的自身防御行为,以上所 提到的软件抗干扰的方法,都不是单独使用的,只有根据实际情况将这些方法有效地结合起 来,并与硬件抗干扰措施一起使用,才能达到最佳抗干扰效果,使我们的单片机系统稳定可 靠地工作。
[参考文献]
[1] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996.
[2] 戴梅萼.微型计算机及其应用[M].北京:清华大学出版社,1991.

推荐访问:抗干扰 初探 单片机 系统 软件

猜你喜欢