完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
//观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。 //将PB口的LED指示灯使能开关切换到“ON”状态。 #include 《iom16v.h》 #define DISP_DDR DDRB #define DISP_PORT PORTB //看门狗WDT初始化程序 void wdt_init(void) { asm(“wdr”); //clr wdt WDTCR=0x0F; //enable wdt,clk = 2048,2.1S } void main(void) { uint8 i; DISP_DDR = 0XFF; wdt_init(); while(1) { DISP_PORT++; //数据显示向上加,作AVR正常运行的指示 asm(“wdr”); //喂狗,去除此句将导致狗饿死,AVR复位 delay50ms(20); } } void WDT_off(void) { asm(“cli”); asm(“wdr”); //复位看门狗,即喂狗 /* Clear WDRF in MCUSR */ MCUSR &= ~(1《《WDRF); /* 置位 WDTOE 和 WDE*/ WDTCR |= (1《《WDTOE) | (1《《WDE); /* 关闭 WDT */ WDTCR = 0x00; } void WATCHDOG_Feed() { asm(“wdr”); //复位看门狗,即喂狗 }//在AVR的运行程序中设置让PB显示端口自加。若AVR正常工作,//及时喂狗,则单片机设置的显示端口正常自加。//去除语句:asm(“wdr”);单片机不断复位,程序得不到允许,自加数据没有显示往上加。 初始化,然后喂狗,喂狗要在看门狗咬人之前,(复位之前喂狗)
注:清狗指令不能放定时器中断里,因此不管程序飞跑到哪里, 执行哪里,中断产生后都会执行中断函数, 所以在定时器里的清狗指令会使WDT起不到作用(失效)。 |
|
|
|
只有小组成员才能发言,加入小组>>
2510 浏览 0 评论
1079浏览 2评论
693浏览 1评论
450浏览 0评论
189浏览 0评论
321浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 03:24 , Processed in 1.204482 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号