【51单片机快速入门指南】8:看门狗定时器(WDT)

普中51-单核-A2
STC89C52
Keil uVision V5.29.0.0
PK51 Prof.Developers Kit Version:9.60.0.0


硬知识

       摘自《STC89C52系列单片机器件手册》

适用型号:
STC89C51,STC89C52,STC89C53,STC89C14,STC89LE51,STC89LE52,STC89LE53,STC89LE14,STC89C54,STC89C58,STC89C516,STC89C510,STC89C512,STC89C514,STC89LE54,STC89LE58,STC89LE516,STC89LE510,STC89LE512,STC89LE514

       在工业控制/ 汽车电子/ 航空航天等需要高可靠性的系统中,为了防止“系统在异常情况下,受到干扰,MCU/CPU程序跑飞,导致系统长时间异常工作”,通常是引进看门狗,如果MCU/CPU 不在规定的时间内按要求访问看门狗,就认为MCU/CPU处于异常状态,看门狗就会强迫MCU/CPU复位,使系统重新从头开始按规律执行用户程序。
       STC89C52系列单片机内部也引进了此看门狗功能, 使单片机系统可靠性设计变得更加方便/简洁。为此功能,我们增加如下特殊功能寄存器WDT_CONTR:
WDT_CONTR: 看门狗(Watch-Dog-Timer)控制寄存器
在这里插入图片描述
EN_WDT :
       看门狗允许位, 当设置为“1 ”时,看门狗启动。
CLR_WDT :
       看门狗清“0”位,当设为“1”时,看门狗将重新计数。硬件将自动清“0 ”此位。
IDLE_WDT :
       看门狗“IDLE ”模式位, 当设置为“1”时, 看门狗定时器在“空闲模式”计数
       当清“0”该位时, 看门狗定时器在“空闲模式”时不计数
PS2,PS1,PS0 :
       看门狗定时器预分频值,如下表所示
看门狗溢出时间 = ( 12 × =(12× =(12×Pre-scale × 32768 ) / ×32768)/ ×32768)/Oscillator frequency
可视为16位的定时器:
看门狗溢出时间 = 12 / =12/ =12/Oscillator frequency × 65536 × 2 [ P S 2 : P S 0 ] 2^{[PS2:PS0]} 2[PS2:PS0]
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

测试程序

main.c

初始化看门狗,[PS2:PS0] = 0,晶振频率为11.0592MHz,则看门狗溢出时间 = 12 / =12/ =12/ 11.0592M × 65536 × 2 [ P S 2 : P S 0 ] = 2^{[PS2:PS0]}= 2[PS2:PS0]= 0.0711s = 71.1ms

#include <STC89C5xRC.H>

#define WDT_EN			0x20
#define WDT_DIS			0x00
#define WDT_CLR			0x10
#define WDT_IDLE_EN 	0x08
#define WDT_IDLE_DIS    0x00

void main(void)
{
	WDT_CONTR = 0;
	WDT_CONTR = WDT_EN|WDT_CLR|WDT_IDLE_EN|0;
	P20 = 0;
	while(1)
	{	
	}	
}

现象

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乙酸氧铍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值