[AVR单片机] 时钟的变化问题

[复制链接]
2146|3
 楼主| laslison 发表于 2010-3-12 23:49 | 显示全部楼层 |阅读模式
#include<iom48v.h>
#include<macros.h>
#pragma interrupt_handler TIMER0_COMPA:15
extern timer0_init(void);
extern hanzi_Init(void);
unsigned char second,minute,hour;
unsigned char COUNTER;

void TIMER0_COMPA(void)
{
TCNT0=0;
COUNTER++;
  if(COUNTER==100)
  second++;
}

void main()
{
  COUNTER=0;
  second=0;
  minute=0;
  hour=0;
  timer0_init();
  SPI_Init();
  hanzi_Init();
  SREG=(1<<7);
while(1)
{
    if(second==60)
  {
    second=0;
    minute++;
  }
    if(minute==60)
  {
      minute=0;
      hour++;
  }
    if(hour==24)
  {
      hour=0;
  }
}
}
时钟的初始化
#include<iom48v.h>
#include<macros.h>
void timer0_init()
{
  TCCR0A=0;//决定了比较匹配发生时输出引脚OC0A 的电平
              //OC0A 以比较匹配输出的方式进行工作
  TCCR0B=0x05;//预分频101,为1024分频
  OCR0A=0xc4;
  
  //51.2*196=10035.2
  TIMSK0|=(1<<OCIE0A);
  
}   
谁可以帮忙分析一下,在COUNTER计数处存在问题,要++196时间加一次,下一次要++256再到196,时间存在问题,但是不知道怎么改正,同时希望把在LCD上面显示的程序加进来。谢谢!!!
麻辣鸭脖子 发表于 2010-3-13 22:53 | 显示全部楼层
Karlshen 发表于 2010-3-13 22:59 | 显示全部楼层
void TIMER0_COMPA(void)
{
TCNT0=0;
COUNTER++;
if(COUNTER==196)
{
  second++;
  COUNTER = 0;
}
}
suoma 发表于 2010-3-16 22:25 | 显示全部楼层
可能计算存在问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

791

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部