C51单片机看门狗电路及程序设计方案解读_第1页
C51单片机看门狗电路及程序设计方案解读_第2页
C51单片机看门狗电路及程序设计方案解读_第3页
C51单片机看门狗电路及程序设计方案解读_第4页
C51单片机看门狗电路及程序设计方案解读_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C51 单片机看门狗电路及程序设计方案院系:信息工程学院年级: 2010 级电子一班 刘禹豪电子一班 赵训虎电子二班 邓启新引言发生不可预料的后果, 所以出于对单片机运行状便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗在由单片机构成的微型计算机系统中, 扰等原因而被打断, 从而造成程序的跑飞, 继续工作,造成整个系统的陷入停滞状态, 态进行实时监测的考虑, 称看门狗(watchdog)(1)看门狗电路基本原理程序的正常运行常常会因为来自外界的电磁场干 而陷入死循环。由此导致单片机控制的系统无法看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的

2、一个I/O引脚相连*,该I/O引脚通过程序控制它定时地往看门狗的这个引 脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一 旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的 起始位置开始执行,这样便实现了单片机的自动复位。(2)看门狗电路一般设计方式“看门狗”电路一般分为 硬件看门狗 与软件看门狗 两种设计方式。硬件看门狗 是利用了一个定时器, 来监控主程序的运行, 也就是说在

3、主程序的运行过程 中,我们要在定时时间到之前对定时器进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的 WDT芯片如 MAX813,5045,IMP813等,价格410元不等.软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的方法实现(即利用单片机此处设计原理实际上为下文中硬件看门狗设计思路。内部定时器资源,通过编程模拟硬件看门狗工作方式),以 51 系列为例:因在 51 单片机中有两个定时器,在利用内部定时器资源来对主程序的运行进行监控时。可以对T1 (或 T0)设定一定的定时时间(设定的定时值要小于主程序的运行时间) ,当产生定时中断的时候对 一

4、个变量进行赋值(此变量在主程序运行的开始已有一个初值) 。当主程序运行至最后时对 此变量的值进行判断,如果值发生了预期的变化,就说明 T0 中断正常,如果没有发生变化 则使程序复位。考虑到设计要求,本设计采用软件看门狗设计思路。二、 看门狗电路整体设计思路根据设计要求,本设计利用 C51 单片机内部自带的定时器 1 进行编程,并配合少量电 路实现“看门狗“电路功能。整个设计分为软件部分 与 硬件部分 ,如下:( 1) 软件部分设计原理:软件设计分为三部分: “看门狗“定时器设置程序 、溢出中断服务程序 和喂狗代码 。1.1 设计思路:1 )在主程序开头, “看门狗“定时器设置程序 设置定时器

5、1 计时 50ms 。2 )当定时达 50ms 时,定时器 1 产生溢出中断, 溢出中断服务程序 开始工作,将 看门狗标志 num 加 1。当 num 的值等于 100 时,说明看门狗定时器已经计时 5s ,此 时,单片机 I/O 端口 P1.0 输出高电平,对程序进行复位。3 )在此过程中, 喂狗代码 将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行, 关闭定时器 1 、清空 num 并重新初始化定时器设置。 若循环体进入死循环, 喂狗代码无法执行, num 将一直累加至 100 ,此时程序复位。注: 喂狗代码放置位置可根据 num 预计数值进行调整:当 num 门限值较小,即看门狗

6、计数时间较短时,喂狗代码可放于程序中各循环体之后或均匀分布于整个主程序中。当num门限值较大,即看门狗计数时间较长时,喂狗代码可放于程序主循环体末 尾。但是需注意看门狗计数时间必须长于正常工作时间,以免非正常复位。1.2软件设计流程图:以下为三部分详细程序设计1.3 “看门狗“定时器设置程序:M 为工作方式 1 下,定时器最大计数值,可知 M=65536 。所以,设定时器 1 的初值为X,则初值X与机器周期I机及定时时间T的关系为:(M-X)T 机 = T(1)其中:T机=12个时钟周期 =12 /fosc 。所以,定时器1的初值为:X = M T/ T 机(2)因此,当 T1 工作于方式 1

7、 ,定时时间为 50ms ,时钟频率 fosc=12MHz 时,可知:X=M- T/ T 机 = 65536-50000/1 =15536=3CB0H所以,“看门狗“定时器设置程序清单( c 语言) 如下:TMOD=0x10;/ 设置 TMOD 寄存器,定时器 1 设为方式 1TL1=0xB0;/ 设置定时器初值低 8 位TH1=0x3C;/ 设置定时器初值高 8 位,设置为计时 50msET1=1;/ 开定时器 1 溢出中断EA=1;/ 开总中断控制TF1=0;/ 定时器 1 溢出中断标志清零TR1=1;/ 开定时器 11.4 溢出中断服务程序:溢出中断服务程序为定时器 1 溢出中断服务程序

