一、看门狗介绍

在由单片机构成的系统中,由于单片机的工作有可能受到外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预测的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗(Watch Dog)”。

加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程为:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其它控制语句中间的,一旦单片机由于干扰造成程序跑飞而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便对它与单片机复位引脚相连的引脚送出一个复位信号,使单片机复位,从而使单片机从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。

通常,看门狗电路是通过将一个专门的看门狗芯片连接到单片机来实现的,不过这样会给电路设计带来复杂性,STC系列单片机内部自带了看门狗,看门狗有一个15位的计数器,在缺省状态下,看门狗计数器不计数,看门狗功能禁止。如果使能了看门狗功能,则计数器由0开始计数,计数到最大值32767时,则单片机便产生复位。因此程序要定时对看门狗计数器进行清零,以避免计数器溢出而引起系统复位,这称之为“喂狗”。如果程序跑飞陷入死循环,则无法喂狗,看门狗就可以迫使单片机复位。

通过对相应的特殊功能寄存器的设置就可实现看门狗的应用。STC89系列单片机内部有一个专门的看门狗定时器寄存器WDT_CONTR,这个寄存器的定义如下

这个寄存器中各位的定义分别为:

EN_WDT:看门狗允许位,当这一位设置为1时,使能看门狗。

CLR_WDT:看门狗清0位,当这一位设置为1时,将看门狗的计数器清0。

IDLE_WDT:看门狗空闲模式位,当这一位置1时,看门狗计数器在空闲模式下计数,当这一位清0时,看门狗计数器在空闲模式下不计数。

PS2~PS0:看门狗计数器预分频系数。这三位用来设置看门狗计数器的计数周期。当采用12MHz的晶振,并采用12时钟模式时,PS2~PS0对预分频值和看门狗的溢出时间的设置如下表所示。

溢出时间是如何计算的呢,这需要对单片机的时钟模式进行一定了解。

单片机的厂家不同,单片机的时钟系统也会有些差别。我们只介绍STC单片机的时钟。单片机有一下几个周期概念:

(1)时钟周期:也称为震荡周期,它定义为时钟频率的倒数,例如单片机的外部晶振为12MHz,则它的时钟周期就是1/12us,时钟周期是单片机中最基本、最小的时间单位,在一个时钟周期内CPU仅完成一个最基本的动作。时钟脉冲是单片机最基本的工作脉冲,它控制着单片机的工作节奏。对于一个单片机来讲,时钟频率越高,单片机的工作速度就越快,但是,由于不同的单片机内部硬件电路和电器结构不同,所以需要的时钟频率范围也不一定相同,我们使用的STC89C系列单片机的时钟范围约为1MHz~40MHz。

(2)状态周期:它是时钟周期的两倍。

(3)机器周期:单片机基本操作周期,在一个操作周期内,单片机完成一项基本的操作,如取指令、存储器读写等。

(4)指令周期:它是CPU执行一条指令所需要的时间,一般一个指令周期含有1~4个机器周期。

STC单片机有两种时钟模式,一种是单倍速,也就是12时钟模式,在该时钟模式下,12个时钟周期为一个机器周期;另一种是双倍速,又称为6时钟模式,在该时钟模式下,6个时钟器为一个机器周期,比12时钟模式快1倍。两种时钟模式可以通过烧写软件进行设置。如下图所示。一般情况我们用12时钟模式就可以了。

看门狗计数器的时钟源为机器周期,采用12MHz晶振,则时钟源的频率为1MHz,时钟源的周期为1us。若PS2~PS0设置为100,则分频系数为32,那么看门狗计数器的计数周期为32us,计数器由0计数到32767的时间长度为32us*32768=1048576us。即溢出时间为1.0485秒。

二、实例测试

这个实验的代码如下所示,

void main (void)
{WDT_CONTR=0x34;   //初始化看门狗,使能看门狗,溢出周期为1.0485s。 LED1=0;    //将P00口赋值0,对外输出低电平,灯点亮。delay1ms(500);   //延时0.5秒LED1=1;    //将P00口赋值1,对外输出高电平,灯熄灭。  for(;;){WDT_CONTR=0x34;   //复位看门狗  delay1ms(500);    //延时0.5秒}
}

烧写之后可以看到实验现象,开发板上的LED1闪1下之后熄灭。

在这个实验中,程序首先使能了看门狗,并且让LED1闪一下,之后,程序不对LED1进行操作,只是每隔0.5秒喂一次看门狗。

