首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 元器件介绍 > 元器件的介绍及应用
MEGA16L单片机片内看门狗(WDT)的使用方法
来源:本站整理  作者:佚名  2010-07-13 09:56:48



  MEGAl6L单片机有五个复位源,分别是上电复位、外部复位、低电压复位、JTAG复位和看门狗复位。复位后所有I/O寄存器被置成初始值,程序从000H处开始执行。五种复位源所产生的复位信息记录在MCU状态寄存器MCUCSR中,如附表所示。

  当复位发生时,相应的寄存器标志位被置位。

  要启用看门狗定时器功能,必须对看门狗控制寄存器WDTCR进行初始化。WDTCR的Bit3是使能控制位,Bit0~Bit2决定看门狗的预分频,即溢出时间,最短16.3ms,最长2.1s。

  在编写程序时,合理安排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复位,则可让单片机进入特殊的处理子程序,达到预定的目的。


关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:166,531.30000 毫秒