原创 AVR+定时器0中断方式控制一只LED闪烁

2011-11-22 21:03 4155 8 9 分类: MCU/ 嵌入式

//这里写的是定时器0的普通溢出中断工作方式,一中断的方式控制LED灯1秒闪烁//

//-----------------------------------------------------------------
//  名称: 定时器0控制单只LED闪烁
//-----------------------------------------------------------------
//  说明: LED在T0定时器溢出中断控制下不断闪烁
//               
//-----------------------------------------------------------------
#define F_CPU  4000000UL
#include
#include
#define INT8U   unsigned char
#define INT16U  unsigned int

#define LED_BLINK() (PORTC ^= 0x01)           //LED闪烁
INT16U T_Count = 0;                           //用于延时累加的变量
//定时器初始化
void Timer_Init()
{
 DDRC = 0X01;
 TCCR0 = 0X05;                             //预分频1024
 TCNT0 = 256-F_CPU/1024.0*0.05;     //0.05秒定时
 TIMSK = 0X01;                             //使能T0中断
 sei();                                    //开中断
   
}
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
int main()
{
 Timer_Init();
 while(1);   
}

//-----------------------------------------------------------------
// T0定时器溢出中断服务程序
//-----------------------------------------------------------------
ISR (TIMER0_OVF_vect)
{
 TCNT0 = 256-F_CPU/1024.0*0.05;       //重新赋初值
 T_Count++;
 if( T_Count>=20)//1 s 定时
 {
  T_Count = 0;
  LED_BLINK();
 }
                          //LED闪烁
}

 

笑脸每天成长一点点,一棵小草也能成长为参天大树/笑脸

文章评论1条评论)

登录后参与讨论

用户377235 2012-11-15 20:56

斗胆一问怎么运行的?
相关推荐阅读
用户421948 2011-11-24 22:31
AVR+TIMER0 查询方式的应用
//----------------------------------------------------------------- //说明:定时1秒轮循数码管的七段 定时器0查询方式 /...
用户421948 2011-11-15 21:39
AVR+外部中断0
//外部中断 只需要设置相关寄存器就可以了 程序很短也就几句就把外部中断设置好了,但是我们要理解它的用处,本程序中只写了外部中断0的下降沿方式触发,其实它还有其他的触发方式,大家不妨试试,例如电平...
用户421948 2011-11-13 15:46
ATMEG16+左右来回的流水灯
/**************************************************************** 参考了:单片机C语言程序设计实训100例--基于AVR+PR...
我要评论
1
8
关闭 站长推荐上一条 /2 下一条