当前课程知识点:单片机原理及应用 >  3 指令系统 >  3.19 子程序相关指令 >  子程序相关指令

返回《单片机原理及应用》慕课在线视频课程列表

子程序相关指令在线视频

子程序相关指令

下一节:并口访问指令及指令小结

返回《单片机原理及应用》慕课在线视频列表

子程序相关指令课程教案、知识点、字幕

同学 你好

今天我们将学习子程序及相关的指令

我们在编写程序时

经常会把一些需要反复用到的功能程序段

编写为一个子程序

这样目的是可以简化程序的结构

为什么

因为在主程序中如果我们

需要用到该功能程序段

可以通过子程序调用指令去调用该功能程序段

该程序功能执行完之后

可以再通过子程序返回指令

返回到主程序的调用处

继续执行未完成的子程序

子程序调用和返回指令

本质上也是使程序发生转移

与前面我们学习过的转移指令类似

但是也有不同

因为子程序调用过程中

在程序转移时

CPU会先用堆栈保存主程序

调用指令处的下一条指令的地址

后面的子程序为什么要用这条指令呢

因为是为了后面的子程序返回做准备

我们可以先来看一看长调用指令

我们PPT中长调用指令LCALL

addr16

该指令执行时是先把下一条指令的

16位ROM地址压入堆栈保存

然后再跳转到16位addr16地址

指向的ROM单元去执行子程序

这里面的addr16为子程序起始地址

编程时我们一般的话都是用标号来代替

指令的调用的范围由于是16位

所以范围是64KB

这个是长调用指令

还有一个指令是绝对调用指令

ACALL addr11

该指令的执行方式和我们前面的

长调用指令LCALL类似

不同的地方在于指令中的地址addr11

它是11位

所以指令的调用范围就是2的11次方

只能是2KB

当然在编程时

可以用子程序的首地址的标号来代替

子程序返回指令为RET

具体的功能是从堆栈中弹出我们之前

调用指令保存的返回地址给程序计数器PC

这样话就实现了这个程序的返回

需要注意的是

子程序起始指令要使用标号

一般这个标号就是作为子程序的名字

执行返回指令RET之前

我们要保证栈顶的内容为主程序的返回地址

以便正确的返回主程序

具体的常用格式我们可以看PPT中

比如说主程序我们一般用MAIN来表示

在主程序MAIN中我们可以用一条LCALL

SUBR来实现子程序的调用

子程序中第一条指令一定要记住

加上标号SUBR作为子程序的名字

这个子程序的名字本质上

就是这个子程序第一条指令所在ROM单元的地址

在子程序的最后

一定要放一条返回指令RET

一定要放一条返回指令RET

实现子程序的返回

当我们的CPU在执行过程中

首先执行主程序

在主程序如果遇到了LCALL

CPU就会暂停正在执行的主程序

然后把LCALL的下一条指令

所在ROM单元的地址会压入堆栈保存

保存完之后然后会跳到子程序SUBR

我们知道SUBR就是一个地址

跳到子程序的第一条指令处

去执行子程序

当子程序执行完之后

CPU遇到RET就知道子程序要返回了

就会把压入堆栈的主程序的

LCALL下一条指令的地址弹出来给PC

自动的会跳到主程序LCALL下一条指令处

去继续的来执行剩下的主程序

以上的话就是我们单面机的

子程序的调用和返回的过程

在同学们今后的程序编写中

经常会用到子程序的调用

所以请同学们务必要仔细的体会

子程序的调用和返回指令的功能

好的

今天的课就到这里

同学们再见

单片机原理及应用课程列表:

1 单片机系统概述

-1.1 单片机的名称

--单片机的名称

-1.2 单片机的相关概念

--单片机的相关概念

-1.3 单片机的设计语言及软件

--单片机的设计语言及软件

-1.4 单片机的发展

--单片机的发展

-1.5单片机的应用

--单片机的应用

-1.6 第一单元作业

2 单片机的硬件结构

-2.1 单片机的结构框图

--单片机的结构框图

-2.2 80C51内部结构

--80C51内部结构

-2.3 信号引脚

--信号引脚

-2.4 内部数据存储器RAM

--内部数据存储器RAM

-2.5 特殊功能寄存器

--特殊功能寄存器

-2.6 堆栈

--堆栈

-2.7 内部程序存储器ROM

--内部程序存储器ROM

-2.8 存储器的结构特点

--存储器的结构特点

-2.9 并行输入输出接口电路

--并行输入输出接口电路

-2.10 并口功能与时序

--并口功能与时序

-2.11 工作方式

--工作方式

-2.12 最小应用系统

