首页 理论教育单片机基础应用-软件陷阱技术提示

单片机基础应用-软件陷阱技术提示

【摘要】:软件陷阱就是用引导指令强行将捕获到的乱飞程序引向复位入口地址0000H,在此处将程序转向专门对程序运行出错进行处理的程序,使程序纳入正轨。表10-1软件陷阱形式“软件陷阱”一般安排在下列4个地方。1.未使用的中断向量区MCS-51单片机的中断向量区为0003H~002FH,如果系统程序未使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。

当乱飞程序进入非程序区(如EPROM未使用的空间)或表格区时,采用冗余指令就不再能使程序纳入正确轨道,此时可以设定软件陷阱,拦截“乱飞”程序,将其迅速引向一个指定位置,在那里有一段专门对程序运行出错进行处理的程序。

软件陷阱就是用引导指令强行将捕获到的乱飞程序引向复位入口地址0000H,在此处将程序转向专门对程序运行出错进行处理的程序,使程序纳入正轨。软件陷阱可以采用两种形式,如表10-1所示。

根据“乱飞”程序落入陷阱区的位置不同,可选择执行空操作、转到0000H和直转0202H单元的形式之一,使程序纳入正轨,指定运行到预定位置。

表10-1 软件陷阱形式

“软件陷阱”一般安排在下列4个地方。

1.未使用的中断向量区

MCS-51单片机的中断向量区为0003H~002FH,如果系统程序未使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。如某系统使用了两个外部中断INT0、INT1和一个定时器溢出中断T0,它们的中断服务子程序入口地址分别为FUINT0、FUINT1和FUT0,即可按下面的方式来设置中断向量区:

(www.chuimin.cn)

2.未使用的大片EPROM空间

程序一般不会占用EPROM芯片的全部空间。对于剩余未编程的EPROM空间,一般都维持原状,即其内容为0FFH。0FFH对于MCS-51单片机的指令系统来说是一条单字节的指令:MOV R7,A。如果程序“跑飞”到这一区域,则将顺利向后执行,不再跳跃(除非又受到新的干扰)。因此,在这段区域内每隔一段地址设一个陷阱,就一定能捕捉到“跑飞”的程序。

3.表格

表格有两类,一类是数据表格,供MOVC A,@A+PC指令或MOVC A,@A+ DPTR指令使用,其内容完全不是指令;另一类是散转表格,供JMP @A+DPTR指令使用,其内容为一系列的三字节指令LJMP或两字节指令AJMP。由于表格的内容与检索值有一一对应的关系,在表格中间安排陷阱会破坏其连续性和对应关系,因此只能在表格的最后安排陷阱。如果表格区较长,则安排在最后的陷阱不能保证一定能捕捉“跑飞”来的程序,程序有可能在中途再次“跑飞”,这时只能在程序的其他地方设置陷阱或冗余指令来捕捉。

4.程序区

程序区是由一系列的指令构成的,不能在这些指令中间任意安排陷阱,否则会破坏正常的程序流程。但是,在这些指令中间常常有一些断点,正常的程序执行到断点处就不再往下执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI,这时PC的值应发生正常跳变。如果在这些地方设置陷阱就有可能捕捉到“跑飞”的程序。例如,对一个累加器A的内容正、负和零的情况进行三分支的程序设计,软件陷阱安排如下: