|
||||||
| | 首页 | 文章中心 | 下载中心 | 本站商品 | 学习资料 | 留言 | 论坛 | | ||||||
| 广告载入中... | ||||||
| 您现在的位置: 电子爱好者 >> 文章中心 >> 单片机应用 >> 正文 |
|
|||||
| MCS51系列单片机软件抗干扰技术中的误区 | |||||
| 作者:佚名 文章来源:http://www.mcuw.com/n741c5.aspx 点击数: 更新时间:2007-10-2 | |||||
| 摘要:文章指出了一种广泛流传的误解:在MCS-51系列单片机中,只要用指令使程序从起始地址开始执行,就可以复位单片机,摆脱干扰。通过一个简单的实验,揭示了软件复位的可靠方法。 有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系统单片机虽然没有复位指令,但片内集成了WATCHDOG电路,故抗干扰也不成问题。而普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又不带硬件WATCHDOS,如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复位技术。 ORG 0000H ORG 0003H
PT0: CPL P1.1 ;低级中断程序发光二极管LED1闪烁 PT1: CPL P1.2 ;高级中断程序发光二极管LED2闪烁 END 实验步骤如下: 1. 按上述程序启动执行,三个发光二极管都应闪烁(否则应先排除故障),表示主程序和各中断子程序正常。因模拟干扰标志未加检测,故不受按钮影响。 2. 修改主程序如下,按下按钮后主程序即掉入死循环中。 LOOP: CPL P1.0 这时可以看到,主程序停止工作(LED0停止闪烁),而两个中断子程序继续运行(LED1和LED2继续闪烁)。 3. 将定时器T1用作软件WATCHDOG,将30H单元用作软件WATCHDOG计数器。主程序中加入一条复位软件WATCHDOG的指令。 LOOP: CPL P1.0 MOV R6,#80H T1中断子程序修改如下: PT1: CPL P1.2 ;高级中断程序发光二极管闪烁 ERR: LJMP STAT ;软件WATCHDOG动作 当按下按钮前,程序正常运行(三个LED全闪)。按下按钮后,主程序能迅速恢复工作,但两个中断子程序被封锁,不再工作。过程如下:主程序检测到干扰后进入死循环,不能执行复位30H单元的操作,T1中断使30H不断增值,计数到3时,软件WATCHDOG执行动作,执行一条LJMP指令,使程序从头执行。MAIN过程中清除了干扰标志(表示干扰已经过去),使主程序迅速恢复工作。按理说MAIN过程中也重新设定了各个中断,并开放了它们,为什么中断不能恢复工作呢?这是因为中断激活标志的复位工作被遗忘了,因为它没有明确的位地址可供编程,直接转向0000H地址并不能完成真正的复位。软件复位是使用软件陷阱和软件WATCHDOG后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件WATCHDOG是高级中断,它将阻止所有中断响应。由此可见,清除中断激活标志的重要性,很多文献的作者因为没有认识到这一点进入误区。 4. 在所有指令中,只有RETI指令能清除中断激活标志。出错处理程序ERR主要是完成这一功能,其它的善后工作交由复位后的系统去完成。为此,我们重新设计T1中断子程序如下所示: PT1: CPL P1.2 ;高级中断程序发光二极管闪烁 这段程序先关中断,以便后续处理能顺利进行,然后用RETI指令替代LJMP指令,从而既清除了中断激活标志又完成了转向0000H的任务。按这样改好后程序再运行,结果仍不理想:按下按钮后,有时只有主程序和高级中断子程序能迅速恢复正常,而低级中断仍有被关闭的可能。如果按如下方法把干扰转移到低级中断中,则按下按钮后低级中断必然被关闭: LOOP: CPL P1.0 5. 修改出错处理如下: ERR: CLR EA ;正确的软件复位入口 这时,必须执行两次RETI,才能到达0000H,以保证清除全部中断激活标志,达到和硬件复位相同的效果。同样,软件陷井也必须由下列三条指令 NOP 才能达到目的。 |
|||||
| 文章录入:lizhongkui 责任编辑:admin | |||||
| 【发表评论】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| |
| | 设为首页 | 站点地图|<产品开发服务|光盘刻录服务| 广告合作 | 访问记录 |汇款方法 | 关于VIP会员 | | |
![]() |
|