原创 STC12C5A60S2看门狗的应用

2010-5-15 19:50 8533 4 4 分类: MCU/ 嵌入式

什么是看门狗(watchdog)

看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗。


下面是简单的测试程序,如果屏蔽掉喂狗命令。当液晶显示到4左右时就会从开始,重新自动加1显示。也就是程序复位了。

具体的寄存器操作参见STC的datasheet。


#include <reg52.h>
#include <lcm12864.h>

sfr WDT_CONTR = 0xc1;

volatile unsigned char num,val;

void main()
{
WDT_CONTR = 0x3c;//设置看门狗,溢出时间1.1377s.
EA = 1;
TMOD = 0x01;
TH0 = 0x3c; //50ms定时
TL0 = 0xb0;
ET0 = 1;
TR0 = 1;
Init_LCM12864Word();//初始化液晶
while(1)
{
LCM12864_wr_Data(2,1,val+0x30);//每隔200毫秒val值加1
WDT_CONTR = 0x3c; //喂狗
}
}

void Timer0() interrupt 1 using 1
{
TH0 = 0x3c;
TL0 = 0xb0;
num++;
if(num>=4)
{
num = 0;
val++;
}
}




PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条