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
上面是写的程序。还有编译信息栏里的话。
望高人指点
此帖出自
小平头技术问答
{
TCNT0 = 156; //设初值
j++;
if(j <= 5000) //中断5000次后 执行LED 电平翻转
PORTE ^= 0xFF; //LED 电平翻转
貌似在这里出的问题,在中断程序中不要对I/O口操作,可考虑换个全局变量,然后再在主程序中把变量的值送到i/o口;
一周热门 更多>