打印

PIC跨页跳转的一个疑问

[复制链接]
3271|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c4fantasy|  楼主 | 2009-4-18 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,本人单片机初学者,废话不多,直奔主题

现在用PIC16F914芯片。PIC的程序存储器分4页PAGE0-3

那么如果我在第一页用”CALL“调用第二页的子程序,而第二页的子程序中又调用同样为第二页的子程序,那么其中的RETURN回到哪里?
比如

ORG 0X0004 第0页存储
PAGESEL AAAA
CALL AAAA
PAGESEL $

ORG 0X0800 第一页存储
AAAA NOP
CALL BBBB;这句之前是否还用加PAGESEL BBBB,觉得应该不用,PCLATH已经指向第一页了
RETURN;这个RETURN 回到第0页的CALL AAAA下一句,PCLATH仍然指向第一页
BBBB NOP
RETURN;这个RETURN回到哪里呢??????书上说RETURN强制清零回到第0页?而我这个RETURN的目的是回到第一页的CALL BBBB下一句。


说的可能不太明白,不过我想这个是很多初学者遇到过的问题。搜索半天没找到这种情况,希望懂得的高手不吝赐教,谢谢了



沙发
c4fantasy|  楼主 | 2009-4-18 09:39 | 只看该作者

不好意思,第一次发帖打错了

SORRY,前几行说明打错了
是第0页和第一页间跳转

使用特权

评论回复
板凳
machunshui| | 2009-4-18 14:05 | 只看该作者

硬件堆栈里存贮是全部13位PC,返回时PCLATCH不受影响

ORG 0X0004 ;第0页存储
PAGESEL AAAA ;PCLATCH指向第1页
CALL AAAA
PAGESEL $

ORG 0X0800 第一页存储
AAAA NOP
CALL BBBB;;不用加PAGESEL BBBB,此时PCLATCH指向第1页
RETURN;;返回到第0页的CALL AAAA下一句,PCLATH仍然指向第1页
BBBB NOP
RETURN;;返回到CALL BBBB之后一条语句

使用特权

评论回复
地板
machunshui| | 2009-4-18 14:20 | 只看该作者

总结

CALL的时候:

当前13位PC ------> 13位硬件堆栈
PCL+PCLATCH------->PC跳转到目的地

RETURN的时候:

13位硬件堆栈--------->当前13位PC 
PCLATCH不受影响

使用特权

评论回复
5
c4fantasy|  楼主 | 2009-4-18 20:19 | 只看该作者

恩 ,谢谢了,基本看明白 受教了~


3Q~~~~~

使用特权

评论回复
6
yewuyi| | 2009-4-18 20:39 | 只看该作者

找本张明峰先生的书看看,基本问题都讲解的很清楚了

使用特权

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

本版积分规则

9

主题

160

帖子

1

粉丝