跟电师傅学单片机(19):单片机控制转移指令图文讲解3
一:绝对调用指令
绝对调用指令表
在实际单片机程序编程中,有时需要在主程序里面引用另外一段程序,引用的程序一般称为子程序,子程序可以多次反复调用,用起来很方便,还减少了编程程序的长度。
比如,要用到一个延时程序。怎么用呢?就是要把延时程序存放到程序存储器ROM单元中,只要知道存放的地址,用这个指令ALL addr11就可转去运行这个延时程序,运行完后还能返回。
addr11:调用程序的范围:2的11次方=2K
ALL addr11绝对调用指令最大的特点:调用了还能回来。
前面讲的有条件和无条件指令是:转走了就不用回来了。
但是它们类似的地方: 都是转移指令。
ALL addr11指令功能:
子程序短调用指令。是主程序调用子程序,调用子程序的范围是2KB。
PC:是单片机程序计数器,程序从哪里执行,完全由PC里的内容决定,始终是指定下一条将要执行指令的地址(是16位地址),单片机系统上电或复位时,PC的初始值为0000H。
SP:是51单片机堆栈指针,是一个专用的8位寄存器,系统复位后,SP初始化为07H,使得堆栈指针实际上是由08H单元开始。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。
二:长调用指令
长调用指令表
addr16:调用程序的范围:2的16次方=64K
ALL addr16指令功能:
子程序长调用指令,也称为远程调用指令。是主程序调用子程序,调用子程序的范围是64KB。
三:返回指(2条)
返回指令表
RET指令功能:
是子程序返回指令。是使子程序返回主程序。RET返回指令要与调用指令成对出现,缺一不可,否则会出现错误。
RET返回指令使用时应放在子程序的末尾,该指令可从堆栈中取出断点地址,送回是单片机程序计数器PC,并从断点处开始继续执行程序,即是单片机程序计数器PC指向主程序调用该子程序指令的下一个地址。
RETI指令功能:
中断子程序返回指令,使中断子程序返回主程序。
RET指令和RETI指令共同点:
基本功能是相同的,都是使子程序返回主程序,使单片机程序计数器PC指向下一个地址的指令。
RET指令和RETI指令区别:
在执行RETI指令时,还将清除中断响应时所置位的优先级状态触发器,开放中断逻辑,使得已申请的较低级的中断源可以响应。
四:空操作指令
空操作指令表
NOP指令功能:
空操作指令,它不作任何操作,但要消耗一个机器周期的时间,一般用于单片机程序延时或等待。
到此为止,17条单片机控制转移类指令讲解完毕,谢谢阅读!欢迎留言讨论,共同提高!
小小单片机(二)
今天继续给大家介绍单片机的小知识,在(一)的介绍里小白给大家介绍了单片机类型,以及常用的一些命令符号,今天小白给大家介绍一些单片机的小程序以及具体讲解。
我们常用的单片机开始命令
ORG 0000H 表明的意思是程序在0000H的字节上开始
JMP 0030H 表明的意思是跳转到0030H字节
ORG 0030H 表明在0030H字节处开始程序
由上面的3个代码表明正式的程序从0030H
这是简单的开始指令以及跳转指令,下面给大家讲一下单片机的堆栈指令我们单片机里面的常见程序是PUSH,POP。它们的作用是:PUSH表明的是入栈指令这条命令是将堆栈针SP+1,然后将direct内容送到堆栈针SP中的RAM中。具体例子:当(SP)=60H,(A)=30H,(B)=70H。
执行命令:
PUSH A ;(SP)+1=61H→SP,(A)→61H
PUSh B ;(SP)+1=62H→SP,(B)→62H
这是堆栈命令的入住那,但是小白提醒大家一定记得要把A,B里的内容放在地址,不是A,B放进去!!!
出栈命令:POP表明将SP里的内容送到direct,堆栈指针—1
具体例子:当(SP)=62H,(62H)=70H,(61H)=30H
执行命令
POP DPH ;(SP)→DPH,(SP)-1→SP
POP DPL ;(SP)→DPL, (SP)-1→SP
结果为:(DPTR)=7030H,(SP)=60H
上面是单片机中比较基础的几个指令,希望自学的朋友可以收藏学习一下,这些只是小白和大家说的单片机知识中的一点点,希望大家可以慢慢学习,单片机是我们机械设计中的简单控制部分,但是也是学机械中不可缺少的一点点希望想自学机械朋友可以从基础一点点做起,把基本功做扎实!
小白是一个机械专业大二的学生,平时给大家分享一些关于机械方面的知识,有的方面介绍不周希望大家谅解。
文章仅作者所想,内容仅供参考
相关问答
【假设 单片机 的 sp 的值为43,执行一条lcall指令后, sp 等于,求过...[最佳回答]SP先加1,后存数据到SP指向的地址.所以,执行LCALL指令后,SP先加1,再把LCALL指令后面的指令的地址保存到堆栈中...SP先加1,后存数据到SP指向的地址...
51 单片机 的 sp 是什么?51单片机的sp是堆栈指针因为单片机里sp是堆栈指针。堆栈指针SP英文全称为stackpointer,是单片机控制器的组成部件之一,与时控制逻辑电路、指令寄存器译码器...
什么是堆栈?堆栈指针的 SP 的作用是什么?8051 单片机 堆栈容量不超过多少字节?堆栈:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和...
单片机中 ( SP )=60H是什么意思?单片机汇编中#都是表示立即数,这里MOV的对象不同,前者是A即ACC是普通的寄存器,存放的数据没有特殊含义;后者SP是堆栈指针,存放的数据会被看做是堆栈栈顶的偏...
51 单片机 的堆栈指针 sp 始终是指向?我学的是单片机。在堆栈里,sp加一,然后入栈;出栈,然后sp减一。所以新开的和销毁的内存都是当前sp指向的。我没学过编程思想,硬来答,或许不好,但是我坚信单...
单片机sp 加括号和不加有区别吗?单片机SP加括号和不加是有区别的:1、加括号,表示是地址存储的值,比如:x=[SP],表示将栈顶的值赋值给变量x。2、不加括号,表示寄存器值,也就是地址,比如...单...
单片机 pop指令?1:是什么pop指令是单片机中的一个指令,用于将栈顶数据出栈。1.在单片机中,栈是用来存储临时数据和函数调用的返回地址等信息的一种数据结构。栈遵循先进后...
80c51系列 单片机 有21个特殊功能寄存器其中ip为什么tcon为什么, sp 是什么psw?ip是中断优先级寄存器,负责几个中断源的中断优先级设置,每个中断源只能设置成高或低2种;tcon是中断源控制寄存器,负责定时器和外部中断的开启和标志查询;S...
单片机 pusha表示什么?如果是51单片机,那么没有PUSHA指令,可以是PUSHAcc。进栈时,看你的SP开在什么地方,先要对SP加1,再进栈。例如:MOVSP,#60HPUSHACC那么,执行PUSHACC时,先SP+.....
单片机 复位后堆栈指针 sp 的值?当单片机复位后,堆栈指针(StackPointer,SP)的初始值通常由芯片的硬件设计或复位电路决定。这个初始值可以在单片机的数据手册中找到,通常是一个预设的默认...