pregnant 发表于 2012-8-25 10:39:12

利用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,这是何故?

magicer2010 发表于 2012-8-25 14:34:23

实际下载到单片机里面呢?怎么样?
页: [1]
查看完整版本: 利用AVR内部RTC作时钟,秒针走得太慢