(2)未使用的大片 ROM空间。对于未使用的ROM单元,正常状态下为OFFH,程序弹飞到这一区域后,如果不受新的干扰,将顺序执行,不再跳转。只要每隔一段区域设置一个软件陷阱,其他单元保持为0FFH不变,就一定能捕捉到弹飞到这里的程序。
(3)程序区。程序区由一串串执行指令构成,当程序执行到LJMP,SJMP,AJMP,RET等无条件转移类指令时,PC的值应发生正常的跳变,此时程序不可能继续往下顺序执行。若在这些指令后设置软件陷阱,就可拦截弹飞到这里的程序,而又不影响正常执行的流程。
(4)数据表格区。为了不破坏表格的连续性,可在数据表格区的尾部设置软件陷阱。软件陷阱安排在正常程序执行不到的地方,不影响程序执行的效率,在E2PROM容量允许的条件下,多设置软件陷阱有利而无害。
.3 睡眠抗干扰
有些单片机具有睡眠状态,在该状态下只有定时/计数系统和中断系统处于工作状态,这时CPU对系统三总线上出现的干扰不会作出任何反应,从而大大降低系统对干扰的敏感程度。在应用系统中,CPU很多情况下是在执行一些等待指令和循环检查程序。由于这时CPU虽没有重要工作,却是清醒的,很容易受干扰。可以让CPU在非正常工作时休眠,必要时再由中断系统来唤醒他,工作完再进入休眠状态。采用这种安排,CPU可以有60%以上的时间处于睡眠状态,从而使CPU受到随机干扰的威胁大大降低,同时也降低了CPU的功耗。
4"看门狗"技术
当程序飞到一个临时构成的死循环中或PC指针落到程序存储器芯片地址之外,冗余指令和软件陷阱对此无能为力,这时系统将完全瘫痪。这种情况下,只有复位。MCS96和8XC552等系列单片机内部有一个WDT监视定时器,是一个16位的计数器,输人为系统时钟,WDT被启动后,开始对时钟计数,计满溢出时,可使RESET端出现适当的复位信号,使系统复位,在正常情况下,为了防止WDT溢出并复位整个系统,可在程序中周期地用指令清WDT,当程序受到干扰而没有正常地定期清WDT时,WDT的溢出就会使系统复位,从而恢复运行。
图1中RST是外部复位引脚,是WDT启动引脚,为"0"时,"看门狗"启动而工作,对分频后的脉冲计数,当计满溢出时,使单片机及外围电路复位,编程时,为防止监视定时器T3溢出,需要不断对T3写入。MCS51单片机内部没有WDT,可以由外电路来实现,图2是用CD4060构成的看门狗电路。
4060计数频率由RT,CT决定,也可外接石英晶体,设实际运行的用户程序所需工作周期为T0;分频器计满时间为T,当T>T0且系统工作正常时,程序每隔T0对4060清除一次,CD4060无计满输出信号,如系统工作不正常,程序不对4060清除。分频器计满输出一脉冲信号而使CPU复位。
5 结 语
抗干扰设计是单片机应用系统设计中不可缺少的重要内容。硬件抗干扰是主动的,而软件抗干扰是被动的。由于干扰环境多种多样,在设计时应分析具体情况,选用针对性的抗干扰措施。在工程实践中,通常几种抗干扰方法并用,互相补充完善,以确保应用系统能正常运行。