打印

PIC18F中断编译错误

[复制链接]
3161|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuf|  楼主 | 2011-5-21 23:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在一个工程里编译没问题,在另一个工程里就有问题,代码完全一样。
Error - file './timer.o', section 'InterruptVectorHigh', Symbol 'InterruptHandler' out of range of relative branch instruction.
Errors    : 1


//中断处理
#pragma code
#pragma interrupt InterruptHandler
void InterruptHandler(void)
{
  if(INTCONbits.TMR0IF==1)//1mS
  {
     TMR0L|=TIMER0_1MS_LOW;
     INTCONbits.TMR0IF=0;         // reset int0 flag
     time_1ms_flag=1;
  }   
}
//串口\timer0中断函数
#pragma code InterruptVectorHigh = 0x08
void InterruptVectorHigh(void)
{
_asm
bra InterruptHandler
_endasm
}

注释掉如下就没问题#pragma code InterruptVectorHigh = 0x08
void InterruptVectorHigh(void)
{
_asm
bra InterruptHandler
_endasm
}
沙发
yqp0424| | 2011-5-21 23:43 | 只看该作者
把中断处理放到下面,然后再在前面进行声明就行了

使用特权

评论回复
板凳
liuf|  楼主 | 2011-5-21 23:46 | 只看该作者
试了,不行,

使用特权

评论回复
地板
liuf|  楼主 | 2011-5-22 00:02 | 只看该作者
试了2个小时了,就是编译不过啊:dizzy:
去掉这句就过bra InterruptHandler

使用特权

评论回复
5
liuf|  楼主 | 2011-5-22 09:19 | 只看该作者
按这个顺序放就过了:L
void InterruptHandler(void)
void InterruptVectorHigh(void)
main()

使用特权

评论回复
6
snakeemail| | 2011-5-22 10:24 | 只看该作者
估计是要声明在前

使用特权

评论回复
7
liuf|  楼主 | 2011-6-15 10:55 | 只看该作者
extern void InterruptHandler(void);
extern void InterruptVectorHigh(void) ;
void InterruptHandler(void)
{...}
void InterruptVectorHigh(void)
{...}
main()
编译通过,后又增加了一段程序,编译又不过了!

使用特权

评论回复
8
liuf|  楼主 | 2011-6-17 14:26 | 只看该作者
没人碰到过这问题吗?

使用特权

评论回复
9
sjzzlxy| | 2011-6-17 16:38 | 只看该作者
#pragma interrupt interrupt_isr
#pragma code high_ISR = 0x08
void high_ISR( )
{
        _asm
        goto interrupt_isr
        _endasm
}
#pragma code
void interrupt_isr(void)
{
    if(PIR1bits.ADIF == 1)
    {
        PIR1bits.ADIF = 0;
        ADResult();
    }
}
这是我的中断程序,和你的不太一样 不知道bra 是啥 我以前还真没遇见过

使用特权

评论回复
10
diweo| | 2011-6-17 19:35 | 只看该作者
Symbol 'InterruptHandler' out of range of relative branch instruction不是提示超出寻址范围了么?

BRA 无条件跳转
语法: BRA n
操作数: -1024 ≤ n ≤ 1023

使用特权

评论回复
11
liuf|  楼主 | 2011-6-20 13:39 | 只看该作者
bra 换成goto 就行了,试了好几天的才找到解决办法。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

106

帖子

1

粉丝