/*******************************************************************************
#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复位
}
}
------------------------------------------------------------------*/