返回目录:游戏解答
看门狗(WDT)是一个定时器。看门狗是用来防止万一单片机程序出错造成重大损失的。防错的原理很简单,它在硬件上就是一个定时器,当它溢出的时候就会让单片机强制复位使程序重新开始执行。
正常的情况下是不能让它溢出的,所以在程序上每隔一段时间要给他置一次值(俗称喂狗),只要程序中正常给它喂他就不会溢出。
一旦程序跑飞了,有干7a686964616fe78988e69d83339扰或者进入死循环之类的情况时,不能正常执行程序了,那么就永远执行不到喂狗的指令了,但此时定时器是硬件控制的,仍然会走,所以溢出了,单片机就复位了。
一般安全性要求比较高的,系统跑飞了会造成重大事故的都会加一个“狗”保安全。
通常,看门狗的溢出时间越短越灵敏,跑飞之后复位的时间越短,也就越安全,但是,喂狗的操作也要更频繁。
扩展资料:
看门狗工作原理:
使用时,WDT将递增直到溢出或“超时”。 除非处于休眠或空闲模式,否则WDT超时将强制器件复位。 为避免WDT超时复位,用户必须使用PWRSAV或CLRWDT指令定期清除看门狗定时器。 如果WDT在休眠或空闲模式下超时。
器件将唤醒并从执行PWRSAV指令的位置继续执行代码。 在以上两种情况下,WDTO位(RCON <4>)将被置1,表明器件复位或唤醒事件是由WDT超时引起的。
如果WDT将CPU从睡眠或空闲模式唤醒,则还将置位“睡眠”状态位(RCON <3>)或“空闲”状态位(RCON <2>),表明该设备先前已上电。 保存模式。
在正常操作期间,WDT超时将产生设备复位。 当设备处于睡眠状态时,WDT超时将唤醒设备以继续正常操作(称为WDT唤醒)。 清零WDTE设置位可以永久关闭WDT。 后分频器分配完全由软件控制,也就是说,可以在程序执行期间随时更改它。
为避免不可预测的器件复位,当从Timer0预分频器分配更改为WDT后分频器分配时,必须执行以下指令序列。 即使禁止了WDT,也必须执行该指令序列。
参考资料来源:百度百科-看门狗定时器
圣大侠,你也对AVR有兴趣啊!我来说两句看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一zd个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一回个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止答MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。想知道在AVR中看门狗的程序怎么写吗?直接找我吧!
其实zd看门狗就是一个定时器,单片机里面有关于看门狗的设置。
其实看门狗就是一个防止程序跑飞的工具。
如果你设置了看门狗,在你程序开始跑,他就开始计时,如果一段时间内,你没有去清理专标志位(看门狗设置了标志位),那就会自动系统复位。所以属一般人叫清理标志位形象的为喂狗。
所以一般编程中还有一个概念就是“禁止看门狗”,就是说不要看门狗的功能了,就禁止掉 c51中看门狗的设置时在寄存器PCA0MD中