新手学习avr单片机ATmage 128 遇到问题 。中断程序被忽略问题,找不到原因。

2019-03-24 20:54发布

avr studio 4 软件仿真时,编译通过了,单在编译信息栏却看到中断程序被忽略。在软件仿真时也发现中断程序没有执行。不知道问题出在哪里。忘各位单片机大虾们解答。
  我用的是avr studio 4  ATmage 128 单片机

程序如下

#include <avr/io.h>
#include <avr/interrupt.h>
void main()              //用的是TC0 溢出中断,来控制八位LED 一秒闪烁
{
    PORTE = 0xFF;   //LED 关  端口高电平位关
        DDRE = 0xFF;
    MCUCR |=(1<<TOIE0);                //打开定时器中断使能
        sei();                                        //开启全局中断
        TIMSK|=(1<<TOIE2);                //定时器中断使能
        TCNT0 =155;                          //定时器赋初值   
        TCCR0 |= (1 << CS01);        //8分频
        while (1);

}

volatile unsigned int j =0;
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
    TCNT0 = 156;                        //设初值
        j++;
        if(j <= 5000)                    //中断5000次后 执行LED 电平翻转
        PORTE ^= 0xFF;            //LED 电平翻转
   
}


../lesson2.c:18: warning: ignoring #pragma interrupt_handler timer0_ovf_isr

上面是写的程序。还有编译信息栏里的话。
望高人指点 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
fengneedning
1楼-- · 2019-03-25 05:52
void timer0_ovf_isr(void)
{
TCNT0 = 156; //设初值
j++;
if(j <= 5000) //中断5000次后 执行LED 电平翻转
PORTE ^= 0xFF; //LED 电平翻转



貌似在这里出的问题,在中断程序中不要对I/O口操作,可考虑换个全局变量,然后再在主程序中把变量的值送到i/o口;
fangliang425
2楼-- · 2019-03-25 06:16
 精彩回答 2  元偷偷看……
yaosyj
3楼-- · 2019-03-25 07:47
avr studio 中断不是这样写的!例如SIGNAL(TIMER1_OVF_vect)中断入口

一周热门 更多>