-- 最小应用系统

-2.13 第二单元作业

3 指令系统

-3.1 指令格式

--指令格式

-3.2 立即寻址与直接寻址

--立即寻址与直接寻址

-3.3 寄存器寻址与寄存器间接寻址

--寄存器寻址与寄存器间接寻址

-3.4 变址间接寻址与位寻址

--变址间接寻址与位寻址

-3.5 内部RAM传送指令

--内部RAM传送指令

-3.6 外部RAM传送指令

--外部RAM传送指令

-3.7 ROM传送指令

--ROM传送指令

-3.8 交换指令

--交换指令

-3.9 堆栈操作指令

--堆栈操作指令

-3.10 传送类指令习题讲解

--传送类指令习题讲解

-3.11 算术运算类指令特点

--算术运算类指令特点

-3.12 加法指令

--加法指令

-3.13 加法习题、减法和乘除指令

--加法习题、减法和乘除指令

-3.14 逻辑运算指令

--逻辑运算指令

-3.15 布尔变量操作指令

--布尔变量操作指令

-3.16 无条件转移指令

--无条件转移指令

-3.17 条件转移指令

--条件转移指令

-3.18 循环转移指令

--循环转移指令

-3.19 子程序相关指令

--子程序相关指令

-3.20 并口访问指令及指令小结

--并口访问指令及指令小结

-3.21 第三单元作业

4 汇编语言程序设计

-4.1 汇编程序约定

--汇编程序约定

-4.2 宏指令

--宏指令

-4.3 汇编控制指令

--汇编控制指令

-4.4 汇编语言程序设计步骤

--汇编语言程序设计步骤

-4.5 顺序程序举例

-- 顺序程序举例

-4.6 单重分支结构

--单重分支结构

-4.7 多重分支结构

--多重分支结构

-4.8 单重循环结构

--单重循环结构

-4.9 计数控制循环程序

--计数控制循环程序

-4.10 特征控制循环程序

-- 特征控制循环程序

-4.11 多重循环程序

--多重循环程序

-4.12 子程序的概念

--子程序的概念

-4.13 子程序设计注意事项

--子程序设计注意事项

-4.14 子程序举例

--子程序举例

-4.15 第四单元作业

5 单片机存储器扩展

-5.1 系统扩展

--系统扩展

-5.2 51单片机扩展方法

--51单片机扩展方法

-5.3 存储器单元位数扩充方法

--存储器单元位数扩充方法

-5.4 存储器容量单元扩充方法

--存储器容量单元扩充方法

-5.5 译码线选法

--译码线选法

-5.6 程序存储器的类型

--程序存储器的类型

-5.7 程序存储器的扩展

--程序存储器的扩展

-5.8 数据存储器的扩展

--数据存储器的扩展

-5.9 存储器综合扩展

--存储器综合扩展

-5.10 单片机存储器系统的特点

-- 单片机存储器系统的特点

-5.11 第五单元作业

6 中断与定时系统

-6.1 中断技术

--中断技术

-6.2 中断优先级及中断系统内部结构

--中断优先级及中断系统内部结构

-6.3 中断控制寄存器及中断响应过程

--中断控制寄存器及中断响应过程

-6.4 中断请求的撤消

--中断请求的撤消

-6.5 外部中断举例

--外部中断举例

-6.6 定时器/计数器

--定时器/计数器

-6.7 定时计数器工作方式及程序编写

--定时计数器工作方式及程序编写

-6.8 定时器举例

--定时器举例

-6.9 第六单元作业

7 I/O扩展及应用

-7.1 并行接口

-- 并行接口

-7.2 并口举例

--并口举例

-7.3 并口扩展芯片

--并口扩展芯片

-7.4 8155连接方式及编程

--8155连接方式及编程

-7.5 键盘接口技术

--键盘接口技术

-7.6 按键处理程序及举例

--按键处理程序及举例

-7.7 键盘扫描子程序

-- 键盘扫描子程序

-7.8 显示接口技术

--显示接口技术

-7.9 多位字符静态显示

--多位字符静态显示

-7.10 多位字符动态显示

--多位字符动态显示

-7.11 第七单元作业

8 单片机实验

-8.1 流水灯控制系统设计

--html

-8.2 数码管显示系统设计

--html

-8.3 按键控制系统设计

--html

-8.4 中断控制系统设计

--html

-8.5 定时计数器系统设计

--html

-8.6 串口通信系统设计

--html

-8.7 汉字显示系统设计

--html

-8.8 单片机烧录方法

--单片机烧录方法

-8.9 第八章作业-作业

子程序相关指令笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。