STC89系列单片机看门狗的使用及应用程序.pdf

上传人:qwe****56 文档编号:74641304 上传时间:2023-02-27 格式:PDF 页数:4 大小:85.87KB
返回 下载 相关 举报
STC89系列单片机看门狗的使用及应用程序.pdf_第1页
第1页 / 共4页
STC89系列单片机看门狗的使用及应用程序.pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《STC89系列单片机看门狗的使用及应用程序.pdf》由会员分享,可在线阅读,更多相关《STC89系列单片机看门狗的使用及应用程序.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、STC 单片机看门狗的应用 STC 单片机看门狗的应用 “看门狗”概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(watch dog)。加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个 I/O 引脚相连,该 I/O 引脚通过单片机的程序控制,使它定时地往看门狗

2、芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,这在我们的单片机教程网 http:/ 以前做过相关的电路介绍。不过这样会给电路设计带来复杂,STC 单片机内部自带有看门狗,通过对相应特殊功能寄存器

3、的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。看门狗定时器寄存器(WDT_CONTR)STC 单片机看门狗定时器寄存器在特殊功能寄存器中的字节地址为 E1H,不能位寻址,该寄存器用来管理 STC 单片机的看门狗控制部分,包括启停看门狗、设置看门狗溢出时间等。单片机复位时该寄存器不一定全部被清 0,在 STC 下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。其各位的定义如表 4.2.1 所示。表 1 看门狗定时器寄存器(WDT_CONTR)

4、位序号 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 ps

5、1 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、周期为一个机器周期;另一种为双倍速,又被称为 6 时钟模式,在这种时钟模式下,STC 单片机比其它公司的 51 单片机运行速度要快一倍,关于单倍速与双倍速的设置在下载程序软件界面上有设置选择,大家可自行下载测试程序运行速度。预分频数的值由 PS2、PS1 和 PS0 的组合确定,如表 4.2.2 所示。晶振频率即为当前系统的时钟频率。下面我们通过两个例子来进一步讲解使用看门狗和不使用看门狗时程序运行的区别,由于 STC 单片机的高抗干扰特点,至今我还未曾遇到过程序跑飞的情况,因此我们也很难人为制造出使单片机程序跑乱的情况,下面的程序演示利用看门狗的溢出时间来使程序自动复位运行。【例】:在 TX

7、-1C 实验板上实现如下描述:程序启动后设定看门狗溢出时间为 2 秒左右,然后点亮第一个发光二极管,稍延时一会,然后熄灭发光二极管,使程序进入等待死循环状态,并且在死循环中大约每隔 1 秒喂狗一次,看程序运行是否正常。新建文件 part3.4.2.c,程序代码如下:#include/52 系列单片机头文件#define uchar unsigned char#define uint unsigned int sfr WDT_CONTR=0 xe1;sbit led1=P10;void delayms(uint xms)uint i,j;for(i=xms;i0;i-)/i=xms 即延时约 x

8、ms 毫秒 for(j=110;j0;j-);void main()WDT_CONTR=0 x35;led1=0;delayms(500);led1=1;while(1)delayms(1000);WDT_CONTR=0 x35;分析:(1)“sfr WDT_CONTR=0 xe1;”定义 STC 单片机中新加入的看门狗寄存器,因为 reg52.h 头文件中没有对该寄存器的定义,以后要定义其它新的寄存器时方法相同,当然也可以写在 reg52.h 头文件中。(2)程序开始后,点亮发光二极管后延时约 500ms 后再熄灭,这里延时不可过长,若两次喂狗之间程序运行的总时间超过看门狗的溢出时间,看门狗

9、将复位单片机,大家可调节这个延时时间看实际演示效果。(3)喂狗时使用和设定看门狗寄存器同样的语句,只要看门狗寄存器中的 CLR_WDT 位被置1,看门狗定时器将重新计数,CLR_WDT 位被置 1 后,由硬件自动将其清零。(4)演示结果表现为发光二极管点亮后,马上熄灭,再不会点亮,这说明程序没有被复位,始终停止在 while(1)循环中,看门狗处于被正常喂狗的情况下。【例】只需把 while(1)循环中的“WDT_CONTR=0 x35;”这句删掉,演示结果为小灯不停的闪烁,因为有了看门狗的作用,当看门狗定时器溢出时,使单片机复位从头重新执行程序,所以小灯闪烁。这是 51hei 单片机原创文章转载请保留本文原始出处:http:/ 在应用看门狗时,需要在整个大程序的不同位置喂狗,每两次喂狗之间的时间间隔一定不能小于看门狗定时器的溢出时间,否则程序将会不停的复位。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