CPU受到干擾后,往往將一些操作數當作指令碼來執行,造成程序執行混亂.在A51的做法主要有以下幾種: 1.中斷向量區 ORG 0000H START: LJMP MAIN LJMP INT0 NOP NOP LJMP ERR ;陷阱 LJMP TOINT NOP NOP LJMP ERR ;陷阱 - - - - ORG 0040H ERR: ----------- 2.在表格區 在表格區的最后安排5個字節的陷阱 TABEL1: DB ------------ DB ------------ NOP NOP LJMP ERR 3.在未使用的ROM空間 未使用的ROM空間一般全是 0FFH,對于51來說是"MOV R7,A"的單字節指令,程序一旦彈飛到這個區域,將會飛流直下.一般在一些固定的地址加入軟件陷阱,捕獲彈飛的程序. ORG 6000H NOP NOP LJMP ERR ORG 7FFBH NOP NOP LJMP ERR 4.在子程序后面 XXXX: ;;;;;;;;;; ;;;;;;;;;; RET NOP NOP LJMP ERR 以及在一些長跳轉的斷裂點... 注: ERR子程序,應當重新設定堆棧,等一些初始化的參數,但對于RAM區的部分數據可以判斷保留. |