微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机软件抗干扰的误区介绍

单片机软件抗干扰的误区介绍

时间:10-14 来源:互联网 点击:

任务。按这样改好后程序再运行,结果仍不理想:按下按钮后,有时只有主程序和高级中断子程序能迅速恢复正常,而低级中断仍有被关闭的可能。如果按如下方法把干扰转移到低级中断中,则按下按钮后低级中断必然被关闭:

LOOP: CPL P1.0

MOV R6,#80H

MOV R7,#0H

TT1: DJNZ R7,TT1

DJNZ R6,TT1

SJMP LOOP

PT0: CPL P1.1

JB 00H,STOP

RETI

STOP: LJMP STOP 掉入死循环。

仔细分析后可能得出结论:当软件WATCHDOG是嵌套在低级中断中起作用时,复位后只清除了高级中断激活标志,低级中断标志仍然被置位,从而使低级中断一直被关闭。

5. 修改出错处理如下:

ERR: CLR EA 正确的软件复位入口

MOV 66H,#0AAH 重建上电标志

MOV 67H,#55H

MOV DPTR,#ERR1 准备第一次返回地址

PUSH DPL

PUSH DPH

RETI 清除高级中断激活标志

ERR1: CLR A

PUSH ACC

PUSH ACC

RETI 清除低级中断激活标志

这时,必须执行两次RETI,才能到达0000H,以保证清除全部中断激活标志,达到和硬件复位相同的效果。同样,软件陷井也必须由下列三条指令才能达到目的。

NOP

NOP

LJMP STAT

改成:

NOP

NOP

LJMP ERR

结论:当主程序受到干扰被软件陷阱捕获时,中断标志并未置位,执行ERR过程中,RETI指令等效于RET指令,同样可以达到软件复位的目的。实验结果证明:只有LJMP ERR才能万无一失地实现软件复位,使系统摆脱干扰同,恢复正常。在MCS-51单片机的软件复位过程中,必须连续执行两次中断返回指令RETI才能确保系统恢复正常。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top