新手学习avr单片机ATmage 128 遇到问题 。中断程序被忽略问题,找不到原因。 10
avrstudio4软件仿真时,编译通过了,单在编译信息栏却看到中断程序被忽略。在软件仿真时也发现中断程序没有执行。不知道问题出在哪里。忘各位单片机大虾们解答。我用的是a...
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
上面是写的程序。还有编译信息栏里的话。
望高人指点 展开
我用的是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个回答
优特美尔电子
2024-11-20 广告
2024-11-20 广告
优特美尔商城是深圳市优特美尔电子有限公司所属的一站式电子元器件采购平台, 依托创始人在电子元器件18年的积累,目前平台汇集了近 3000家品牌供应商、近3000万现货SKU,海内外注册用户超过3万,日均询单2000+。 优特美尔商城基于货源...
点击进入详情页
本回答由优特美尔电子提供
展开全部
你把“#pragma interrupt_handler timer0_ovf_isr:17”这句话放错地方了,应该放在头文件包含的下面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还没设置定时器工作模式
TCCR1A=0X04;
TCCR1A=0X04;
追问
谢谢,我用的是tc0,怎么要设置tc1 呢?我觉得最重要的是编译栏里的这句话。
../lesson2.c:18: warning: ignoring #pragma interrupt_handler timer0_ovf_isr
其中一个单词ignoring 是忽略的意思。编译器忽略了这个中断向量。
追答
TCCR1A 定时器0
TCCR1B定时器1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询