现在大多数的单片机均集成了看门狗定时器,当程序正常运行的时候,看门狗定时器将定时清零。如果遇到系统故障,导致程序跑飞,则看门狗定时器将得不到及时清零,此时,看门狗定时器溢出,引起系统复位。使用看门狗定时器可以增加软件的可靠性,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时,执行一个长时间的延时程序,模拟单片机的软件故障,此时看门狗定时器无法在指定的时间内清零,将强制单片机复位。 |