看门狗定时器的仿真

[复制链接]
2206|1
 楼主| tianli1980 发表于 2012-4-29 17:57 | 显示全部楼层 |阅读模式
现在大多数的单片机均集成了看门狗定时器,当程序正常运行的时候,看门狗定时器将定时清零。如果遇到系统故障,导致程序跑飞,则看门狗定时器将得不到及时清零,此时,看门狗定时器溢出,引起系统复位。使用看门狗定时器可以增加软件的可靠性,Keil u Vision3集成电路开发环境对看门狗定时器提供了仿真支持。
程序源代码如下
#include<reg52.h>
sfr WDTRST = 0xA6;      //声明看门狗定时器
void main()        //主函数
{
int i;
WDTRST=0x1E;       //启动看门狗定时器
WDTRST=0xE1;
while (1)         //主循环
{
if(P2==0x01)
{
for(i=0;i<200;i++);     //短延时
}
else if(P2==0x02)
{
for(i=0;i<20000;i++);     //长延时,模拟软件故障
}
else
{
}
WDTRST=0x1E;      //喂看门狗
WDTRST=0xE1;
}
}

在此程序中,首先启动看门狗定时器,然后在while主循环中判断P2端口为0x01时,执行一个短延时,然后喂看门狗定时器,当P2端口为0x02时,执行一个长时间的延时程序,模拟单片机的软件故障,此时看门狗定时器无法在指定的时间内清零,将强制单片机复位。
拿起书本 发表于 2012-4-30 18:15 | 显示全部楼层
在程序设计时,通过仿真以及程序调试操作可以很好的模拟程序的执行情况,便于及时发现并解决问题。提高 了程序开发的可靠性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部