设计与开发

单片机复位后sp 跟电师傅学单片机(19):单片机控制转移指令图文讲解3

小编 2024-10-10 设计与开发 23 0

跟电师傅学单片机(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条单片机控制转移类指令讲解完毕,谢谢阅读!欢迎留言讨论,共同提高!

51单片机复位后的状态

单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。

值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。

说明:表中符号*为随机状态;

A=00H,表明累加器已被清零;

PSW=00H,表明选寄存器0组为工作寄存器组;

SP=07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;

Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;

IP=×××00000B,表明各个中断源处于低优先级;

IE=0××00000B,表明各个中断均被关断;

系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。

51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,(在特殊寄存器介绍时再做详细说明)至于内部RAM内部的数据则不变。

相关问答

关于 单片机 堆栈指针 sp 变化的问题1.如果(DPTR)=507BH,( SP )=32...

[最佳回答]为什么不是(SP)=4FH?应该是4FH.问题二:那50H岂不是没利用到?50H是不用的.复位后,SP=07H.但是,07H就从来不用于堆栈.第一次压栈,是压入了08H单元...

单片机 测试题二,填空题(共5题,每空1分)1. 复位 SP 的值为__...

[最佳回答]分开答吧,我答前几题.后面的朋友继续.二,填空题(共5题,每空1分)1.复位时SP的值为_07H____,P1口的值为__0FFH_____.2.MCS-51单片机存储器物理上分...

单片机复位 是什么意思?有什么作用-ZOL问答

单片机复位是什么意思?有什么作用讨论回答(6)首先你要知道单片机是属于数字电路,数字电路就只有“0”低电平和“1”高电平两个状态。这两状态是已知状态...

单片机 测试题二,填空题(共5题,每空1分)1. 复位 SP 的值为__...

[最佳回答]串你仙之橘卜给阶地机馍毛2苞闯感童画辟惠具科凑宪茁逢昭东瓮闪晰针

【有谁会做这5道关于 单片机 的填空题1. 单片机复位 时PC=H, SP =H...

[最佳回答]1.0000H,07H,第0组2.程序,数据,三,SFR,21个3.没看懂你的空在哪?可以看成是数据总线,地址总线和控制总线!4.外部中断0,外部中断1,定时/计数器0...

STC89c52 单片机 的手动 复位 按键的 复位 原理?

手动复位,是不用写程序的,单位机的RST脚就是复位脚,下拉32768个时钟周期就会产生复位,程序SP指针会跑到单片机程序区的起始位置手动复位,是不用写程序的,单位...

51 单片机 sp 寄存器多少位?

151单片机的sp寄存器是8位的。251单片机是一种8位的微控制器,其寄存器的位数也是8位。SP寄存器是栈指针寄存器,用于指向栈的顶部位置,其位数也是8位。38位...

SP 单片机 中是什么寄存器有什么作用?

你没有说是什么单片机产品,各单片机定义不同。如果是MCS-51单片机,SP指的是堆栈指针寄存器StackPointer,指示堆栈的栈顶地址,定位要入栈或出栈的数据的存放位...

单片机 中( SP )=60H是什么意思?

单片机汇编中#都是表示立即数,这里MOV的对象不同,前者是A即ACC是普通的寄存器,存放的数据没有特殊含义;后者SP是堆栈指针,存放的数据会被看做是堆栈栈顶的偏...

MCS-51 单片机 汇编语言的 SP 指令有什么作用?

MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时...

猜你喜欢