xc8编译器问题

[复制链接]
1653|11
 楼主| chenho 发表于 2019-12-19 22:42 | 显示全部楼层 |阅读模式
用xc8写的程序在没有做地址偏移前程序可以正常运行,在设置了地址偏移后定时器中断就不准确了。
lizye 发表于 2019-12-19 22:51 | 显示全部楼层

然后呢?你是怎么应对这个的呢        
 楼主| chenho 发表于 2019-12-19 22:58 | 显示全部楼层
xc8地址偏移后中断向量会自动偏移吗,还是要人工加上偏移地址。另外xc8中bootloader跳转到程序空间的汇编语句是什么
hanwe 发表于 2019-12-19 23:01 | 显示全部楼层
goto应该可以
langgq 发表于 2019-12-19 23:07 | 显示全部楼层
地址偏移之后中断向量也是会偏移的
 楼主| chenho 发表于 2019-12-19 23:11 | 显示全部楼层
偏移的是中断入口,中断向量应该还是0x0004。我这是想用bootloader烧入的程序。pic18的可以像图片上那么设置,pic16怎么设置
 楼主| chenho 发表于 2019-12-19 23:14 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wenfen 发表于 2019-12-19 23:17 | 显示全部楼层
我也最近在搞BOOTLOADER,没加中断正常,加了中断就不行了!
还有些两次FLASE就不能重新擦除了!
wenfen 发表于 2019-12-19 23:24 | 显示全部楼层
//---------------------------------------------------------------------------//
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));  //???????????ò
 楼主| chenho 发表于 2019-12-19 23:27 | 显示全部楼层

boot中不能加中断,
//asm ("pagesel" str(NEW_INTERRUPT_VECTOR));//pagesel
//asm ("goto" str(NEW_INTERRUPT_VECTOR));这两句是可以用的。
我后来做的bootloader可以用了,只是flash烧写地址会出现错误,最后只能在编译时用ff把空地址堆填满
zhuomuniao110 发表于 2019-12-20 00:14 | 显示全部楼层
那样跟启动文件的MAP不同了。
yiy 发表于 2019-12-23 23:37 | 显示全部楼层
难以理解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部