AVR定时器中断有个警告不知怎么解决
警告是这样的 unknown #pragma interrput_handler_miao程序是想在数码管前两位显示一个一分钟的计数器,但是数码管根本不走.
能帮我看看吗?程序好像真没问题哎,是不是编译器设置问题啊
#include<iom16v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
#pragma interrput_handler_miao:9
#pragma data:code
flash uchar table={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
uint num;
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<600;j++);
}
void show(uchar add,uchar date)
{
DDRD|=0xf0; //设置PD口高四位为输出模式,低四位模式不变
PORTD=BIT(add+3);//打开位选
DDRB=0xff;
PORTB=table;//段选
delay(5);
}
void init(void)
{
TCCR1B=0x04;
TCNT1H=0x85; //装初值,先写高位在写低位
TCNT1L=0xED; //读则相反
TIMSK|=BIT(2);
SREG|=BIT(7);
}
void miao(void)
{
num++;
if(num==60)
num=0;
TCNT1H=0x85;
TCNT1L=0xED;
}
void main(void)
{
uchar shi,ge;
num=0;
init();
while(1)
{
shi=num/10;
ge=num%10;
show(1,shi);
show(2,ge);
// show(3,2);
// show(4,3);
}
} 本帖最后由 zhujinliang2124 于 2013-5-21 23:09 编辑
楼主用的什么编译器?
Winavr或者说Gccavr,代码不是这样写的 zhujinliang2124 发表于 2013-5-21 22:58 static/image/common/back.gif
楼主用的什么编译器?
Winavr或者说Gccavr,代码不是这样写的
我用的是ICCAVR 我用的是ICCAVR
Have you read the compiler manual? w灰太狼x 发表于 2013-5-22 07:52 static/image/common/back.gif
我用的是ICCAVR
中断就衔接不上,建议你直接在ICCAVR里设置好想要的参数,直接生成初始化程序
#pragma interrupt_handler int1_isr:iv_INT1 //外部中断入口
void int1_isr(void)
{
...
} 搜了一个ICCAVR的中断例子,其中一段是这样写的,楼主对照这个改改看看:
#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
//external interupt on INT0
i++;//在中断里进行操作
}
相关链接:http://www.avrvi.com/avr_examples/interrupt.html millwood0 发表于 2013-5-22 08:20 static/image/common/back.gif
Have you read the compiler manual?
没怎么读,才入手. zhujinliang2124 发表于 2013-5-22 08:23 static/image/common/back.gif
搜了一个ICCAVR的中断例子,其中一段是这样写的,楼主对照这个改改看看:
#pragma interrupt_handler int0 ...
谢谢,我试试看. zhpowerpcb 发表于 2013-5-22 08:22 static/image/common/back.gif
中断就衔接不上,建议你直接在ICCAVR里设置好想要的参数,直接生成初始化程序
#pragma interrupt_handle ...
这个怎么设置呢?我才入手,不太会设置啊 zhpowerpcb 发表于 2013-5-22 08:22 static/image/common/back.gif
中断就衔接不上,建议你直接在ICCAVR里设置好想要的参数,直接生成初始化程序
#pragma interrupt_handle ...
我用的是定时器中断,不是外不中断啊 本帖最后由 zhujinliang2124 于 2013-5-22 09:10 编辑
w灰太狼x 发表于 2013-5-22 09:07 static/image/common/back.gif
我用的是定时器中断,不是外不中断啊
学人家说话就是了:
#pragma interrupt_handler int0_isr:2
中间是断开的
另可猜测int0_isr指的是后面的中断服务函数,2指的是中断号, 把这两个改成自己的 zhujinliang2124 发表于 2013-5-22 09:09 static/image/common/back.gif
学人家说话就是了:
#pragma interrupt_handler int0_isr:2
中间是断开的
这个我知道,谢谢,偶尔可以冒几个数出来. #pragma interrput_handler_miao:9
==>
#pragma interrput_handler miao:9 interrupt 这个才是正确的 楼主英文估计比我都菜呵呵 开玩笑 yklstudent 发表于 2013-5-23 08:31 static/image/common/back.gif
interrupt 这个才是正确的 楼主英文估计比我都菜呵呵 开玩笑
原来是这样啊!万分感谢.说实话我英文重来没及格过.
页:
[1]