51单片机 ,SP自动跳转

作者&投稿:纪知 (若有异议请与网页底部的电邮联系)
51单片机跳转指令和转移指令的区别?~

ACALL addrll 调用子程序

AJMP addrll 调转地址执行程序,无返回

ORG 001BH
AJMP TIMER1 ;定时器1的中断处理
中断有返回

将SP减2再jmp回来,容易乱

方法1:
MOV DPTR ,#LOCA ;取得JMP @A+DPTR的地址(PC)
MOV A,#4 ;跳转步长
LOCA:
JMP @A+DPTR
(注:JMP @A+DPTR是一条1字节的指令,执行该条指令后PC=LOCA+1,如果想取该指令之后的PC,可以用方法2)

方法2:
MOV DPTR ,#LOCA ;取执行JMP @A+DPTR后的地址(PC)
MOV A,#4 ;跳转步长
JMP @A+DPTR
LOCA:
程序行1
程序行2
……
……
……
程序行N

方法3(程序跳转表):
MOV DPTR ,#LIST ;取程序跳转表首地址
MOV A,R0 ;取跳转偏移(跳转偏移存在R0中)
JMP @A+DPTR
程序行1
程序行2
……
……
……
程序行N
LIST:
SJMP FUN1
SJMP FUN2
SJMP FUN3
……
FUN1:
……
FUN2:
……
FUN3:
……

SP为堆栈指针寄存器,其复位值为07H,这个值可以理解为它的缺省值;当执行lcall指令时,SP=(SP)+2,即为09H.


竹山县13046226111: 51单片机 如何利用程序指针实现跳转 -
斐刚小儿: 方法1: MOV DPTR ,#LOCA ;取得JMP @A+DPTR的地址(PC) MOV A,#4 ;跳转步长 LOCA: JMP @A+DPTR (注:JMP @A+DPTR是一条1字节的指令,执行该条指令后PC=LOCA+1,如果想取该指令之后的PC,可以用方法2) 方法2: ...

竹山县13046226111: 51单片机的堆栈指针sp始终是指向 -
斐刚小儿: mcs-51单片机汇编语言中,没有sp这条指令,只有针对sp操作的指令.51单片机中sp是堆栈指针寄存器,存放着当前堆栈地址.堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值. 除了初始化堆栈...

竹山县13046226111: 求一个51单片机跳转指令或程序 明白的进 -
斐刚小儿: CJNE A,#0FH LOOP将A的内容与0FH比较,若相等则顺序执行下一条指令,若不相等则跳到标号LOOP处执行程序. 1, 等时往下执行 SJMP WAIT 跳回WAIT处执行MOVX A,@DPTR 2, 不相等时 跳到LOOP处,可降LOOP放在SJMP WAIT下一行 CJNE A,#0FH LOOP SJMP WAIT LOOP:

竹山县13046226111: MCS - 51单片机汇编语言的SP指令有什么作用? -
斐刚小儿: 设置了堆栈的栈底,以后就在此地址的上面,作为堆栈空间; 其它指令,一般来说是 不应该 再使用这片地址. ---- 把30H赋给了SP,称为设置栈底.以后: PUSH ACC ,就把ACC的内容存放到31H单元; PUSH PSW ,就把PSW的内容存放到32H单元; PUSH B ,就把B的内容存放到33H单元. …… 弹出时,要用POP指令. 利用堆栈,就不用管具体的内容存放在什么单元了,SP会自动管理.

竹山县13046226111: 什么是堆栈,51单片机堆栈指针SP的使用 -
斐刚小儿: 在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场.要点:堆,队列优先,先进先出(FIFO—first in first out)[1] .栈,先进后出(FILO—First-In/Last-Out).

竹山县13046226111: 51单片机汇编程序跳转问题, -
斐刚小儿: 不能跳转到子程序或从一个子程序跳转到另一个子程序,这主要是牵涉到子程序的调用有现场保护也就是堆栈的问题,如果跳转到其他子程序,那么返回时就会破坏这个被保护的现场,出现一些未知的结果.

竹山县13046226111: 单片机的跳转指令为几个机器周期. -
斐刚小儿: 51 单片机,凡是转移类的指令,执行时间,都是 2 个机器周期.如:SJMP、AJMP、LJMP.还有 JMP @A+DPTR以及:JB/JNB、JC/JNC、JZ/JNZ、CJNE、DJNZ.还有:ACALL、LCALL、RET、RETI.

竹山县13046226111: 51单片机汇编程序入口后加的跳转指令"LJMP"是因为什么? 如:ORG 0 LJMP STAR ORG 0003H LJMP INT0S -
斐刚小儿: 要弄明白这个问题,你要对51单片机的中断有一个初步的了解,我可以给你介绍一下. 比方说你希望不管程序运行到哪里,只要你一按某个按键,就执行一段你预先写好的程序,然后再回到原来的地方继续.你按按键的动作可以视为单片机的...

竹山县13046226111: 单片机如何自动执行程序?
斐刚小儿: 单片复位后会自动跳转到0000H开始执行程序.普通指令执行后SP自动加1.读取下个内存单元的执行代码.

竹山县13046226111: 80C51单片机中,设置堆栈指针SP为37H后就发生了子程序调用,这时SP的值变为() -
斐刚小儿: 39H,调用子程序前先将当前程序地址PC压入堆栈,先低位后高位,PC占2字节,从38H压入

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网