首页 > 应用 > 单片机应用
[导读]
//观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。 //将PB口的LED指示灯使能开关切换到"ON"状态。 #include #define DISP_DDR DDRB #define DISP_PORT PORTB //看门狗WDT初始化程序

//观察喂狗与不喂狗的区别,使用PB口的LED指示灯做状态指示。

本文引用地址: http://www.21ic.com/app/mcu/201806/764231.htm

//将PB口的LED指示灯使能开关切换到"ON"状态。

#include


#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<

/* 置位 WDTOE 和 WDE*/

WDTCR |= (1<

/* 关闭 WDT */

WDTCR = 0x00;

}

void WATCHDOG_Feed()

{

asm("wdr"); //复位看门狗,即喂狗

}

//在AVR的运行程序中设置让PB显示端口自加。若AVR正常工作,

//及时喂狗,则单片机设置的显示端口正常自加。

//去除语句:asm("wdr");单片机不断复位,程序得不到允许,自加数据没有显示往上加。


初始化,然后喂狗,喂狗要在看门狗咬人之前,(复位之前喂狗)
注:清狗指令不能放定时器中断里,因此不管程序飞跑到哪里,
执行哪里,中断产生后都会执行中断函数,
所以在定时器里的清狗指令会使WDT起不到作用(失效)。

换一批

延伸阅读

[单片机应用] avr单片机proteus仿真第四课:控制继电器

avr单片机proteus仿真第四课:控制继电器

继电器(Relay),作用是用弱电控制强电。比如,我们用avr单片控制一个220V电压的灯泡,这就必须用到继电器。本课用avr单片机来控制继电器的吸合与断开。Proteus仿真实验器件:1 atmega128一块2 button,按键一个3......

关键字:avr单片机 proteus仿真 控制继电器

[单片机应用] 跨入AVR

跨入AVR

序: 以前一直用的是STC51 + 飞思卡尔xs128组合,简单的就用51写,复杂的用xs128,对于AVR、PIC、STM系列是只闻其声,不见其人。最近因为要做飞思卡尔电磁磁场发生器而开始第一次接触AVR,顿有相见恨晚之感。 简单点说......

关键字:AVR atmege8

[单片机应用] lpc1114看门狗_中断

lpc1114看门狗_中断

配置为不喂狗引起中断,在一定时间内没有喂狗将不会引起单片机复位而是进入看门狗中断。当引起中断后,进入中断函数,然后退出来继续从刚才进入的地方执行。需要特别注意的是,这时候看门狗计数器不再递减,也就是说......

关键字:lpc1114 看门狗 中断

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客