8、, 每执行一次, num 加1,并判断 num 是否达到100,即计时5s。若已达到5s,I/O 口 P1.0输出复位信号。溢出中断服务程序清单(c语言)如下:void int_T1() interrupt 3 using 3/ 定时器 1 溢出中断服务程序num+;/ 每溢出一次标志加 1if (num=100)/ 当标志等于 100 时,即计时 5sP1=(0x01);/P1.0 输出 11.5 喂狗代码:喂狗代码主要功能为暂时关定时器1,定时器 1 寄存器清零,看门狗标志 num 清零和重新开启定时器 1.喂狗代码程序清单( c 语言) 如下:TR1=0;/ 喂狗代码,关定时器 1TL1

9、=0xB0;/ 重新设置定时器初值TH1=0x3C;TF1=0;/ 定时器 1 溢出中断标志清零TR1=1;/ 开定时器 11.6 完整测试程序清单完整测设程序分为两部分,以一个正向运行一次的流水灯程序和逆向无限循环流水灯程序组成。 在正向进行一次流水灯程序时, 看门狗代码不会复位单片机; 逆向无限循环流水灯程序时,延时5s,看门狗复位单片机。完整测试程序清单(c语言)如下:#include reg51.h#include stdio.hunsigned int i,num;/ 设置变量unsigned char temp;void delay(unsigned int t);/ 声明 del

10、ay 函数int main()num=0;/ 看门狗复位标志P1=(0x00);/ 将 P1 口赋值为 0TMOD=0x10;/ 设置 TMOD 寄存器,定时器 1 设为方式 1TL1=0xB0;/ 设置定时器初值低 8 位TH1=0x3C;/ 设置定时器初值高 8 位,设置为计时 50msET1=1;/ 开定时器 1 溢出中断EA=1;/ 开总中断控制TF1=0;/ 定时器 1 溢出中断标志清零TR1=1;/ 开定时器 1temp=0x01;/ 流水灯状态标志for(i=0;i8;i+)/ 流水灯程序( 1 )P0=temp;/ 点亮 P0 口对应的 LEDdelay(100);temp=1

11、;/ 点亮的 LED 灯前移一位TR1=0;/ 喂狗代码,关定时器 1TL1=0xB0;/ 重新设置定时器初值TH1=0x3C;TF1=0;/ 定时器 1 溢出中断标志清零TR1=1;/ 开定时器 1while(1)/ 流水灯程序( 2 )/ 倒序,无限循环temp=0x80;for(i=0;i=1;TR1=0;/ 喂狗代码TL1=0xB0;TH1=0x3C;TF1=0;TR1=1;num=0;return 0;void delay(unsigned int t)register unsigned int bt;for(;t;t-)for(bt=0;bt255;bt+);void int_T1

12、() interrupt 3 using 3num+;/ 延时子程序/ 定时器 1 溢出中断服务程序/ 每溢出一次标志加 1/ 当标志等于 100 时,即计时 5sif (num=100)P1=(0x01);/P1.0 输出 1完整测试程序清单( c 语言反汇编版)如下:Q0000:LJMPQ00ABQ0003:PUSHACCINC0AHMOVA,0AHJNZQ000DINC09HQ000D:XRLA,#64HORLA,09HJNZQ0016MOVP1,#0FEHQ0016:POPACCRETINOPNOPLJMPQ0003Q001E:CLRAMOV09H,AMOV 0AH,AQ003E:MO

13、V P1,#0FFHMOVTMOD,#10HMOVTL1,#0B0HMOVTH1,#3CHSETBET1SETBEACLRTF1SETBTR1MOV08H,#01HMOV0BH,AMOV0CH,ALCALL Q0089MOVA,08HADDA,ACCMOV08H,AINC0CHMOVA,0CHJNZQ004FINC0BHCLRCSUBBA,#08HMOV A,0BHQ004F:Q0064:Q006C:SUBB A,#00HJCQ003ECLRTR1MOVTL1,#0B0HMOVTH1,#3CHCLRTF1SETBTR1MOV08H,#80HCLRAMOV0BH,AMOV0CH,ALCALL Q

14、0089MOVA,08HCLRCRRCAMOV08H,AINC0CHMOVA,0CHJNZQ007DINC0BHCLRCSUBB A,#08HQ007D:Q0089:Q0092:Q0099:MOV A,0BHSUBB A,#00HJC Q006CSJMP Q0064RETMOV A,08HCPL AMOV P0,AMOV R7,#64HMOV R6,#00HMOV A,R7ORL A,R6JZ Q00AACLR AMOV R5,AMOV R4,AINC R5CJNE R5,#00H,Q009EINC R4MOV A,R5CPL AORL A,R4Q009E:JNZ Q0099MOVA,R7DECR7JNZQ0092DECR6SJM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论