|
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0x85; //reload counter high value
TCNT1L = 0xEE; //reload counter low value
count++;
if(count==60)
{PORTB |= BIT(4);
count=0;
}
}
由于用定时器直接定时1分钟产生的误差很大,经同学介绍一种方法如上,让定时器计时一秒后溢出中断,执行count++(count初值为0),加满60就达到一分钟,然后把以点亮的led灭掉,由于cpu运行程序的速度很快,所以这样做误差不会很大。
但是实际却不是这样的,误差达到200%(定时为10秒实际却定了20秒)多。不知道这是avr性能有问题还是程序设计的问题。
另外, 大家有什么好的定时的方法可以分享一下吗。
|
|