单片机汇编语言循环程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例1 编程实现50ms的延时程序。
采用循环计数法实现延时,循环次数可以通过计算获 得,并选择先执行后判断的循环结构。
分析计算计数器初始值
50ms=50000 μs =(250×200) μs
令(R7)=200,假设(R6)=N,则根据程序结构
则 [ 1+(2×N)+2 ] μs =250 μs
则 [ 1+1+(2×N)+2 ] μs =250 μs
单循环最长延时时间为:1+256*2=513us
➢数据块传送程序
片内RAM
data
a
b
s
r
…
片外RAM
bbuuffffeerr
a
b
s
r
…
t
t
$
▪ 循环程序结构包括四部分: 1、置循环初值 2、循环体(循环工作部分) 3、修改控制变量 4、循环控制部分
▪ 其组织方式如图所示。
1、置循环初值
▪ 对于循环程序中所使用的工作单元,在循 环开始时应置初值。
单片机汇编语言的循环程序设计
复习
▪ 顺序程序设计
程序按顺序一条一条地执行指令。
▪ 分支程序设计
程序分支是通过条件转移指令实现的,即 根据条件对程序的执行进行判断、满足条 件则进行程序转移,不满足条件就顺序执 行程序。例如:JZ KS
循环程序设计
▪ 在程序运行时,有时需要连续重复执行某 段程序,可以使用循环程序。
延时程序中: DEL1:DJNZ R6,DEL1 数据块传送程序中: INC R0 INC DPTR
4、循环控制部分
▪ 根据循环结束条件,判断是否结束循环。 ▪ 循环控制部分每循环一次,检查结束条件,
当满足条件时,就停止循环,往下继续执行 其他程序 ▪ 89C51可采用DJNZ指令来自动修改控制变 量并能结束循环。
▪ 例如,工作寄存器设置计数初值,累加器 A清0,以及设置地址指针、长度等。
延时程序中:MOV R6,#50
数据块传送程序中: MOV R0,#data MOV DPTR,#buffer
2、循环体(循环工作部分)
▪ 重复执行的程序段部分,分为循环工作部 分和循环控制部分。
延时程序中: DEL1:DJNZ R6,DEL1 数据块传送程序中: MOVX @DPTR,A
分析:结合前述循环程序的四个组成部分 由于循环次数事先不知道,但循环条件可以测试 到。所以,采用先判断后执行的结构比较适宜。
程序段如下页:
MOV R0,#data
MOV DPTR,#buffer
LOOP0:MOV A,@R0 CJNE A,#24H,LOOP1 ;判断是否为‘ $ ’字符
SJMP LOOP2
谢谢各位!
DJNZ R7,DEL2 ;2μs RET ;2μs
共计 [1+(1 + 1 +2×123+ 2)×200+2] μs, 即50.003ms
双重循环最长延时时间为: 即132.099ms
[1+(2×256+2+ 2)×256+2] μs
二、先判断后执行
例2 将内部RAM中起始地址为data的数据串传送到 外部RAM中起始地址为buffer的存储区域内,直到 发现‘$ ’字符停止传送。
3、修改控制变量
▪ 在循环程序中,必须给出循环结束条件。 ▪ 常见的是计数循环,当循环了一定的次数
后,就停止循环。 ▪ 在单片机中,一般用一个工作寄存器Rn作
为计数器,对该计数器赋初值作为循环次 数。每循环一次,计数器的值减1,即修改 循环控制变量,当计数器的值减为0时,就 停止循环。
3、修改控制变量
;是‘ $ ’字符,转其它程序
LOOP1:MOVX @DPTR,A ;不是‘ $ ’字符,执行传送
INC R0
INC DPTR
SJMP LOOP0 LOOP2:… …
;传送下一数据
小结
▪ 循环程序的结构 ▪ 循环程序组织方式
作业: 1.编一段10ms的延时子程序 2.编程序实现统计片内RAM中以data为首地址存 放的一个以‘ $ ’字符为结尾的 字符串的长度并送 NUM单元
▪ 例如
➢ 延时程序
若单片机的晶振频率为12MHz,则一个机器周期为 1μs。执行一条DJNZ指令需要2个机器周期,即 2μs。循环执行DJNZ指令可实现一定时间的延时。
MOV R6,#50 ;1us DEL1: DJNZ R6,DEL1 ;2us*50=100us
本段程序延时时间为: 1+100=101us
则N=123
即(R6)=123
50ms延时程序如下页:
一、先执行后判断
DEL:MOV R7,#200 ;1 μs
DEL2:MOV R6, #1N2;3 ;1 μ1sμs
ቤተ መጻሕፍቲ ባይዱ
NNOOPP
;;11 μμss
DDELE1L:1:DDJNJNZ ZRR6,6,DDELE1L1;;2μ2sμ,s,计计((2×2×12N3))μμss
4、循环控制部分
延时程序中: DEL1:DJNZ R6,DEL1 数据块传送程序中: MOV A,@R0 CJNE A,#?24,H,LOLOPO1P1
置初值
循环体
循环修改
否
循环结束否?
是
退出循环
(a)先执行后判断
置初值
是
循环结束否?
否
循环体
循环修改
退出循环
(b)先判断后执行
循环组织方式流程图
一、先执行后判断