| 
 
| 1、软件陷阱是什么? 
 软件陷阱是一种用于捕获并处理单片机程序“跑飞”现象的技术,当程序执行过程中因干扰而偏离正常轨道时,软件陷阱可及时发现并将程序拉回正常执行路径。
 
 2、软件陷阱如何构建?
 ①未使用ERROM空间的填充
 在程序存储器中未使用的EPROM空间,首先填入窄操作指令NOP(无操作指令)。
 在NOP指令后,填入一条跳转指令LJMP,跳转到预设的跑飞处理程序(如FLY)。
 若未使用空间较大,可均匀分布NOP指令和LJMP指令,形成“软件陷阱”。
 ②数据表及子程序间的陷阱设置
 在数据表的结尾处设置软件陷阱,确保程序跑飞到数据区时能及时转入正轨。
 若数据表较大,可在中间位置也设置软件陷阱。
 在每两个子程序之间设置一个软件陷阱,以捕获可能的程序跑飞。
 ③中断服务程序中的陷阱
 当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱。
 这样能够及时捕获错误的中断,避免程序进一步失控。
 
 3、代码示例
 
 ; 假设FLY为跑飞处理子程序的标签
 FLY:
 ; 跑飞处理代码(如复位、重新初始化等)
 ; ...
 ; 跳转到正常程序执行起点
 LJMP START
 
 ; 未使用EPROM空间填充示例
 NOP
 NOP
 LJMP FLY
 
 ; 数据表及子程序间陷阱设置示例
 DATA_TABLE_END:
 NOP
 NOP
 LJMP FLY
 
 SUB_PROGRAM1_END:
 NOP
 NOP
 LJMP FLY
 
 SUB_PROGRAM2_START:
 ; 子程序2的代码
 ; ...
 
 4、注意事项
 
 软件陷阱的数量应根据实际干扰情况和程序存储器容量来确定。
 陷阱的设置应尽可能均匀分布,以提高捕获程序跑飞的效率。
 跑飞处理子程序应包含必要的复位或重新初始化操作,以确保程序能够恢复正常执行。
 
 
 | 
 |