WINAVR自带的watch dog函数头文件

/************************************************************************************
***              慧净电子10天学会AVR单片机与C语言视频教程配套程序源码             ***
*** 实验目的:HJ-1 M16 AVR实验板  《推荐用慧净电子的HJ-2G AVR多功能二合一开发板》 ***
*** MCU: ATmega16  部分C源码可以直接用于项目开发、欢迎复制共享、没有版权          ***
*** 作者:慧净免费助学会员  部分源码网上收集整理 感谢有共享精神的朋友             ***
*** 编译器:GCC                                                                   ***
*** 百度交流空间:http://hi.baidu.com/HJMCU                                       ***
*** 论坛交流:http://hjdz.5d6d.com                                                ***
*** 配套的硬件学习板网址:http://shop37031453.taobao.com                          ***
*** 日期:2008.12.18                                                              ***
*** 目标:用C语言写程序就这么简单:《1天入门、10天学会、1年精通单片机系列源码》   ***
*************************************************************************************/
//程序说明:
#include         //io端口寄存器配置文件,必须包含
#include 
#include     //WINAVR自带的watch dog函数头文件

//端口声明


//变量声明

//函数声明
void Delayus(unsigned int lus);         //us延时函数
void Delayms(unsigned int lms);        //ms延时函数

int main(void)            //GCC中main文件必须为返回整形值的函数,没有参数
{

	

	DDRB = 0xFF;       //端口PortB设为输出口,通过LED的变化指示看门狗的复位
	PORTB = 0xff;      //熄灭所有LED
    Delayms(100);    //延时
	
	PORTB = 0x00;    //点亮所有LED
	Delayms(100);    //延时
	//由于看门狗使用的是内部独立的1MRC振荡器,因此定时器的时间与电源电压、环境温度有关,
	//定时时间可能不准。
	//在本实验中使用的是外部12M晶振,实验过程中发现,如果上面两个延时程序都改成延时200MS,
	//则即使在下面设置了喂狗程序,程序还是会复位,而改成延时100MS,则程序不会复位。
	//这可能是看门狗定时不准的例证。

	wdt_enable(WDTO_500MS);   //启动看门狗,定时时间500MS

	while(1)
	{
		wdt_reset();	 //喂狗,让程序正常运行,即LED一直点亮,注意一定要在while(1)中喂狗
		                 //如果屏蔽这句话,则看门狗定时时间到后,会让程序复位,LED会不停的
						 //亮灭变化,
	}
}


  
//us级别的延时函数
void Delayus(unsigned int lus)
{
	while(lus--)
	{
		_delay_loop_2(3);      //_delay_loop_2(1)是延时4个时钟周期,参数为3则延时12
		           //个时钟周期,本实验用12M晶体,则12个时钟周期为12/12=1us
    }
}

//ms级别的延时函数
void Delayms(unsigned int lms)
{
	while(lms--)
	{
		Delayus(1000);        //延时1ms
    }
}




# warning "Compiler optimizations disabled; functions from won't work as designed"

在avrstudio中使用winavr 自带的 延时函数时应该吧optimization 打开,不可设置为-00。


你可能感兴趣的:(单片机,avr)