对程序进行一定修改,将for循环中的喂狗语句WDT_CONTR=0x34;   //复位看门狗  的前边打上双斜线//,将这一句隐去,这样程序只是使能了看门狗,而没有定时喂狗。将程序编译之后,将这个工程的HEX文件烧写到单片机中。烧写之后可以看到实验现象,开发板上的LED1每隔大约1秒闪一次,这是因为没有按时喂狗,单片机每隔1.0485s复位一次,每次复位之后LED1就闪一次。

程序中使用了WDT_CONTR这个寄存器。而这个寄存器在reg52.h头文件中没有进行定义,因此程序在使用这个寄存器之前要对其进行定义。这个寄存器的地址为E1H,因此将其定义为:sfr  WDT_CONTR = 0xE1;

51单片机(十三)—— 看门狗功能测试相关推荐

  1. 51单片机节电模式看门狗

    这里写目录标题 节电模式 1. 空闲(Idle)模式 2. 掉电(Power-down)模式 3. 异同点 相关寄存器 看门狗(watchdog) STC90C51RC/RD+系列单片机可以运行2种省 ...

  2. STC 51单片机43——看门狗

    看门狗测试,通过修改delay函数的延时长度,可以看到看门狗是否复位系统. #include <reg52.h>             sfr  WDT_CONTR =0xE1;     ...

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

    1.看门狗定时:每隔一定时间不刷新定时器(不给狗粮),他将溢出(狗叫giao~~).多数情况,定时器溢出将复位系统 2.看门狗用来处理软件或硬件错误的死机,保证自动复位.可用于特定情况下恢复 3.外部 ...

  4. STC 51单片机46——看门狗测试

    #include <reg52.h>             sfr  WDT_CONTR =0xE1;        //声明WDT_CONTR void delay(void){  / ...

  5. STC单片机启动看门狗定时器介绍和使用

    STC单片机启动看门狗定时器介绍 ✨这里以STC8系列为例.

  6. 单片机:看门狗程序简介

    什么是看门狗(watchdog)

  7. ABOV单片机内部看门狗WDT的代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部看门狗代码生成 1.在CodeGen8 代码生成 ...

  8. 【MCU】单片机看门狗工作原理

    背景 在单片机运行中,可能会遇到电磁场等恶劣环境干扰失控,造成程序进入死循环,程序跑飞(死机)等意外故障,程序的正常运行被打断,系统无法继续运行,陷入停滞状态,发生不可预料的后果.此时可通过按下复位按 ...

  9. 看门狗电路 通俗理解

    视频讲解:李想STM32初级教程_哔哩哔哩_bilibili 看门狗通俗理解: 转自:STC89C5X单片机"看门狗"原理详解-电子工程世界 很多人初次接触不太理解怎么用,书上也讲 ...

最新文章

  1. CZoneSoft出品: 音频视频在线录制系列之 AV留言本 简介
  2. VS2010运行类向导提示“未实现该方法或操作”
  3. 基于本地部署的hyperledger fabric升级chaincode
  4. Qt Creator管理工作区
  5. AJAX+JavaScript无刷新检查用户名
  6. exit(0)与exit(1)、return区别
  7. JavaScript求两点之间相对于Y轴的顺时针旋转角度
  8. 字节AI LAB NLP算法二面凉+被捞后通过
  9. Asp.Net删除文件夹后引起Session丢失的解决办法
  10. 实践项目2 图书管理系统
  11. 优秀课件笔记之文件系统
  12. 如何彻底卸载3dmax2020_3dmax卸载不干净如何解决_3dmax怎么彻底卸载干净
  13. 远程桌面连接服务器显示内部错误,解决远程桌面连接出现了内部错误
  14. 计算机启动后需重启才能正常显示,电脑开机老是要重启N次后才能正常
  15. stm32 HAL 重映射
  16. 如何将wav文件切成多个子文件
  17. 星辰大海,不属于任何人,也属于任何人
  18. 3章等价类划分法-城市号码
  19. 推荐阿里巴巴 15 个前端开源项目
  20. 数据中台架构体系浅析

热门文章

  1. 初探从C到Win32汇编之系列二
  2. AndroidStudio中利用openFileOutput将数据保存在文件中,利用openFileInput读取文件中的数据
  3. 激光显示产业三大风向标
  4. css flex布局实现文字垂直居中
  5. matlab标量场作图
  6. “二次确认”设计策略
  7. 弘辽科技:如何快速引爆新品的流量。
  8. 用思维图整理的英语语法
  9. 爱因斯坦问题(原创)
  10. 思维导图用在了课堂教学中