当前课程知识点:单片机原理及应用 > 4 汇编语言程序设计 > 4.9 计数控制循环程序 > 计数控制循环程序
同学
你好
今天我们将继续学习一下
循环程序的设计方法
我们前面也提到过
对于循环控制程序可以采用计数控制的方式
也可以采用特征标志位控制的方式
这两种方式各自有各自的特点
今天我们首先来看一看采用计数控制的方式
如何来设计循环程序
首先我们来看一看
在计数控制的循环方式中
要设定一个循环计数器
控制循环的次数
计数器可以采用正计数的方式
也可以采用倒计数的方式
下面我们就来看一道例题
通过这道例题你可以体会到用技术方式
计数控制的方式来设计循环程序的精髓
这道例题我们看一下
为一串七位的ASCLL码数据的最高位
比如说第七位加上一个奇校验
我们假设数据是存放在
片外RAM的1001H开始的单元中
数据的长度
是放在片外RAM的1000H单元中
我们知道对于片外RAM的数据
无论是取数还是要输出数据
一定要用MOVX这个指令
这里面我们用工作寄存器
R2来作为计数器
并采用倒计数的方式来控制循环
循环控制的核心指令
我们可以看到循环控制的核心指令
L1:CJNZ R2,L0
该条指令将首先把R2中的内容
自减一个1
然后再判断R2是否为零
为零就结束循环
不为零就跳到标号为L0的指令处
继续循环执行相关的指令
在这个循环体中
我们每次都用MOVX A,@DPTR指令
从片外RAM指定单元中
取出相关的数据放到A中暂存
注意该指令采用的是寄存器间接寻址的方式
DPTR中存放的是片外RAM
欲取数据的地址
为了给取来的7位ASCII码数据的
最高位D7位加上奇校验
即7位ASCII码
如果说有奇数个1则最高位设为1
否则最高位不变还是为零
我们首先用 ORL A,#80H指令
把A中暂存的7位ASCII码的最高位都置1
因为我们前面也学习过
ORL是一条逻辑或的指令
该条指令相对就是把累加器A和
80H16进制数按位相或
由于80H对应的二进制的
10000000
相当于把累加器A的最高位第七位置1
其他的位保持不变
当这条指令执行完之后
我们再用判位转移指令JB P,L1
判断最高这样置1是否正确
如果正确
最高位就应该置一
否则就顺序执行后面的MOVX @DPTR,A指令
即把最高位置了1的结果返存到RAM的原单元中
如果说不正确的话
即最高位本来不应置一
那我们就跳到L1的指令处
即不需要把结果反存到原来的RAM单元中
因为RAM中的原数据的最高位
本来是对的
所以我们就不需要做任何处理
然后结束本次循环
你可以仔细的分析一下这段程序
体会一下用计数控制的方式
那么来设计循环程序的它的精髓
实际上这种方式核心就是
设定一个计数器
把计数器赋予我们想要程序
循环执行的次数
通过DJNZ这条核心的指令
来实现计数循环
好的
今天我们主要介绍了一下
用计数控制的方式如何来设计循环程序
下面我们还会进一步的介绍其他的方式
如何来设计循环程序
好的
希望同学们今天能够
下去之后仔细的体会一下
这种计数控制方式的特点
好
今天课程就到这里
同学们再见
-1.1 单片机的名称
--单片机的名称
-1.2 单片机的相关概念
--单片机的相关概念
-1.3 单片机的设计语言及软件
-1.4 单片机的发展
--单片机的发展
-1.5单片机的应用
--单片机的应用
-1.6 第一单元作业
-2.1 单片机的结构框图
--单片机的结构框图
-2.2 80C51内部结构
-2.3 信号引脚
--信号引脚
-2.4 内部数据存储器RAM
-2.5 特殊功能寄存器
--特殊功能寄存器
-2.6 堆栈
--堆栈
-2.7 内部程序存储器ROM
-2.8 存储器的结构特点
--存储器的结构特点
-2.9 并行输入输出接口电路
-2.10 并口功能与时序
--并口功能与时序
-2.11 工作方式
--工作方式
-2.12 最小应用系统
-- 最小应用系统
-2.13 第二单元作业
-3.1 指令格式
--指令格式
-3.2 立即寻址与直接寻址
-3.3 寄存器寻址与寄存器间接寻址
-3.4 变址间接寻址与位寻址
-3.5 内部RAM传送指令
-3.6 外部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.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.1 系统扩展
--系统扩展
-5.2 51单片机扩展方法
-5.3 存储器单元位数扩充方法
-5.4 存储器容量单元扩充方法
-5.5 译码线选法
--译码线选法
-5.6 程序存储器的类型
--程序存储器的类型
-5.7 程序存储器的扩展
--程序存储器的扩展
-5.8 数据存储器的扩展
--数据存储器的扩展
-5.9 存储器综合扩展
--存储器综合扩展
-5.10 单片机存储器系统的特点
-- 单片机存储器系统的特点
-5.11 第五单元作业
-6.1 中断技术
--中断技术
-6.2 中断优先级及中断系统内部结构
-6.3 中断控制寄存器及中断响应过程
-6.4 中断请求的撤消
--中断请求的撤消
-6.5 外部中断举例
--外部中断举例
-6.6 定时器/计数器
--定时器/计数器
-6.7 定时计数器工作方式及程序编写
-6.8 定时器举例
--定时器举例
-6.9 第六单元作业
-7.1 并行接口
-- 并行接口
-7.2 并口举例
--并口举例
-7.3 并口扩展芯片
--并口扩展芯片
-7.4 8155连接方式及编程
-7.5 键盘接口技术
--键盘接口技术
-7.6 按键处理程序及举例
-7.7 键盘扫描子程序
-- 键盘扫描子程序
-7.8 显示接口技术
--显示接口技术
-7.9 多位字符静态显示
--多位字符静态显示
-7.10 多位字符动态显示
--多位字符动态显示
-7.11 第七单元作业
-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 第八章作业-作业


