欢迎访问电子工程网!   登录 | 免费注册 ]   

jkm99的个人空间 http://www.eechina.com/space-uid-71395.html [收藏] [复制] [分享] [RSS]

博客

PIC单片机汇编语言编程问题-基于PIC12F509

已有 898 次阅读2014-2-12 19:50 |个人分类:单片机| 关键词: PIC单片机

;mpu:  PIC12F509
;CALL指令仅限于调用前半页的子函数。goto指令能跳转到一页的任何地方。
;如果要调用分布在程序页中任意地方的函数,可使用这样的方法:
 
    org 0x00 ;第0页
    goto  Start
;---------------------------------------
DoSomething_1:
      ...  ...
      retlw 0x00
 
Start:
    call  DoSomething_1;直接调用无需切换程序页
    ... ...
    bsf  STATUS,PA0 ;切换到函数DelayMs_V所在的程序页
    call DelayMs_V
    BCF  STATUS,PA0 ;切换回第0页
    ... ...
    bsf   STATUS,PA0
    call  Domething_2_V
    BCF   STATUS,PA0
 
;------------------------------------------------------
      org 0x200   ;第1页
;如果要调用分布在程序页中任意地方的函数,可使用这样的方法,call间接调用DelayMs函数
DelayMs_V: goto    DelayMs   ;goto可以跳转到一个程序页的任何地方
DoSomething_2_V: GOTO   DoSomething_2
 
;---------------------------------------
    ... ...
;----------------------------------------
DoSomething_2:
   ... ...
   call  DelayMs_V  ;分布在同一页中的函数之间的调用不需要切换程序页。
   ... ...
     retlw  0x00
;----------------------------------------
org  0x360
DelayMs:
      ... ...
      retlw 0x00
;---------------------------------------------------
子函数最好不要跨页,不易于管理。
分布在同一页中的函数之间调用时不需要切换到该页。
分布在不同页中的函数之间调用时要先切换到被调用函数所在的程序页,函数调用结束在切换回之前的程序页。见上述例子。
 

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

回顶部