打印
[PIC®/AVR®/dsPIC®产品]

xc8编译器问题

[复制链接]
2485|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pkrn|  楼主 | 2017-11-3 14:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
用xc8写的程序在没有做地址偏移前程序可以正常运行,在设置了地址偏移后定时器中断就不准确了。xc8地址偏移后中断向量会自动偏移吗,还是要人工加上偏移地址。另外xc8中bootloader跳转到程序空间的汇编语句是什么
沙发
yklstudent| | 2017-11-3 14:40 | 只看该作者
goto应该可以

使用特权

评论回复
板凳
yqdeso| | 2017-11-3 15:48 | 只看该作者
地址偏移之后中断向量也是会偏移的

使用特权

评论回复
地板
pkrn|  楼主 | 2017-11-3 16:52 | 只看该作者
本帖最后由 pkrn 于 2017-11-3 17:03 编辑
yqdeso 发表于 2017-11-3 15:48
地址偏移之后中断向量也是会偏移的

偏移的是中断入口,中断向量应该还是0x0004。我这是想用bootloader烧入的程序。pic18的可以像图片上那么设置,pic16怎么设置

1232.png (39.49 KB )

1232.png

使用特权

评论回复
5
yqdeso| | 2017-11-17 14:07 | 只看该作者
pkrn 发表于 2017-11-3 16:52
偏移的是中断入口,中断向量应该还是0x0004。我这是想用bootloader烧入的程序。pic18的可以像图片上那么设 ...

psect

使用特权

评论回复
6
yuanlu20082002| | 2017-11-22 08:31 | 只看该作者
我也最近在搞BOOTLOADER,没加中断正常,加了中断就不行了!
还有些两次FLASE就不能重新擦除了!
可以一起探讨了吗
QQ:50582419
//---------------------------------------------------------------------------//
void    interrupt  service_isr()
{
    //asm ("pagesel" str(NEW_INTERRUPT_VECTOR));//pagesel
    //asm ("goto" str(NEW_INTERRUPT_VECTOR));
#asm         
          goto 0x604
#endasm      
                  NOP();
}

               //asm ("pagesel" str(NEW_RESET_VECTOR));
               //asm ("goto"  str(NEW_RESET_VECTOR));  //???????????ò
#asm
               goto   0x600
#endasm
根据XC编译自己生产的这两条语句根本不行,只能有GOTO去跳转。但没加中断正常,加了中断就不行了!              
//asm ("pagesel" str(NEW_RESET_VECTOR));
//asm ("goto"  str(NEW_RESET_VECTOR));  //???????????ò

使用特权

评论回复
7
pkrn|  楼主 | 2018-1-19 14:59 | 只看该作者
yuanlu20082002 发表于 2017-11-22 08:31
我也最近在搞BOOTLOADER,没加中断正常,加了中断就不行了!
还有些两次FLASE就不能重新擦除了!
可以一起 ...

boot中不能加中断,
//asm ("pagesel" str(NEW_INTERRUPT_VECTOR));//pagesel
//asm ("goto" str(NEW_INTERRUPT_VECTOR));这两句是可以用的。
我后来做的bootloader可以用了,只是flash烧写地址会出现错误,最后只能在编译时用ff把空地址堆填满

使用特权

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

本版积分规则

211

主题

273

帖子

1

粉丝