利用AVR内部RTC作时钟,秒针走得太慢
我利用AVR内部的TIMER2的异步方式来产生1秒的中断,初始化如下:TCCR2=0;
ASSR=1<<AS2; //异步模式
TCNT2=0xe0; //定时1秒
TCCR2=_BV(CS22)|_BV(CS21)|_BV(CS20); //1024分频
TIMSK=_BV(TOIE2);
sei();
主程序:
uint8 temp_second=0;
while(1)
{
if(temp_second!=second)
{
if(second==0x3c)
{
second=0;
mintue++;
if(mintue==0x3c)
{
mintue=0;
hour++;
if(hour==0x18)
{
hour=0;
}
}
}
temp_second=second;
lcd1602_dis_clock(); //显示需要8ms
}
}
中断程序:
SIGNAL(SIG_OVERFLOW2)
{
TCNT2=0XE0;
second++;
}
但是通过仿真发现,1秒时间与PC机上相比,每秒慢了20ms,这是何故? 实际下载到单片机里面呢?怎么样?
页:
[1]