51单片机之看门狗定时器ing STC12C5A60S2

51单片机之看门狗定时器ing STC12C5A60S2_第1张图片

1.看门狗定时:每隔一定时间不刷新定时器(不给狗粮),他将溢出(狗叫giao~~)。多数情况,定时器溢出将复位系统

2.看门狗用来处理软件或硬件错误的死机,保证自动复位。可用于特定情况下恢复

3.外部看门狗:可移植

4.使用看蒙之前,必须确信使用这种定时器将提高(不是减少)系统可靠性

5看门狗复位时间应该是一种很少发生且值得注意的时间。看门狗“其他一切都已经失效,必须让看门狗复位系统”

6.持续硬件故障情况,错误使用看门狗将会导致系统不断复位

/************************************************************
文件名:         watchdog.c
程序员:          LFD
版  本:            V1.0
开发板:           
设  备:        
日  期:              2020/12/28
描  述:            
思  路:
步  骤:
芯  片:        STC12C5A60S2
晶  振:       11.0592MHZ

STC12C5A60S2看门狗的使用

51单片机之看门狗定时器ing STC12C5A60S2_第2张图片

51单片机之看门狗定时器ing STC12C5A60S2_第3张图片

根据上表设置WDT_CONTR = 0X25

//  0 0 1 0       0 1 0 1          EN_WDT使能看门狗         PS2 PS1 PS0 选为101 64分频 共2.2755s

也就是说2.2755s内喂狗,设备就不会复位

#include “reg52.h"

#define WATCHDOG_FEED()  WDT_CONTR |= 0X10//宏定义喂狗操作 另CLR_WDT为1 看门狗重新看门

void watchdog_init();

void main(void)
{
    powerOn();      //  上电空操作
    watchdog_init();//看门狗初始化
    P2 = 0XFF;//P2接LED 共阳
    delay_ms(600);
     P2 = 0x00;
   BEEP = 1;
    uart_send_byte('1');
    for(;;)
    {
        delay_ms(3000); //当设置ms延时大概在1500以下时,有喂狗,设备不会复位(现象:灯常亮);设置在2000以上时,没有喂狗,设备不断复位(灯闪烁)
        WDT_CONTR |= 0X10; //喂狗操作 

    }
}

/*************************************************
函数: watchdog_init();
描述:    看门狗初始化   
其他:    
*************************************************/

void watchdog_init()
{
/*
    设置2.2755s看门狗
    PS2 = 1; PS1 = 0; PS0 =1;也就是说2.2755s内喂狗,设备就不会复位
    设置CLR_WDT = 1;看门狗清零
    设置EN_WDT = 1;打开看门狗
    WDT_CONTR |= 0011 0101
*/
    WDT_CONTR = 0X55;
}

//--------------------------------------------------待续

 

你可能感兴趣的:(单片机,单片机)