51单片机看门狗的原理 看门狗是51单片机中一个非常重要的组件,它的主要作用是防止程序死循环或跑飞,避免单片机死机。看门狗是一个定时器电路,具有一个输入,称为喂狗,和一个输出到MCU的RST端。当单片机正常工作时,每隔一段时间输出一个信号到喂狗端,给WDT清零。如果超过规定的时间不喂狗,WDT定时超过就会发出一个复位信号到MCU,导致MCU复位。 看门狗的工作原理是在系统运行以后启动看门狗的计数器,看门狗开始自动计数。如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出,造成系统复位。因此,在使用有看门狗的芯片时,需要注意清看门狗,以免系统复位。 硬件看门狗是利用了一个定时器,来监控主程序的运行。在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位,如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。 常用的WDT芯片如MAX813、5045、IMP813等,价格4~10元不等。使用注意看门狗使用注意:大多数51系列单片机都有看门狗,当看门狗没有被定时清零时,shall引起复位。这可防止程序跑飞。设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资源浪费。 看门狗的设计思路是设置看门狗定时器T0的工作方式,并开启中断和计数功能。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65535,T0输入计数频率是.Fosc/12,溢出周期为(65535+1)/1=65536(μs)。 计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置"看门狗"定时器T0定时30 ms(T0的初值为65536-30000=35536)。主控程序的每次循环都将刷新T0的初值。如果程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。 设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入"无条件转移"命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。 作用程序发生死循环的时候(跑飞),能够自动复位原理启动看门狗计数器计数器计时指定时间内不对计数器赋值(喂狗)(主程序跑死,无法喂狗)溢出,发出复位信号“”看门狗就是一个计数器,由于位数有限计数器能够装的数值是有限的(比如8位的最多装256个数、16位的最多装65536个数),从开启看门狗那刻起,它就开始不停的数机器周期,数一个机器周期就计数器加1,加到计数器盛不下了(术语叫溢出)就就产生一个复位信号,重启系统。 设置步骤: 1. 设置看门狗相关寄存器,启动看门狗; 2. 隔一段时间清零一次,喂狗; 3. 如果程序正常,一直运行;如果程序出错,没有按时喂狗,看门狗就在溢出的时候复位系统。 以STC89C5X系列单片机为例,时间设置它的溢出时间是=(NPrescale32768)/晶振频率。其中: 1. N是单片机的时钟周期,STC89C5X系列单片机提供6时钟周期和12时钟周期两种时钟周期,可以在烧写程序时修改; 2. Prescale是预分频数,通过设置【看门狗控制寄存器】可以设置为2、4、8、16、32、64、128、256。 3. 晶振频率就是系统选用的晶振。 所以,如果同样选择12MHz晶振,使用传统的12时钟周期,它最小的溢出时间是(12232768)/(12106)=65.536ms,最大溢出时间是(1225632768)/(12106)≈8.38s。 看门狗寄存器WDT_CONTR位于0xE1;[-] [-] [EN_WDT] [CLR_WDT] [IDLE_WDT] [PS2] [PS1] [PS0] 1. EN_WDT: 看门狗允许位,置1启用看门狗,看门狗不能自动启动,需要设置该位后启动,一旦启动不能关闭(只能系统重新上电和看门狗复位可以关闭)。 2. CLR_WDT: 看门狗计数器清零位,置1清零看门狗计数器,当计数器开始重新计数,硬件清零该位。 3. IDLE_WDT: 单片机IDLE模式看门狗允许位,当IDLE_WDT=1时,单片机在IDLE模式(空闲模式)依然启用看门狗。 4. PS2~PS0: 看门狗定时器预分频器,下表中Prescale表示预分频。
剩余10页未读,继续阅读
- 粉丝: 806
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于 JavaFX 和 MySQL 的影院管理系统.zip
- (源码)基于EAV模型的动态广告位系统.zip
- (源码)基于Qt的长沙地铁换乘系统.zip
- (源码)基于ESP32和DM02A模块的智能照明系统.zip
- (源码)基于.NET Core和Entity Framework Core的学校管理系统.zip
- (源码)基于C#的WiFi签到管理系统.zip
- (源码)基于WPF和MVVM框架的LikeYou.WAWA管理系统.zip
- (源码)基于C#的邮件管理系统.zip
- 【yan照门】chen冠希(1323张) [2月25日凌晨新增容祖儿全94张].rar.torrent
- (源码)基于C++的员工管理系统.zip