AVR单片机定时器使用问题
各位好,下面是我编的AVR定时器1的一个应用程序,实现小灯的闪烁,单片机刚上电时可以实现小灯闪烁功能,但是工作一段时间后(大约1~2分钟)小灯就不再闪烁了,好像是定时器不工作了,进入不了中断了;但是复位后上述情况又会重新出现,不知大家以前有没有遇到过类似的情况,望不吝赐教啊!!谢谢了!!/********定时器1初始化********/
void timer1_init(void)
{
TCCR1A=0;
TCCR1B=0x04; // T/C1工作于普通模式,256分频,
//定时器频率 = 11.0592M/256 =43200Hz
TCNT1H=0x57; //定时初值设置,定时时间 =65536-43200=22336,0x5740
TCNT1L=0x40;
TIMSK|=(1<<TOIE1); //使能T1溢出中断
SREG = 0x80; //使能全局中断
}
/********主函数********/
void main(void)
{
//TIMSK|=(1<<TOIE0)|(1<<TOIE1); //使能T1溢出中断
//SREG = 0x80; //使能全局中断
//timer0_init();
timer1_init();
ZLG7290_init();
while(1)
{
ZLG7290_SegOnOff(40,0); //熄灭小灯
//ZLG7290_SmgOnOff(4,4,0);
}
//while(1);
}
/********定时器1中断服务函数********/
#pragma interrupt_handler timer1_ovf:iv_TIM1_OVF
void timer1_ovf(void)
{
TCNT1H = 0x57;
TCNT1L = 0x40;//重装计数初值
Counter1++;
if(Counter1==1) //定时时间到1S吗?定时中断溢出50次为1S,20ms*50=1000ms=1s(秒)
{
Counter1=0; //1S计时变量清零
ZLG7290_SegOnOff(40,1);//点亮小灯
}
}