新手学习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
上面是写的程序。还有编译信息栏里的话。
望高人指点 展开
展开全部
你把“#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询