打印

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

[复制链接]
5174|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 的说明.

使用特权

评论回复
5
只是试玩啊|  楼主 | 2011-10-28 14:02 | 只看该作者
谢谢airwill的回答 问题已经解决,似乎不是中断向量的问题,因为13我改过 还是进不去,似乎我的写法是ICCAVR里面的,在AVRstudio里面不行,改成SIGNAL(SIG_OVERFLOW1)之后就可以进中断了,谢谢你的回答~~21IC还是需要有人来顶啊,有点冷清~~

使用特权

评论回复
6
悠悠明月心| | 2013-2-2 08:52 | 只看该作者
和楼主遇到了同样的问题,楼主是怎么解决的,能详细说一下吗??

使用特权

评论回复
7
huangxz| | 2013-2-2 14:01 | 只看该作者
顶一个,凑下热闹

使用特权

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

本版积分规则

0

主题

25

帖子

2

粉丝