授课日期 班次 授课时数 2
课题,任务八 LED显示电路教学目的:掌握分支程序和循环程序的设计方法重点,分支程序和循环程序的设计难点,循环程序的设计教具,多媒体作业,4.16 4.17
自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编教学过程:一、复习提问
MCS-51有哪几类指令?
二、新授由任务七:按钮控制灯引入本次课内容
1.任务描述详细描述本次任务,演示任务结果,提出任务要求,激起学生的学习欲望
2.硬件电路与工作原理让学生根据任务分析硬件要求,画出具体电路,并在实验开发板上接线
3.程序设计(给出控制程序)
4.相关知识
1) 分支程序的设计方法由任务中的分支程序来分析并总结其设计方法
2)循环程序的设计方法由任务中的循环程序来分析并总结其设计方法、常见的问题分析
5.课堂小结课后小结:
任务描述,将 0~ 9这十个数循环送 P1口七段 LED上显示 。
4.2 任务八 LED显示电路
4.2.1 硬件电路与工作原理
4.2 任务八 LED显示电路
4.2.2 控制程序
START,ORG 0100H
MAIN,MOV R0,#00H
MOV DPTR,#TABLE
DISP,MOV A,R0
MOVC A,@A+ADPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#0AH,DISP
AJMP MAIN
4.2.3 源程序的编辑、编译、下载
DELAY,MOV R1,#0FFH
LOOP0,MOV R2,#0FFH
LOOP1,DJNZ R2,LOOP1
DJNZ R1,LOOP0
RET
TABLE:DB 0C0H,0F9H,
DB 0A4H,0B0H
DB 99H,92H
DB 82H,0F8H
DB 80H,90H
END
4.2 任务八 LED显示电路
4.2.4 相关知识
1、单片机源程序有哪些常用结构形式?
简单结构程序简单结构程序又称顺序结构程序,是汇编语言程序设计中最基本、
最单纯的程序,在整个程序设计所占比例最大,是程序设计的基础。这里所说的简单结构程序是指一种无分支的直接程序,是按照逻辑操作顺序,从第一条指令开始逐步条顺序执行,直到最后一条指令为止。可见,简单结构程序是指其组织成结构简单、程序的逻辑流向是一维的,程序的具体内为止。可见简单结构程序是指其组成结构简单,程序逻辑的逻辑流向是一维的,程序的具体内容不一定简单,在实际编程中,如何正确选择指令,合理使用工作寄存器、节省存储单元等,是编写好程序的基本功。
4.2 任务八 LED显示电路
4.2.4 相关知识
单分支结构程序
单分支结构在程序设计中应用最广,拥有的分支指令了也多,其结构一般为一个入口两个出口。常用的流程图图形如图条件成立?
N
Y
单分支结构程序的选择条件一般由运算或检测的状态标志提供,选用对应的条件判跳指令来实现
4.2 任务八 LED显示电路
4.2.4 相关知识
多分支结构程序
在实际应用中,常常需要从两个以上的流向 ( 出口 ) 中选一 。 例如,
两个数相比较,必然存在大于,等于,小于三种情况,这时就需从三个分支中选一 。 再如多分支跳转 ( 又称散转 ) 将根据运算结果值在多分支中选一 。 这就形成了多分支结构 。 其流程图形如图

……
分支 0 分支 1 分支 n
( A) =n
S00 S11 Snn
4.2 任务八 LED显示电路
4.2.4 相关知识
分支结构程序的形式有三种典型形式
条件成立则执行分支程序( 1),否则执行分支程序( 2),两者选一,如图。
NY
开始程序段条件成立

