由于表格中内容和检索值有一一对应关系,在表格中安排陷阱将会破坏其连续性和对应关系,应在表格区的尾部设置软件陷阱。
④程序区。
前面已介绍,跑飞的程序在用户程序内部跳转时可用指令冗余技术加以解决,也可以设置软件陷阱,更有效地抑制程序跑飞。程序设计常采用模块化设计,模块化的程序是由一序列执行指令构成的,一般不能在这些指令串中间任意安排陷阱,否则正常执行的程序也可能被抓走,可以将陷阱指令分散放置在各模块之间的空余单元中。正常程序中不执行这些陷阱指令,但当程序跑飞一旦进入陷阱区,马上将程序拉回正确轨道。陷阱的多少视用户程序的大小而定,一般每1K字节有几个陷阱就够了。
⑤非EPROM芯片空间
MCS-51有64K程序系统空间,一般除了EPROM芯片占用的地址外,还剩余大片未编程的EPROM空间。当PC跑飞进入这些空间时,读入数据为0FFH,对51系列而言,相当于指令MOV R7,A,将修改R7的内容。
当CPU读程序存储器时,会产生一个PSEN的低电平信号,可利用该信号和EPROM的地址译码信号产生选通信号,引起一个空闲的中断,在中断服务程序中设置软件陷阱,将跑飞程序拉入正规。图2是一个实例。
![](../img/eep/emb/emb-22861tynj441fpft.jpg)
3.3 看门狗技术
PC受到干扰引起程序失控,有可能使程序进入死循环,指令冗余和陷阱技术都不能解决这个问题,通常采用看门狗技术(Watchdog)。该技术就是不断监视程序循环运行的时间,若发现时间超过已知的循环设定时间,即认为进入死循环,然后强迫程序返回到0000H入口地址,在0000H安排出错处理程序,使系统纳入正规。看门狗技术既可由硬件实现,也可以由软件来实现,二者还可以结合使用。
在实际应用中,有各种专用芯片例如MAX813815等能够完成看门狗功能,这些芯片集成了电压监控电路、备用电池和切换电路以及Watchdog 电路,功能齐全,应用非常广泛。在实时测控系统中,为了根据系统的需要来设定定时时间,也可采用图3所示8254构成的看门狗电路,该电路使用 8254的一个计数器,工作在方式1,定时时间可以由程序设定。
![](../img/eep/emb/emb-22864bxa25tvya0r.jpg)
由图3可以看出,无论8254输出端OUT有正的上升沿还是系统上电复位的上升沿都将使系统复位,但两者的含义是不同的。方式1的特点是OUT端输出负脉冲的宽度为写入8254的计数初值,在8254计数期间,若GATE端有重触发信号,则重新装入计数初值计数,亦即输出保持为低电平。因此可设定8254 的计数初值,使其输出负脉冲的宽度稍大于程序正常运行的时间,然后在程序运行的适当位置上设置指令,使P1.0口向8254发来触发脉冲,这样当程序正常运行时,OUT端一直输出低电平,若程序跑飞后P1.0口不能正常送来触发信号,则计时时间到后,OUT端变为高电平,形成复位脉冲,使系统复位。由 D触发器7474构成的电路是用来区别是上电复位还是失控后的自动恢复复位的。
4. 结论
单片机实际应用系统抗干扰的根本在于硬件结构,软件抗干扰起到的是补充作用,在系统设计时只有二者兼顾,相互结合、互补才能达到较好的抗干扰效果。
参考文献
[1] 孙传友. 测控系统原理与设计[J]. 北京:北京航空航天大学出版社, 2004.4
[2] 艾玲梅. 单片机测控系统抗抗干扰技术[J]. 陕西工学院学报,2003.6