/*--------------------------------------------------------------------
程序名称:看门狗使用
程序功能:看门狗程序是借助于八个发光二极管同时亮灭程序来实现的,教用户如何使用
看门狗
注意事项:在电路板上把LED-J1用跳线帽连接上
提示说明:间隔时间可在程序当中调节
--------------------------------------------------------------------*/
#include <iom16v.h>
#include <macros.h>
/***********************************************/
#define osccal 0x7d
//ATMEGA8单片机使用内部8M RC 振荡器,校正常数0x7d
/***********************************************/
#define LED_DDR DDRA
#define LED_PORT PORTA
/**********************************************
延时函数
**********************************************/
void delay_us(unsigned int delay_counter)//延时1us
{
do
{
delay_counter--;
}
while(delay_counter>1);
}
void delay_ms(unsigned int delay_counter)//延时1ms
{
while(delay_counter!=0)
{
delay_us(1000);
delay_counter--;
}
}
/*********************************************
看门狗初始化
**********************************************/
void watchdog_init(void)
{
_WDR(); //初始化前先喂狗
WDTCR = 0x1F; //重新设定看门狗定时器的预分频参数时,WDCE也必须先置1
//delay_ms(2);//延时500ms
WDTCR = 0x0F; //看门狗使能,使用2048K分频
}
/*********************************************
主程序
*********************************************/
void main(void)
{
OSCCAL="osccal";//内部RC校正常数为0x7d
LED_DDR=0xff;//初始化LED数据口为输出口
LED_PORT=0x00;//初始化LED数据口为0,全亮
watchdog_init();
while(1)
{
//_WDR(); //看门狗计数清零,也就是喂狗
/*注:用户可以把上面这句话去掉,看看显示效果,会和正常时不一样,因为单片机经常复位*/
delay_ms(500);//延时500ms
LED_PORT^=0xff;//LED数据口取反
}
}
用户1623314 2010-5-16 17:29
用户1623314 2010-5-16 17:28
用户1623314 2010-5-16 17:27