程序段( 3)
结束分支程序( 2)分支程序( 1)
4.2 任务八 LED显示电路
4.2.4 相关知识
分支结构程序的形式
条件成立则跳过程序段
( 2),执行程序段( 3),
否则顺序执行
N
Y
开始程序段 ( 1)
条件成立?
程序段 ( 2)
结束程序段 ( 3)
4.2 任务八 LED显示电路
4.2.4 相关知识
分支结构程序的形式
条件成立则顺序往下执行,否则重复执行程序段( 1),直至条件成立,程序顺序往下执行。
对于这种形式,可以程序段( 1)重复执行次数作为判别条件,当重复次数达到条件满足时停止重复,程序顺序往下执行,这是分支程序结构的一种特殊形式。其中判别条件也可能是一个定量或状态标志,
而重复次数是不定的,只要条件一满足,立即停止重复。也可能条件不满足时直接转向判跳指令本身,一旦条件成立,立即结束。这种方式常用于状态检测。
提示,分支结构程序允许嵌套,即一个分支接着一个分支,形成树根式多级分支程序结构。汇编语言程序本身并不限止这种嵌套层次数,
但过多的嵌套层次将使程序结构变得十分复杂和雍肿,以致造成逻辑上的混乱和错误,因而应尽力避免
4.2 任务八 LED显示电路
4.2.4 相关知识
循环结构程序的组成循环程序一般由四个主要部分组成,
初始化部分,为循环程序做准备,如规定循环次数,给各变量和地址指针预置初值 。
处理部分,为反复执行的程序段,是循环程序的实体,也是循环程序的主体 。
循环控制部分,这部分的作用是修改循环变量和控制变量,并判断循环是否结束,直到符合结束条件时,跳出循环为止 。
结束部分,这部分主要是对循环程序的结果进行分析,处理和存放。
4.2 任务八 LED显示电路
循环程序结构
4.2 任务八 LED显示电路
多重循环结构程序某些复杂问题或者循环数超过 256,则需采用多重循环的程序结构,即循环程序中包含循环程序或一个大循环中包含多个小循环程序,称多重循环程序结构,又称循环嵌套。循环的重数不限,但必须每循环的层次分明,不能有相互交叉!
START,MOV R3,#DATA1 ; 外层循环计数初值
LOOP1,MOV R2,; 内层循环计数初值
LOOP2,NOP
NOP
NOP
DJNZ R2,LOOP2 ; (R2)-1≠ 0,转 LOOP2
DJNZ R3,LOOP1 ; (R3)-1≠ 0,转 LOOP1
END ; 结束
4.2 任务八 LED显示电路
2、程序设计举例
【 例 4.1 】 拆字程序 。 将一个字节的两个 BCD码十进制数拆开并变成相应的
ASCII码,并存入两个 RAM单元中 。
设两个 BCD码 ( 一个字节 ) 已存入在内部 RAM的 30H单元中,变换后的 ASCII 码分别存放在 31H和 32H单元,且高位 BCD码的 ASCII码的 ASCII码存于 31H单元 。 数字 0~ 9的
ASCII为 30H~ 39H,完成拆字转换只需将一个字节的两个 BCD码拆开存放在另两个单元的低 4位,并在其高 4位赋以 0011即可 。 程序段清单如下:
MOV R0,#32H ; 将 32H单元地址送 R0
MOV @ R0,#00H ; 32H单元清 0
MOV A,30H ; 将 30H单元中的 BCD送 A
XCHD A,@ R0 ; 将低位 BCD码送 32H单元
ORL 32H,#30H ; 完成低位 BCD码转换
SWAP A ; 将高位 BCD码交换到低位
ORL A,#30H ; 完成高位 BCD码转换
MOV 31H,A ; 将高位 BCD的 ASCII码存入 31H
上述程序段完成了将一个字节的 BCD码转换成两个 ASCII码的功能 。 共需占用 15个程序存储器字节单元,用 9个机器周期执行完毕 。
4.2 任务八 LED显示电路
【 例 4.2 】 双字节加法程序段设被加数存放在内部矛盾 RAM的 31H,32H单元,低位字节在前,加数存入于 34H,35H单元 ( 低字节在前 ),结果和存放于 31H,32H,33H单元中 。 其程序段清单如下;
STRT,PUSH A ; 将 A内容进栈保护
MOV R0,#31H ; 将地址码送 R0和 R1
MOV R1,#34H
MOV 33H,#00H ; 将 33H单元清 0,存放和的最高字节数
MOV A,R0 ; 两低字节数相加
ADD A,@ R1
MOV @ R0,A ; 低字节和存于 31H单元
INC R0 ; 地址数分别加 1
INC R1
MOV A,@ R0 ; 连用低位进位进行高字节数
ADDC A,@ R1 ; 相加
MOV @ R0,A ; 高字节和存于 32H单元
INC R0 ; R0指针指向 33H单元
MOV A,#00H ; 清 A为 0
ADDC A,#00H ; 求高字节和的进位
MOV @ R0,A ; 将高字节进位存于 33H单元
POP A ; 恢复 A原内容课堂小结:
1、任务八硬件电路与工作原理
2、控制程序
3、分支程序的设计方法
4、循环程序的设计方法作业:
P105 4.16 4.17