“看门狗”概念及其应用在由 单片机 构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(watch dog)。
加入看门狗电路的目的是使 单片机 可以在无人状态下实现连续工作, 其工作过程如下:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。
通常看门狗电路需要一个专门的看门狗芯片连接 单片机 来实现,这在我们的单片机教程网 http://www.51hei.com 以前做过相关的电路介绍。不过这样会给电路设计带来复杂,STC单片机内部自带有看门狗,通过对相应特殊功能寄存器的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。
看门狗定时器寄存器(WDT_CONTR)
STC 单片机 看门狗定时器寄存器在特殊功能寄存器中的字节地址为E1H,不能位寻址, 该寄存器用来管理STC单片机的看门狗控制部分,包括启停看门狗、设置看门狗溢出时间等。单片机复位时该寄存器不一定全部被清0,在STC下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。其各位的定义如表4.2.1所示。
表1看门狗定时器寄存器(WDT_CONTR)
位序号
D7
D6
D5
D4
D3
D2
D1
D0
位符号
--
--
EN_WDT
CLR_WDT
IDLE_WDT
PS2
PS1
PS0
EN_WDT:看门狗允许位,当设置为“1”时,启动看门狗。
CLR_WDT :看门狗清“0”位,当设为“1”时,看门狗定时器将重新计数。硬件 自动清“0”此位。
IDLE_WDT:看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在 单片机 的“空闲模式”计数,当清“0”该位时, 看门狗定时器在单片机的“空闲模式” 时不计数。
PS2、PS1、PS0:看门狗定时器预分频值,不同值对应预分频数如表4.2.2所示。
表2 12M晶振看门狗定时器预分频值
PS2
ps1
ps0
预分频数
看门狗溢出时间
0
0
0
2
65.5ms
0
0
1
4
131.0ms
0
1
0
8
262.1ms
0
1
1
16
524.2ms
1
0
0
32
1.0485s
1
0
1
64
2.0971s
1
1
0
128
4.1943s
1
1
1
256
8.3886s
看门狗溢出时间与预分频数有直接的关系,公式如下:
看门狗溢出时间=(N×预分频数×32768)/晶振频率
上一篇:STC单片机开发注意事项