看门狗是什么狗

简单的说就是为了防止单片机收到外界电磁干扰致使程序跑飞,程序陷入死循环,不能正常运行。我们在写程序时激活一个叫做看门狗的定时器,然后这个定时间就自动计时了,我们需要在看门狗计时的周期内定时喂狗,也就是复位定时器。一旦我们程序出错就不能及时喂狗,那么看门狗就会因为计数溢出,然后就单片机认为程序出错了,产生复位信号,使程序重新运行。

看门狗是什么狗?AT89S51看门狗如何使用

AT89S51看门狗如何使用

AT89S系列单片机的看门狗在使用之前要先声明一下,以为它没有包含在reg51.h头文件中。声明和激活看门狗程序如下:

sfr WDTRST=0XA6; 声明

void main()

{

WDTRST=0X1E;

WDTRST=0XE1;//初始化激活看门狗

while(1)

{

WDTRST=0X1E;

WDTRST=0XE1;//喂狗 如果程序陷入死循环就不会喂狗了,程序就重新运行了

其他子程序

}

}

特别说明

AT89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。所以在实际应用中,对于大程序,要在不同位置喂狗,两次喂狗时间间隔小于溢出时间。使用看门狗要特别注意溢出时间的问题,养狗是为了看家,但养不好了程序一直复位就使自己受伤了。哈哈!