循环结构程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DJNZ
RET
R5,DELAY0
(2)循环体。重复执行的程序段。
(3)循环修改。在单片机中,一般用一个工作寄存器Rn作 为计数器,并给这个计数器赋初值作为循环的次数,运行程序 时,每循环一次,则对该计数器进行修改。 (4)循环控制。判断循环控制变量(保存循环次数的变量
)是否满足终止值的条件,如果满足则结束循环,顺序执行循
环短一些的程序;如果不满足,则继续重复执行循环的工作部 分,直到达到循环结束条件(死循环除外)。
【例4.4】延时10ms子程序(设晶振的频率为6MHz)。 在知道系统的晶振频率之后,延时时间主要与两个因素有关 :一是内循环中指令的执行时间;二是外循环时间常数(内循 环的循环次数)的设置。在本例中,已知晶振频率为6MHz,
则可得一个机器周期为0.5μs,执行一条 DJNZ Rn,rel的指令
的时间为两个机器周期即1μs,10ms的延时子程序设计如下: DELAY: DELAY0: DELAY1: MOV R5,#100 MOV DJNZ R4,#100 R4,DELAY1
循环结构程序
在程序设计过程中,常常遇到反复执行某一段程 序的情况,这种情况下采用循环程序结构,构,可以 缩短程序代码的长度,提高程序的质量和运行效率。 循环的这四个部分有两种情况,如图4- 3所示。
图4- 3 循环结构程序流程图
循环结构程序一般包括以下几个部分: (1)置初值。置初值是设置用于循环过程工作单元的初始 值,例如设置循环次数计数器、地址指针初值、存放变量的单 元的初值。
程序清单如下: ORG 0100H MOV R5,23H CLR A MOV R6,#00H MOV R4,#01H LOOP:ADD A,@R4 JNC NEXT INC R6 NEXT:INC R4 DJNZ R5,LOOP MOV 23H,R6 MOV 24H,A END
;R5←N ;A清零 ;R6清零 ;R4赋值 ;求和 ;CY=0即总和小于256,则转移 ;总和高位加工 ;修改指针 ;未完,重复加 ;保存总和的高位 ;保存总和的低位
【例4.3】求1、2、3…N之和(N<256)。 这是一个简单的重复相加的问题。设R2为加数指针, R5为循环次数计数器,R6为加数总和的加数总和的高位字节和低
位字节分别存入23H和24H中。程序流程图如图4- 4所示。
图4- 4 例4.3程序流程图