打印
[AVR单片机]

求助 为什么进不去中断呢?

[复制链接]
1562|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
le455622864|  楼主 | 2013-10-29 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<avr/io.h>
#include<avr/interrupt.h>
#pragma interrupt_handler time:9
unsigned char num;
int main(void)
{
        TCCR1B=0x00;
        DDRA=0XFF;//A端口设置输出方式
        SREG=0X80;//开启总中断
        TIMSK=0X40;//允许T1中断溢出
        TCNT1H=0XD8;
        TCNT1L=0XEF;//设定定时时间为10ms
        TCCR1B|=0X01;//设定无分频模式
        MCUCR=0x00;

        TCCR1A=0x00;
        PORTA=0xfe;
        while(1)
        {
                PORTA=~num;
        }
}
void time(void)
{
        static unsigned int i=0;
        TCNT1H=0XD8;
        TCNT1L=0XEF;
        i++;
        if(i>=10000)
                {
                        num++;
                        i=0;
                }
}

相关帖子

沙发
qin552011373| | 2013-10-29 16:01 | 只看该作者
看程序头文件包含你的程序像是用GCC写的,但是看中断又像是ICC写的,所以呢,请说一下你的开发环境是哪个

使用特权

评论回复
板凳
huangxz| | 2013-10-29 17:36 | 只看该作者
qin552011373 发表于 2013-10-29 16:01
看程序头文件包含你的程序像是用GCC写的,但是看中断又像是ICC写的,所以呢,请说一下你的开发环境是哪个 ...

还是斑竹细心啊,看楼主的程序应该是东拼西凑起来的:lol

使用特权

评论回复
地板
le455622864|  楼主 | 2013-10-29 20:39 | 只看该作者
qin552011373 发表于 2013-10-29 16:01
看程序头文件包含你的程序像是用GCC写的,但是看中断又像是ICC写的,所以呢,请说一下你的开发环境是哪个 ...

不好意思 第一次接触avr单片机  用avr studio4写的

使用特权

评论回复
5
le455622864|  楼主 | 2013-10-29 20:40 | 只看该作者
qin552011373 发表于 2013-10-29 16:01
看程序头文件包含你的程序像是用GCC写的,但是看中断又像是ICC写的,所以呢,请说一下你的开发环境是哪个 ...

这里向量改了  改成15了  依旧进不去中断

使用特权

评论回复
6
le455622864|  楼主 | 2013-10-29 20:42 | 只看该作者
huangxz 发表于 2013-10-29 17:36
还是斑竹细心啊,看楼主的程序应该是东拼西凑起来的

这样看起来的确像是拼凑起来的  主要是第一次接触avr单片机  上面既有avr studio 也有icc avr  编程的时候两个都在用。。。:lol

使用特权

评论回复
7
huangxz| | 2013-10-29 22:36 | 只看该作者
le455622864 发表于 2013-10-29 20:42
这样看起来的确像是拼凑起来的  主要是第一次接触avr单片机  上面既有avr studio 也有icc avr  编程的时 ...

把工程贴上来吧,要改的比较大的

使用特权

评论回复
8
qin552011373| | 2013-10-30 08:17 | 只看该作者
le455622864 发表于 2013-10-29 20:40
这里向量改了  改成15了  依旧进不去中断

你可以看一下GCC的HELP文档,你这个中断入口应该用ISR()的

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
le455622864 + 1 赞一个!
9
qin552011373| | 2013-10-30 08:18 | 只看该作者
le455622864 发表于 2013-10-29 20:39
不好意思 第一次接触avr单片机  用avr studio4写的

你用的这个环境下面就是GCC,多多研究WINAVR吧,也就是GCC,中断的写法和ICC不一样的

使用特权

评论回复
10
qin552011373| | 2013-10-30 08:18 | 只看该作者
huangxz 发表于 2013-10-29 17:36
还是斑竹细心啊,看楼主的程序应该是东拼西凑起来的

一般一般,过奖啦

使用特权

评论回复
11
sgj245609615| | 2013-10-30 09:49 | 只看该作者
中断服务函数不对

使用特权

评论回复
12
le455622864|  楼主 | 2013-10-30 09:54 | 只看该作者
sgj245609615 发表于 2013-10-30 09:49
中断服务函数不对

能说具体点麽 第一次上手avr内核 没经验

使用特权

评论回复
13
旭日东起| | 2013-10-30 11:28 | 只看该作者
我觉得用一种编译工具就好,用多了也会烦的,我就习惯用winavr的了

使用特权

评论回复
14
le455622864|  楼主 | 2013-10-30 12:46 | 只看该作者
现在改正了 但是发现一个有趣的现象   

#include <iom128v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;                                  
void timer1_init(void)//定时器1
{
TCCR1B = 0x04; //分频
TCNT1H = 0x00;
TCNT1L = 0x3c;
TIMSK |=BIT(2) ;//定时器1                  //这里改成TIMSK|=0x40;  定时器依旧进不去中断   这是什么情况 ;;;   ps:现在改用icc来编译  
SREG |= 0x80;//总中断
}                                  

                          
void main(void)
{
DDRA = 0xFF;
PORTA=0xfe;
timer1_init();
while(1)
{
  PORTA=~(num);
  if(num>=255)
                            num=0;
}
}

//#pragma interrupt_handler timer0_isr:17 //中断向量号为17
#pragma interrupt_handler timer1_isr:15 //中断向量号为15
//void timer0_isr(void)
void timer1_isr(void)
{
static unsigned char a=0;
// TCNT0 = 0x53; //初值
  TCNT1H = 0x00;
  TCNT1L = 0x3c;
  a++;
  if(a>=2)
  {
   a = 0;
   num++;
  }
}



同时用avr studio4来编写(中断已换成ISR(TIMER1_OVF_vect))  软件仿真的时候发现TIFR=0x19;  这是什么情况  按道理说TIFR第五位应该是1才对啊!!

使用特权

评论回复
15
le455622864|  楼主 | 2013-10-30 12:51 | 只看该作者
qin552011373 发表于 2013-10-30 08:17
你可以看一下GCC的HELP文档,你这个中断入口应该用ISR()的

现在已经修改了 ISR(TIMER1_OVF_vect)  依旧进不去中断  同时  软件仿真的时候发现TIFR=0X19;按道理应该第五位应该要置1啊!!

使用特权

评论回复
16
le455622864|  楼主 | 2013-10-30 16:36 | 只看该作者
好了 全部解决  前面进不去定时器中断是因为TIMSK寄存器设置错误  应该是0x04;

使用特权

评论回复
17
qin552011373| | 2013-10-30 23:19 | 只看该作者
le455622864 发表于 2013-10-30 12:51
现在已经修改了 ISR(TIMER1_OVF_vect)  依旧进不去中断  同时  软件仿真的时候发现TIFR=0X19;按道理应该 ...

解决了就好,看来这位兄弟不怎么会结贴

使用特权

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

本版积分规则

1

主题

10

帖子

0

粉丝