单片机/MCU论坛
直播中

438034

12年用户 16经验值
私信 关注
[文章]

初学者问题..........

            ORG    0000H                               //伪指令 表示程序从地址0000h开始
             AJMP   MAIN                                //跳转到MAIN
             ORG    0030H                               //主程序0030h开始

MAIN:    MOV    P0,#0FEH                             //点灯
             ACALL  DEL                                 //调用子程序DEL 维持二极管的点亮   
             MOV    P0,#0FFH                            //熄灯               

             ACALL  DEL                                 //
             AJMP   MAIN                                // 跳转到MAIN

DEL:    MOV    R5,#04H                             //延时子程序   
DEL1:   MOV    R6,#0FFH                            //

DEL2:   MOV    R7,#0FFH                            //
DEL3:   DJNZ   R7,DEL3                             //  内容-1 后判断若为0向下执行否则跳转到本身
            DJNZ   R6,DEL2                             //  内容-1 后判断若为0向下执行否则跳转到del2
            DJNZ   R5,DEL1       //  内容-1 后判断若为0向下执行否则跳转到del1
            RET
  
           END
问题:
1:AJMP   MAIN  这一句直接跳转到了MAIN 这个地方 ORG 0030H  这句话怎么能执行呢?
2:DEL:   MOV    R5,#04H    把04 送个R5更延迟时间有什么关系呢?还有书上说他会返回 那他怎么知道返回到哪里呢?难道是中断保护码?在跳转的时候 地址都保存起来了再返回的时候 调用出来??
3:ACALL 下面的AJMP  跳转到MAIN 这样不是成为死循环了 ,还是说 执行了这句 他还会往下执行下去的?
4:DJNZ R6,DEL2 这一句内容-1如果为0象下执行否者 跳转  这里的DEL2是有什么用的?是告诉他要跳转的地方吗?他跳转的时候 是直接返回还是直接往下执行?? 既然已经跳转了R6的值又一次的被赋予0ffh 那下面的-1还有什么用呢?下面那句也是

更多回帖

发帖
×
20
完善资料,
赚取积分