STC系列单片机内部自带看门狗,通过对相应的特殊功能寄存器的设置就可以实现看门狗的应用。STC89系列单片机内部有一个专门的看门狗定时器寄存器,watchdog timer寄存器。
1.WDT_CONTR位于STC系列单片机的特殊功能寄存器中,字节地址为E1H,不能位寻址。
2.该寄存器用来管理STC单片机的看门狗控制部分,包括看门狗启动和停止、设置看门狗的溢出时间等。
3.单片机清零时,该寄存器不一定全部被清零。
4. D7 D6D5D4D3D2 D1 D0
-- -- EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0
EN_WDT:看门狗允许控制位,当设置为1时,启动看门狗
CLR_WDT:看门狗清零位,当设置为1,看门狗定时器重新计数。硬件自动将此位清0.
IDLE_WDT:看门狗IDLE模式,当设置IDLE_WDT=1时,看门狗定时器在单片机的“空闲模式”下计时。反之在空闲模式下不计时。
PS2、PS1、PS0:看门狗定时预分频值。
5.看门狗溢出时间=(N*预先分频数*32768)/晶振频率
N:表示单片机的时钟模式,一种是单倍速,也就是12时钟模式;另外一种是双倍速,又称6时钟模式,在该模式下STC单片机比其他公司的51单片机速度快一倍。
例子:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr WDT_CONTR=0xe1;//定义寄存器
sbit led1=P1^0;
void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{WDT_CONTR=0x35;//喂狗
led1=0;
delayms(1000);
led1=1;
while(1)
{
WDT_CONTR=0x35;//喂狗
delayms(1000);
}
}