您当前的位置:五五电子网电子知识元器件介绍元器件特点及应用MEGA16L单片机片内看门狗(WDT)的使用方法 正文
MEGA16L单片机片内看门狗(WDT)的使用方法

MEGA16L单片机片内看门狗(WDT)的使用方法

点击数:7136 次   录入时间:03-04 11:41:32   整理:http://www.55dianzi.com   元器件特点及应用

  在编写程序时,合理安排WDR复位指令位置,使程序在正常运行状态下,WDR在看门狗定时器还没有超时溢出,就将其清零,因而不会产生复位。工程实践中如遇强电磁干扰,会出现“程序跑飞”进入死循环的情况,这时看门狗就会超时溢出,产生一个CK周期的窄复位脉冲,使程序计数器指向000H,程序从头开始执行。

  下面用一个试验程序来说明MEGAl6L看门狗的动作过程和用法。电路如附图所示。发光管LEDl、LED2分别指示程序为正常执行和复位。上电复位或外部复位后,LED2亮1秒便熄灭,接着LED1以O.1秒频率闪亮。设置一个开关Kl来模拟死循环,当开关K1按下后,LEDl灭(程序进入死循环),如按下K1的时间超过2s,LED2再次点亮,说明是看门狗定时器复位,当开关K1放开后,LEDl继续闪亮,程序继续工作,如果在死循环中加上WDT复位指令WDR,即使按键一直按下,LED2也不会亮。程序代码如下:

  .org  $000ldi temp,low(ramend)out  SPL,templdi    temp,high(ramend)out  SPH,templdi temp,$06;端口初始化out portd,tempout ddrd,temPIN temp,wdtcr;wdt初始化ori temp,$0f;WDT 溢出时间2.1sout  wdtcr,temploop:clr tempout    mcusr,temPCBi portd,2;LED2亮rcall delay_1ssbi portd,2loopl:rcall ledl blinkwaitl:sbIC pind,O;Kl按下?

  rjmp loopl;K1没按调ledl_blink(略)rjmp waitl;按K1停在waitl循环end有时不能让程序从头执行,如笔者设计的一个食盐包装机控制程序中,每个机械动作按步骤进行,如在夹袋时发生WDT复位后,让程序从头执行,则会产生废袋。这时需要区分是上电复位还是看门狗复位,在程序上做一些处理,使程序回到死机时的位置继续执行。具体方法是在程序初始化之后加上一段代码,判断MCUCSR中的Bit3位的状态,以便决定程序的去向。如果是WDT复位,则可让单片机进入特殊的处理子程序,达到预定的目的。





本文关键字:单片机  元器件特点及应用元器件介绍 - 元器件特点及应用