汉语大全>单片机教程教案>循环程序设计--单片机教案

循环程序设计--单片机教案

详细内容

循环程序是指按某种控制规律重复执行的程序
作用:可以减少指令,节省存储单元

1. 单循环程序
例题4-8:用8051单片机的P1连接的8个发光二极管模拟广告流水灯,编程实现8个发光二极管循环点亮。
(1)分析:
1)共阳极结构和共阴极结构
2)实现循环点亮,依次向P1口送入的立即数:
1111 1110——点亮L1 指令:MOVP1,#0FEH
1111 1101——点亮L2 指令:MOVP1,#0FDH
…… ……
0111 1111——点亮L8指令:MOVP1,#7FH
(2)规律:循环点亮L1~L8,只需将1111 1110向左循环移位即可实现。
(3)程序:
START: MOVA,#0FEH;
LOP:MOVP1,A ;从P1.0~P1.7使发光二极管循环点亮
2. 多重循环程序设计——延时程序
(1)关于延时程序:所谓延时,就是让CPU做一些与主程序功能无关的操作(例如将一个数字逐次减1直到0)来消耗掉CPU的时间。
如当系统使用6 MHz晶振时, 一个机器周期为2μs , 执行一条双字节双周期DJNZ指令的时间为2μs×2=4μs,如果执行250次,则可延时4μs×250=1ms。
(2)例题4-9:计一个延时100ms的延时程序,设单片机时钟晶振频率为fosc=6MHz。
1) 分析:要达到延时100 ms,则需执行DJNZ指令25000 次。 对于25000次循环可采用外循环、内循环嵌套的多重循环结构。
2)程序:
DELAY: MOVR6, #64H ;1Tcy外循环 100 次
LOOP1: MOVR7, #0F8H;1 Tcy内循环 248 次
NOP ;1Tcy 时间补偿
LOOP2: DJNZR7, LOOP2;2Tcy,延时 4 μs×248=992 μs

DJNZR6, LOOP1;2Tcy
RET ;2Tcy,返回主程序
3)延时计算方法:
内循环延时: 4μs×248=992μs
外循环延时: (2μs+2μs+内环延时+4μs)×100μs=100ms。
总延时:2μs+外环延时+4μs=100.006ms
(3)多重循环的定义:是指在一个循环程序中又包含一个或多个小的循环,又称为循环嵌套。必须注意多重循环中的各重循环不能交叉,即不能从外循环跳入内循环。
(4)发光二极管循环点亮的完整程序:
START:MOVA,#0FEH
LOP:MOVP1,A
ACALLDELAY;调用延时子程序DELAY,实现100ms的延时
RLA
SJMPLOP
END
DELAY: MOVR6, #64H
LOOP1: MOVR7, #0F8H
NOP
LOOP2: DJNZR7, LOOP2

DJNZR6, LOOP1
RET