发表于
2007-12-14 12:00:39
1 程序运行失常的软件对策
系统受到干扰侵害致使PC值改变,造成程序运行失常。对于程序运行失常的软件对策主要是发现失常状态后及时引导系统恢复原始状态。
(1) 设监视跟踪定时器
使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个循环的时间,在主程序运行过程中执行一次定时器时间常数刷新操作。这样,只要程序正常运行,定时器不会出现定时中断。而当程序运行失常,不能及时刷新定时器时间常数而导致定时中断,利用定时中断服务程序将系统复位。在8031应用系统中作为软件抗干扰的一个事例,具体做法是:
· 使用8155的定时器所产生的“溢出”信号作为8031的外部中断源INT1。用555定时器作为8155中定时器的外部时钟输入;
· 8155定时器的定时值稍大于主程序的正常循环时间;
· 在主程序中,每循环一次,对8155定时器的定时常数进行刷新;
· 在主控程序开始处,对硬件复位还是定时中断产生的自动恢复进行分类判断处理。
(2) 设置软件陷井
当PC失控,造成程序“乱飞”而不断进入非程序区,只要在非程序区设置拦截措施,使程序进入陷井,然后强迫使程序进入初始状态。例如Z80指令系统中数据FFH正好对应为重新起动指令RST 56,该指令使程序自动转入0038H入口地址。因此,在Z80 CPU构成的应用系统中,只要将所有非程序区全部置成FFH用以拦截失控程序。并在0038H处设置转移指令,使程序转至抗干扰处理程序。
2 系统“死锁”的软件对策
在工业控制系统中,A/D、D/A,显示等输入/输出接口电路是必不可少的。这些接口与CPU之间采用查寻或中断方式工作,而这些设备或接口对干扰很敏感,干扰信号一旦破坏了某一接口的状态字后,就会导致CPU误认为该接口有输入/输出请求而停止现行工作,转去执行相应的输入/输出服务程序。但由于该接口本身并沒有输入/输出数据,从而使CPU资源被该服务程序长期占用,而不释放,其它任务程序无法执行,使整个系统出现“死锁”。对这种干扰造成的“死锁”问题,在软件编程中,可采用“时间片”的方法来解决。其具体步骤为:
· 根据不同的输入/输出外设对时间的要求,分配相应的最大正常的输入/输出的时间。
· 在每一输入/