打印
[AVR单片机]

ATMEGA168 CTC模式 配置问题 用的WINAVR

[复制链接]
1633|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fqn0312|  楼主 | 2013-11-8 18:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
fqn0312|  楼主 | 2013-11-8 18:09 | 只看该作者
led_标志寄存器=1;
误写应是   led_标志寄存器=1;
请各位高手帮帮忙

使用特权

评论回复
板凳
qin552011373| | 2013-11-10 09:08 | 只看该作者
1,开开启溢出中断,2开启总中断。再试试吧

使用特权

评论回复
地板
huangxz| | 2013-11-10 19:32 | 只看该作者
贴工程吧,跟初始化很有关系

使用特权

评论回复
5
fqn0312|  楼主 | 2013-11-11 09:12 | 只看该作者
工程如下:目前只是测试定时器,程序刚开始写,后续还要加其他的功能  8M外部晶振  直接点亮LED是可以实现的
#include "SGJ_HEADER.h"
void timer0_init(void)
{
//TIMSK |= 1<<OCIE0;//不屏蔽T0匹配中断
//TIFR0 |=0X02;
TIMSK0 |= 0X02;//不屏蔽T0匹配中断
OCR0A = 0X4e;//匹配值 78  10ms
TCCR0A |=0X02;
TCCR0B |=0X05;//CTC模式,1024分频
//TCCR0A |= (1 << WGM01) | (0 << WGM00) | (1 << CS02) | (0 << CS01) | (1 << CS00);

}
ISR(TIMER0_OVF_vect)
{
  LED;
  led_tim++;
  if(led_tim>=100)
  {
   led_tim=0;
   led_标志寄存器=1;
  }
}
int main(void)
{

  cli();
  DDRB=_BV(1);//
  DDRB=_BV(2);
  DDRB=_BV(3);

  DDRB=0xff;
  LCD_Init();
  timer0_init();
  led_tim=0;
  led_标志寄存器=0;
  sei();
  for(;;)
  {       
   
    LCD_SET();
        LCD_DISP();
        if(led_标志寄存器)
        {
         LED;//点亮LED
         _delay_ms(200);
         _delay_ms(200);
         _delay_ms(200);
         _delay_ms(200);
         LCD_DISP();
         led_标志寄存器=0;
        }else
        {
         LED0;//关闭LED
        }

  }  
}

使用特权

评论回复
6
fqn0312|  楼主 | 2013-11-11 11:20 | 只看该作者
问题解决了 原来是中断向量号搞错了,
应该是ISR(TIMER0_COMPA_vect)
原来是ISR(TIMER0_OVF_vect)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

0

粉丝