在单片机应用系统中,软件的可靠性是最重要的指标之一。它要求:1. 运行参数环境发生变化时(如温度漂移等),软件都能可靠运行并给出正确结果,即软件具有自适应性;2. 工业环境极其恶劣,干扰严重,软件必须保证在严重干扰条件下也能可靠运行。
软件抗干扰是当系统受干扰后使系统恢复正常运行,或输入信号受干扰后去伪求真的一种辅助方法。软件抗干扰是被动措施,硬件抗干扰是主动措施。由于软件设计灵活性、节省硬件资源,所以软件抗干扰技术越来越受到人们的重视。
一、指令冗余法
单片机操作时序完全由程序计数器PC控制,一旦PC因干扰出现错误,程序便脱离正常轨道,出现“乱飞”、改变操作数数值以及将操作数误认为操作码等。为了使“乱飞”程序迅速纳入正轨,应该多用单字节指令,并在关键地方插入一些空操作指令NOP或将有效单字节指令重写,这就叫做指令冗余。
1. NOP指令的使用。 在双字节指令或三字节指令之后插入两条NOP指令,可保证其后的指令不被拆散。在对程序流向起决定作用的指令(如RET、ACALL、LJMP、JZ、JNZ、JC、JNC、DJNZ等)和对系统状态起决定作用的指令(如SETB、EA等)之前插入两条NOP指令,使“乱飞”程序迅速纳入正轨。
2. 重要指令冗余。 在对程序流向起决定作用的指令(如RET、ACALL、LCALL、LJMP、JZ、JNZ、JC、JNC等)和某些对系统状态起决定作用的指令(如SETB、EA等)的后面可重复写这些指令,以确保这些指令的正确执行。采用冗余法使PC纳入正轨的条件是:跑飞的PC必须指向程序运行区,并且必须执行到冗余指令。