测试环境
单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试;
IDE:KEIL C51;
寄存器配置及主要代码
手册中关于看门狗的寄存器描述如下:
启动看门狗,需将B5位EN_WDT置1即可,IDL_WDT位根据实际需要设置,然后需要设置溢出时间,方法如下图:
例如,笔者使用的是内部22.1184MHz晶振,则使用64分频即WDT_PS[2:0]=101(十进制为5),看门狗的溢出时间为:
12×32768×2^(5+1)/22118400s=1.138s;在程序运行过程中,每隔小于该时间间隔,调用一次重置看门狗函数WDT_Reset即可(俗称“喂狗”);
/*******************************************************************************
* 函数名:WDT_Init
* 功 能:看门狗初始化
* 参 数:无
* 返回值:无
* 说 明:主频22.1184Mhz,溢出时间约1.138s
*******************************************************************************/
void WDT_Init(void)
{
WDT_CONTR = 0x25;//0b00100101
}
/*******************************************************************************
* 函数名:WDT_Reset
* 功 能:看门狗复位
* 参 数:无
* 返回值:无
* 说 明:喂狗
*******************************************************************************/
void WDT_Reset(void)
{
WDT_CONTR |= 0x35;//0b00110101
}