当前课程知识点:单片机原理及应用 >  4 汇编语言程序设计 >  4.14 子程序举例 >  子程序举例

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

子程序举例在线视频

子程序举例

下一节:系统扩展

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

子程序举例课程教案、知识点、字幕

同学

你好

前面我们介绍了一下子程序设计应该

注意的问题

下面的话我们将通过一个具体的

例题让同学们体会一下如何设计

子程序以及主程序如何来调用子程序

这里面就会涉及到参数的传递

关键的问题

下面我们就来看一看这样一道例题

求两个无符号数据块中的最大的值

数据块的首地址的话

分别是50H和60H

每个数据块的第一个字节

存放的是该数据块的长度

找到的最大值结果

放入到48H单元

本例我们可采用

分别求出两个数据块里面的最大值

然后比较其大小的方法

求最大值的过程我们可以采用子程序

因为有两个数据块相当于什么呢

你要找这个数据块的最大值

这个功能要实现两次

因此我们就干脆把这个求某个数据块的

最大的这功能用一个子程序来实现

该子程序的名称我们叫QMAX

子程序的入口条件是

R1中存放有数据块的首地址

想要寻找的最大值

数据化的首地址

出口条件是

这个数据块的最大值我就要放到

累加器A中

下面我们就分别来编写主程序和子程序

我们先来看一看主程序

根据约定主程序是通过传地址的方式

来向子程序传递参数的

所以在主程序中我们先用MOV R1,30H

把第一个数据块的首地址传给

指定的工作寄存器R1

然后再通过子程序调用指令ACALL LMAX

执行设计好的

求数据块最大值的子程序

当子程序执行完之后

会在约定的累加器A中存放找到的

数据块的最大值

主程序的话再通过MOV 45H,A

把第一个数据块的最大值就放到

45H单元中进行暂存

然后再次依据上述方法再调用一遍子程序

找到第二个数据块的最大值

并把这个最大值的话放入累加器A保存

而对于找到的两个数据块中的最大值

我们在主程序中会通过CJNE

这条指令就是比较不相等转移指令

再加上一个JNC无借位转移指令的配合

来实现两者中更大值的寻找

最后会通过MOV指令把最大值

送到48H单元来存放

同学们你可以根据这个程序的注释

仔细的分析该组程序

体会一下子程序调用的技巧

最后我们再来看一看子程序的设计

子程序会从

和主程序约定好的位置

取来相关的数据块

对于本例就是从工作寄存器R1中

传来的地址找到RAM单元对应的数据块

然后利用DJNZ指令设计一个

技术控制方式的循环体程序

从数据块中一个一个取出数据进行比较

找到最大值

并把最大值放入累加器A中

最后通过RET这个指令实现子程序的返回

同学们你可以根据我们这个子程序的注释

仔细的分析一下该子程序

体会一下子程序设计的方法

好的

今天我们就主要通过一个例题

使同学们能够认识到怎么样设计主程序

怎么样来设计子程序

怎么样来实现主程序与子程序之间的

参数的传递

需要同学们下去之后能够多加练习

仔细的体会子程序设计的方法

掌握好该方法

为我们今后的复杂程序的设计做好

充分的准备

好的

今天的课就到这里

同学们再见

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

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 第八章作业-作业

子程序举例笔记与讨论

也许你还感兴趣的课程:

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