搜档网
当前位置:搜档网 › ATmega16L看门狗程序

ATmega16L看门狗程序

/*******************************************************************************


#include

#include

#define uchar unsigned char

#define uint unsigned int



/*-----------------------------------------------------------------

函数名称: void wdt_init(void)

函数功能: wdt初始化

参 数:

返 回 值: 无

-----------------------------------------------------------------*/

void wdt_init(void)

{

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

//WDR(); //复位看门狗,即喂狗,功能同:asm("wdr");

WDTCR=0x0F; //开启看门狗,2048K,2.1S

}



/*-----------------------------------------------------------------

函数名称: void WDT_off(void)

函数功能: 关闭看门狗

参 数:

返 回 值: 无

关闭看门狗的步骤(手册):

1. 在同一个指令内对 WDTOE 和 WDE 写 "1“ ,即使WDE 已经为 "1“

2. 在紧接的 4 个时钟周期之内对 WDE 写 "0”

-----------------------------------------------------------------*/

void WDT_off(void)

{

WDR(); // WDT复位

WDTCR |= (1<
WDTCR = 0x00; // 关闭 WDT

}



void main(void)

{

uchar i;

DDRB = 0XFF;

PORTB= 0XFF;//PB口输出高电平,LED熄灭

wdt_init(); //看门狗初始化



while(1)

{

for(i=0;i<8;i++) //流水灯

{

PORTB = ~BIT(i);

DelayMs(100);

}

asm("wdr"); //喂狗,注释此句将导致狗饿死,AVR复位

}

}






------------------------------------------------------------------*/

相关主题