求救啊 AVR atmega 48 定时器中断进不去~~

[复制链接]
6545|6
 楼主| 只是试玩啊 发表于 2011-10-28 09:03 | 显示全部楼层 |阅读模式
昨天就写了个程序就是定时器的中断程序,结果,就是近不了中断 ,用的atmega48的片子  程序如下:
/*
* STATICLCD.c
*
* Created: 2011-10-24 12:05:23
*  Author: yangcw
*/
#include <avr/io.h>
#include <avr/interrupt.h>
const int seg[10]={0x3f,0x06,0x5b,0x4f,0x66,
      0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char num;
void init(void)
{
DDRB=0xff;
PORTB=0x00;

DDRC&=0x00;
}
void timer1_init(void)
{
cli();
TCCR1B=0x00;
TCCR1A=0x00;
TCNT1H=0x85;
TCNT1L=0xee;
TCCR1B=0x04;
TIMSK1=0x01;
}
void delay(int j)
{
int a,b;
for (a=0;a<j;a++)
  for (b=0;b<200;b++);
}
}
void main(void)
{
cli();
init();
timer0_init();
sei();
    while(1)
    {
  DDRC|=0x01;
  PORTB=~seg[num];
  PORTC|=0x01;   
  delay(2);
  PORTB=seg[num];
  PORTC&=0x00;
  delay(2);
  DDRC&=0x00;
  delay(5);
    }
}
#pragma interrupt_handler Timer1_isr:14
void Timer1_isr(void)
{
TCNT1H=0x85;
TCNT1L=0xEE;
num++;
if (num==10)
{
  num=0;
}

就是不能进入中断 求大侠帮帮忙~~~郁闷了两天~~
}*/
 楼主| 只是试玩啊 发表于 2011-10-28 09:12 | 显示全部楼层
自己顶,我在别的论坛上也看到别人有这样的问题,但是下面也没人回复,嘎嘎~来个虾虾吧~~
 楼主| 只是试玩啊 发表于 2011-10-28 09:25 | 显示全部楼层
再顶~~~
airwill 发表于 2011-10-28 10:12 | 显示全部楼层
本帖最后由 airwill 于 2011-10-28 10:15 编辑

楼主确认一下: T1 的溢出中断, 应该是 13 吧?

这是 GCCAVR 的头文件里定义的
/* Timer/Counter1 Overflow */
#define TIMER1_OVF_vect   _VECTOR(13)
#define SIG_OVERFLOW1   _VECTOR(13)

楼主查一下, ICCAVR 的说明.
 楼主| 只是试玩啊 发表于 2011-10-28 14:02 | 显示全部楼层
谢谢airwill的回答 问题已经解决,似乎不是中断向量的问题,因为13我改过 还是进不去,似乎我的写法是ICCAVR里面的,在AVRstudio里面不行,改成SIGNAL(SIG_OVERFLOW1)之后就可以进中断了,谢谢你的回答~~21IC还是需要有人来顶啊,有点冷清~~
悠悠明月心 发表于 2013-2-2 08:52 | 显示全部楼层
和楼主遇到了同样的问题,楼主是怎么解决的,能详细说一下吗??
huangxz 发表于 2013-2-2 14:01 | 显示全部楼层
顶一个,凑下热闹
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

25

帖子

2

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