系統受到干擾侵害致使PC值改變,造成程序運行失常。對于程序運行失常的軟件對策主要是發現失常狀態后及時引導系統恢復原始狀態。
1.設置監視跟蹤定時器
使用定時中斷來監視程序運行狀態。定時器的定時時間稍大于主程序正常運行一個循環的時間,在主程序運行過程中執行一次定時器時間常數刷新操作。這樣,只要程序正常運行,定時器不會出現定時中斷。而當程序運行失常,不能及時刷新定時器時間常數而導致定時中斷,利用定時中斷服務程序將系統復位。在8031應用系統中作為軟件抗干擾的一個事例,具體做法是:使用8155的定時器所產生的“溢出”信號作為8031的外部中斷源INT1。用555定時器作為8155中定時器的外部時鐘輸入;8155定時器的定時值稍大于主程序的正常循環時間;在主程序中,每循環一次,對8155定時器的定時常數進行刷新;在主控程序開始處,對硬件復位還是定時中斷產生的自動恢復進行分類判斷處理。
2.設置軟件陷井
當PC失控,造成程序“亂飛”而不斷進入非程序區,只要在非程序區設置攔截措施,使程序進入陷井,然后強迫使程序進入初始狀態。例如Z80指令系統中數據FFH正好對應為重新起動指令RST 56,該指令使程序自動轉入0038H入口地址。因此,在Z80 CPU構成的應用系統中,只要將所有非程序區全部置成FFH用以攔截失控程序。并在0038H處設置轉移指令,使程序轉至抗干擾處理程序。