datasheet

STC89单片机看门狗的使用及应用程序

2018-02-01来源: eefocus 关键字:STC89  单片机看门狗

“看门狗”概念及其应用在由 单片机 构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(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)/晶振频率
上式中N表示STC 单片机 的时钟模式,STC单片机有两种时钟模式:单倍速,也就是12时钟模式,这种时钟模式下,STC单片机与其它公司51单片机具有相同的机器周期,即12个振荡周期为一个机器周期;另一种为双倍速,又被称为6时钟模式,在这种时钟模式下,STC单片机比其它公司的51单片机运行速度要快一倍,关于单倍速与双倍速的设置在下载程序软件界面上有设置选择,大家可自行下载测试程序运行速度。预分频数的值由PS2、PS1和PS0的组合确定,如表4.2.2所示。晶振频率即为当前系统的时钟频率。
下面我们通过两个例子来进一步讲解使用看门狗和不使用看门狗时程序运行的区别,由于STC 单片机 的高抗干扰特点,至今我还未曾遇到过程序跑飞的情况,因此我们也很难人为制造出使单片机程序跑乱的情况,下面的程序演示利用看门狗的溢出时间来使程序自动复位运行。
【例】:在TX-1C实验板上实现如下描述:程序启动后设定看门狗溢出时间为2秒左右,然后点亮第一个发光二极管,稍延时一会,然后熄灭发光二极管,使程序进入等待死循环状态,并且在死循环中大约每隔1秒喂狗一次,看程序运行是否正常。
新建文件part3.4.2.c,程序代码如下:

#include //52系列 单片机 头文件
#define uchar unsigned char
#define uint unsigned int 
sfr WDT_CONTR=0xe1;
sbit LED1=P1^0;
void delayms(uint xms) 
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
void main()
{
WDT_CONTR=0x35;
led1=0;
delayms(500);
led1=1; 
while(1) 
{
delayms(1000);
WDT_CONTR=0x35; 
}
}
分析:
(1)“sfr WDT_CONTR=0xe1;”定义STC 单片机 中新加入的看门狗寄存器,因为reg52.h头文件中没有对该寄存器的定义,以后要定义其它新的寄存器时方法相同,当然也可以写在reg52.h头文件中。
(2)程序开始后,点亮发光二极管后延时约500ms后再熄灭,这里延时不可过长,若两次喂狗之间程序运行的总时间超过看门狗的溢出时间,看门狗将复位 单片机 ,大家可调节这个延时时间看实际演示效果。
(3)喂狗时使用和设定看门狗寄存器同样的语句,只要看门狗寄存器中的CLR_WDT位被置1,看门狗定时器将重新计数,CLR_WDT位被置1后,由硬件自动将其清零。
(4)演示结果表现为发光二极管点亮后,马上熄灭,再不会点亮,这说明程序没有被复位,始终停止在while(1)循环中,看门狗处于被正常喂狗的情况下。
【例】只需把while(1)循环中的“WDT_CONTR=0x35;”这句删掉,演示结果为小灯不停的闪烁,因为有了看门狗的作用,当看门狗定时器溢出时,使 单片机 复位从头重新执行程序,所以小灯闪烁。
在应用看门狗时,需要在整个大程序的不同位置喂狗,每两次喂狗之间的时间间隔一定不能小于看门狗定时器的溢出时间,否则程序将会不停的复位。

 


关键字:STC89  单片机看门狗

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2018020137614.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STC内部EEPROM应用函数
下一篇:stc12c4052 315M无线解码程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STC89c51单片机的定时器T2

定时器T2的功能比T1、T0都强大,但描述它的资料不多,可能是使用得比较少的缘故吧。它是一个16位的具有自动重装和捕获能力的定时/计数器,它的计数时钟源可以是内部的机器周期,也可以是P1.0输入的外部时钟脉冲。T2的控制寄存器的功能描述如下:TCON2(T2的控制寄存器),字节地址0C8H:位地址 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H符号 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2各位的定义如下:TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时
发表于 2018-11-22

STC89C52+SJA1000自收发程序记录

项目中需要使用到CAN控制器SJA1000芯片,使用的主控芯片是ARM9,但是在ARM9上怎么调试也不通,不得已,只好先测试下51系列的单片机上是否可以和此芯片协同工作,需要排除芯片的问题,但是发现当你不太了解一个新芯片的时候,若要操作该芯片,而你又没啥经验,是需要费很大的功夫的。所以把过程详细的记录下来,以备复习。关键还是得仔细看芯片数据手册。使用到的芯片和资料详细列出如下:1.      主控芯片(STC89C52RC),CAN控制器(SJA1000T),CAN收发器(PCA82C250)似乎PCA82C251更好些2.     
发表于 2018-09-09

STC89C52MCU --内部EEPROM的应用和内部扩展RAM的应用

STC89C52单片机自带4KB的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100 000次以上。ISP(In System Programable)是指在线编程,通俗来讲,就是在片子已经焊接在板子上,不用取下来,就可以简单而方便的对其尽行编程,比如,我们通过计算机给STC单片机下载程序。IAP(In Application Programmable)是指应用编程,就是片子提供一系列的机制(硬件/软件上)当片子在运行程序时可以提供一种改变flash数据的方法,通俗来说,就是自己可以往程序存储器里面写程序或者修改数据。这种方式典型的应用就是用一小段代码来来实现代码的下载,实际上ISP
发表于 2018-08-26

STC89C52MCU -- DS18B20温度传感器

(i>0)i--;return dat;}//读取一个字节函数uchar tempream(void){uchar i,j,dat;dat =0;while(i=0;i<8;i++){j = tempreadbit();dat = (j<<7)|(dat>>1);}return dat;}//向DS18B20写一个字节void tempwritebyte(uchar dat){uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb = dat &0x01;dat = dat<<1;if(testb){ds = 0;i++;i++;ds
发表于 2018-08-26

STC89C52MCU -- 双机通信及多机通信

单片机的通信有长距离短距离之分,通常一米之内成为短距离,1000左右成为长距离。如若更长距离,需要借助其他无线设备方可实现。通常单片机通信有以下四个方式:TTL电平通信(单片机串口直接互联)、RS-232C通信、RS-422A通信和RS-485通信等;1. TTL电平通信双机TXD和RXD互联,但是两个单片机必须共地,即把他们的系统电源地线连接在一起。单片机的TTL电平通信多在同一系统中。当一个单片机连接两个或者两个以上的单片机 时,可以采用一机对多机的通信方式。3. RS-232C通信RS-232C是EIA(美国电子工业协会)1969年制定的通信标准。它定义了数据端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。RS-2
发表于 2018-08-26

STC89C52MCU--串行通信接口SPI

SPI是一种全双工、高速、、同步的通信总线。它有两种工作模式:主模式和从开模式;主模式下传输速率可达到3mbps, 在系统时钟位12 Mhz时, 如果CPU采用更高频率,则其速率可以更高;在从模式下,速度无法太快,通常在fsoc / 8以内较好;STC12系列单片机与SPI接口相关的数据寄存器名称地址功能描述D7D6D5D4D3D2D1D0SPCTL85HSPI控制寄存器SSIGGPEND0RDMSTRCP0LCPHASPR1SPR0SPSTAT84HSPI装填寄存器SPIFWCOLSPDAT86HSPI数据寄存器SPCTL寄存器功能SPSTAT寄存器功能SPDAT.7 - SPDAT.0 -- 传输数据位Bit7~Bit0查看
发表于 2018-08-22

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">