|
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区的部分数据可以判断保留. 至于是否能有所作用只有天知道了.(呵呵~ ~),不过我写的程序一般是最稳定的,也许是这玩意在起作用吧!
|
|