繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 博客文章精选 >> 单片机-----博客 >> 在程序中使用宏实现跨PAGE调用和跳转
在程序中使用宏实现跨PAGE调用和跳转
作者:   来源: 发表时间:2006-12-08  字号:  

在程序中使用宏实现跨PAGE调用和跳转【转】

以前看过不求深究,理解了~~

义隆的单片机如果不使用PAGE的概念,那么大小会被限制在1K范围内。
当开发稍微复杂些的产品的时候,不可避免的需要使用PAGE来保证程序的
正确流程,并且可以允许在超过1K的地址空间。
关于PAGE相关的Register有:R2和R3。PC是个8bit的寄存器,可以查
询和修改PC的A0-A9。STATUS中有几个BIT表示PAGE选择器。分别为PS0、
PS1(此为EM78P447,更大的单片机还有PS2、PS3等)。
当有JMP或CALL发生的时候,PC的整个地址会被压栈,高位地址使用
PS0、PS1作为A10、A11,A0-A9使用JMP或CALL指定的地址。当RET、RETI
或RETL发生的时候,从堆栈中弹出完整的PC,注意这里是完整的A0-A11。
这样就可以实现对其他PAGE子程序的调用了。
看EMC提供的Far Call宏,第一行为宏定义;第二行指令实现PAGE寄存
器的修改;第三行产生真正的call,去调用其他page的子程序;第四行在
把PAGE寄存器修改为当前PAGE。CALL为什么可以正常返回?请看上面的叙述
“从堆栈中弹出完整的PC”。
FCALL MACRO ADDRESS
PAGE ADDRESS / 0X400
CALL ADDRESS % 0X400
PAGE $ / 0X400
ENDM
这样,使用这个宏,就不用再独立考虑PAGE的问题了。Far Jmp的宏大家
可以参考上面的解释去理解。
FJMP MACRO ADDRESS
PAGE ADDRESS / 0X400
JMP ADDRESS % 0X400
ENDM

!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: 义隆单片机risc指令:bsbc指令一个容易忽略导致问题的现象
  • 下一篇: 为arm,51与优盘进行串口通信的东东

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网