有对PICC比较有研究的朋友吗?偏移的功能程序中,如果中断服务函数中有if判断,则程序会跑

2020-02-10 08:50发布

最近在写boot,PIC16F886,分别将功能和引导分两个project编译,再手工将两个.hex合到一起。当然功能程序编译的时候会offset

调试过程中发现了一个问题,进入中断后,编译出的汇编代码会将PC的高位字节清零。如果中断函数中有if判断(PIC16系列只有一个中断向量,使用超过一种中断时,都要判断中断标志位,确定是何种中断),就会有汇编的goto语句,此时我的功能代码是offset之后的,goto之后就飞掉了(不偏移则不会飞掉)

很晕,不太理解PICC的这种行为,请教一下有经验的朋友
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
tomhe666
1楼-- · 2020-02-10 10:00
如果PC的高位字节清零,很明显应该是跳转都会发生在零页去了,16F886的中断向量应在零页的0x04位置吧.由于个人写PIC主要用汇编,用PICC用的少,所以不能帮你,只是觉得编译器应该不会犯这样的错
joylight
2楼-- · 2020-02-10 12:27
 精彩回答 2  元偷偷看……
sbsyr
3楼-- · 2020-02-10 17:35
pic16 系列的page和bank是一定要注意的,goto前设置一下到你的程序所在page. 返回是也是回到page0和bank0.至于为什么是这样,由当年的环境决定. pic24则没有这些问题.
joylight
4楼-- · 2020-02-10 18:07
多谢楼上的兄弟
我用C写得代码,没有goto语句,问题是编译器会编译出goto语句

一周热门 更多>