授课日期 班次 授课时数 2
课题,任务五:按键控制灯教学目的,掌握 MCS-51的控制转移指令掌握控制转移指令的应用重点,控制转移指令的格式难点,控制转移指令的格式与应用教具,多媒体、实验开发板作业,3.24 3.29( 3)
自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编教学过程:
一、复习提问
1,MCS-51有哪些逻辑运算指令?
2.算术逻辑运算结果的状态如何确定?
二、新授由任务五:脉冲计数器引入本次课内容
1,硬件电路与工作原理
2,程序设计包括计数、显示、软件延时、查表
3,相关知识
1) MCS-51有哪些控制转移指令?
2)控制转移指令应用举例
4.课堂小结课后小结:
3,4 任务五 按键控制灯
3,4,1 硬件电路与工作原理任务描述,用 S1~ S4组成的键盘分别控制 P1口发光二极管发光,按住 S1
键红色发光二极管(假定为 P1.0) 亮,按住 S2键黄色发光二极( P1.1)
管亮,按住 S3键绿色发光二极管(假定为 P1.2) 亮。 S4 用于控制三组灯之间的切换。
3,4 任务五 按键控制灯
3,4,2 控制程序
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:ORL P3,#3CH
MOV A,P3
ANL A,#3CH
MOV R0,A
CJNE A,#3CH,MAIN1
SJMP MAIN
MAIN1:MOV R1,#10
PDO,LCALL DELAY
DJNZ R1,PDO
MOV A,P3
CJNE A,R0,DODO
K_S1,JB P3.2,K_S2
LJMP KEY_1
K_S2,JB P3.3,K_S3
LJMP KEY_2
K_S3,JB P3.4,K_S4
LJMP KEY_3
3,4 任务五 按键控制灯
3,4,2 控制程序
SPK2,MOV R2,#50H
SPK1,CPL P3.2
LCALL DELAY
DJNZ R2,SPK1
DJNZ R1,SPK2
SJMP MAIN
DELAY,MOV R3,#10
DEL,MOV R4,#50
DJNZ R4,$
DJNZ R3,DEL
END
K_S4,JB P3.5,DODO
LJMP KEY_4
DODO,SJMP MAIN
KEY_1,MOV P1,#0FDH
SJMP MAIN
KEY_2,MOV P1,#0FBH
SJMP MAIN
KEY_3,MOV P1,#0FEH
SJMP MAIN
KEY_4,MOV R1,#10
3,4 任务五 按键控制灯
3.4.3 源程序的编辑、编译、下载打开“伟福”模拟仿真软件进行程序的编辑、编译。
1、正确选择单片机类型 8751或 8031
2、正确选择编译器-伟福编译器
3、选择模拟仿真功能
4、打开或新建文件进行编辑
5、编译打开,ISP下载软件”将目标文件下载到 ISP-4实验开发板上的
AT89S51单片机芯片,观察程序运行结果。
1、编译成功后打开下载软件
2、选择好单片机 89S51并测试
3、打开伟福 6000编译生成的,BIN或,HEX文件
4、选择自动写完成擦除、写、读、校验过程
5、观看运行结果
3,4 任务五 按键控制灯
3.4.4 相关知识
1,MCS-51有哪些控制转移指令?
控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对 64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对 2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响
无条件转移指令( 4条)
这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为 16地址 64kB,绝对转移指令访问的程序存储器空间为 11位地址 2kB空间
3,4 任务五 按键控制灯
3.4.4 相关知识
LJMP addr16 ;addr16→ ( PC),给程序计数器赋予新值( 16位地址)
AJMP addr11 ;( PC) +2→ ( PC),addr11→ ( PC10-0)
程序计数器赋予新值( 11位地址),( PC15-11)不改变
SJMP rel ;( PC) + 2 + rel→ ( PC)当前程序计数器先加上 2再加上偏移量给程序计数器赋予新值
JMP @A+DPTR ;( A) + ( DPTR) → ( PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值
3,4 任务五 按键控制灯
3.4.4 相关知识
条件转移指令( 8条)
程序可利用这组丰富的指令根据当前的条件进行判断,看是否满足某种特定的条件,从而控制程序的转向。
JZ rel ; A=0,( PC) + 2 + rel→ ( PC),累加器中的内容为 0,
则转移到偏移量所指向的地址,否则程序往下执行
JNZ rel ; A≠0,( PC) + 2 + rel→ ( PC),累加器中的内容不为 0,则转移到偏移量所指向的地址,否则程序往下执行
CJNE A,data,rel ; A≠( data),( PC) + 3 + rel→ ( PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,
否则程序往下执行
CJNE A,#data,rel ; A≠#data,( PC) + 3 + rel→ ( PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
3,4 任务五 按键控制灯
3.4.4 相关知识
条件转移指令( 8条)
CJNE Rn,#data,rel ; A≠#data,( PC) + 3 + rel→ ( PC),工作寄存器 Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE @Ri,#data,rel ; A≠#data,( PC) + 3 + rel→ ( PC),工作寄存器 Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
DJNZ Rn,rel ; ( Rn) -1→ ( Rn),( Rn)≠0,( PC) + 2 + rel→ ( PC)
工作寄存器 Rn减 1不等于 0,则转移到偏移量所指向的地址,否则程序往下执行
DJNZ data,rel ; ( Rn) -1→ ( Rn),( Rn)≠0,( PC) + 2 + rel→ ( PC)
直接地址单元中的内容减 1不等于 0,则转移到偏移量所指向的地址,
否则程序往下执行
3,4 任务五 按键控制灯
3.4.4 相关知识
子程序调用指令( 4条)
子程序是为了便于程序编写,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。
LCALL addr16 ; 长调用指令,可在 64kB空间调用子程序。此时
( PC) + 3→ ( PC),( SP) + 1→ ( SP),( PC7-0) → ( SP),
( SP) + 1→ ( SP),( PC15-8) → ( SP),addr16→ ( PC),即分别从堆栈中弹出调用子程序时压入的返回地址
ACALL addr11 ; 绝对调用指令,可在 2kB空间调用子程序,此时
( PC) + 2→ ( PC),( SP) + 1→ ( SP),( PC7-0) → ( SP),
( SP) + 1→ ( SP),( PC15-8) → ( SP),addr11→ ( PC10-0)
RET ; 子程序返回指令。此时( SP) → ( PC15-8),( SP) -1→
( SP),( SP) → ( PC7-0),( SP) -1→ ( SP)
RETI ; 中断返回指令,除具有 RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用 RET代替
3,4 任务五 按键控制灯
3.4.4 相关知识
空操作指令( 1条)
这条指令将累加器中的内容清 0。
NOP ; 这条指令除了使 PC加 1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时
3,4 任务五 按键控制灯
3.4.4 相关知识
2、控制转移指令应用举例
【 例 3.10】 将外部数据 RAM的一个数据块传送到内部数据 RAM,两者的首址分别为 DATA1和 DATA2,遇到传送的数据为零时停止 。
解,外部 RAM的数据传送一定要以累加器 A作为过渡,利用判零条件转移正好可以判别是否要继续传送或者终止 。 完成数据传送的参考程序如下:
MOV R0,#DATA1 ;外部数据块首址送 R0
MOV R1,#DATA2 ;内部数据块首址送 R1
LOOP:MOV A,@ R0 ;取外部 RAM数据入 A
HERE,JZ HERE ;数据为零则终止传送
MOV @ R1,A ;数据传送至内部 RAM单元
INC R0 ;修改地址指针,指向下一数据地址
INC R1
SJMP LOOP ;循环取数注意,以上程序中,写在指令 SJMP LOOP 中的 LOOP处的 8位相对转移偏移量
rel,而地址标号 LOOP 表示 MOVX指令的 16位单元地址。
3,4 任务五 按键控制灯
3.4.4 相关知识
2、控制转移指令应用举例
【 例 3.11】 将内部数据 RAM中从 DATA单元开始的 10个无符号数相加,相加结果送 SUM单元保存 。
解,设相加结果不超过 8位二进制数,则相应的程序如下:
MOV R0,#0AH ;给 R0置计数器初值
MOV R1,#DATA ;数据块首址送 R1
CLR A ;A清零
LOOP:ADD A,@ R1 ;加 1个数
INC R1 ;修改地址,指向下一个数
DJNZ R0,LOOP ;R0减 1,不为零循环
MOV SUM,A ;存 10个数相加和课堂小结,
1、任务五的硬件电路与工作原理
2、如何用按键控制灯?
3,MCS-51单片机有哪些控制转移指令?
作业:
1、预习按钮控制灯实验实训项目、完成预习报告、编写控制程序
2,P73 3.24 3.29