授课日期 班次 授课时数2 课题:任务五:按键控制灯 教学目的:掌握MCS-51的控制转移指令 掌握控制转移指令的应用 重点:控制转移指令的格式 难点:控制转移指令的格式与应用 教具:多媒体、实验开发板 作业:3.243.29(3) 自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编 教学过程: 复习提问 1.MCS-51有哪些逻辑运算指令? 2算术逻辑运算结果的状态如何确定? 新授 由任务五:脉冲计数器引入本次课内容 硬件电路与工作原理 2.程序设计 包括计数、显示、软件延时、查表 3.相关知识 )MCS-51有哪些控制转移指令 2)控制转移指令应用举例 4课堂小结 课后小结:
授课日期 班次 授课时数 2 课题: 任务五:按键控制灯 教学目的:掌握MCS-51的控制转移指令 掌握控制转移指令的应用 重点: 控制转移指令的格式 难点: 控制转移指令的格式与应用 教具: 多媒体、实验开发板 作业: 3.24 3.29(3) 自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编 教学过程: 一、复习提问 1. MCS-51有哪些逻辑运算指令? 2.算术逻辑运算结果的状态如何确定? 二、新授 由任务五:脉冲计数器引入本次课内容 1. 硬件电路与工作原理 2. 程序设计 包括计数、显示、软件延时、查表 3. 相关知识 1) MCS-51有哪些控制转移指令? 2)控制转移指令应用举例 4.课堂小结 课后小结:
3:4任务五按键撞大 任务描述:用S1~S4组成的键盘分别控制P1口发光二极管发光,按住S1 键红色发光二极管(假定为P1.0)亮,按住S键黄色发光二极(P1.1) 管亮,按住S3键绿色发光二极管(假定为P1.2)亮。S4用于控制三组灯 之间的切换。 3.4.1硬件电路与工作原理 P10 P17 计 EASP LL11.0592M
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 PDO: LCALL DELAY LJMP MAIN DJNZ RI, PDO ORG 003OH mov A P3 MAIN: oRL P3. #3CH CJNE A, RO, dODO mov A P3 K Sl: JB P3.2,KS2 anL A,#3CH MP KEy 1 MOV RO. A K S2: JB P3.3,KS3 CJNE A, #3CH, MAINI LJMP KEY 2 SJMP MAIN K S3: JB P3.4,KS4 MAINI: Mov R1.#10 LJMP KEY 3
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控制程序 K S4: JB P3. 5. dODO SPK2: MOV R2,#50H LJMP KEY 4 SPK1: CPL P3. 2 DODO: SJMP MAIN LCALL DELAY DJNZ R2, SPKI KEY 1: Mov P1. #OFDH DJNZ Rl, SPK2 SJMP MAIN STMP MAIN KEY 2 Mov P1. #OFBH DELAY: moV R3.#10 SJMP MAIN KeY 3: Mov P1. #OFEH DEL: MOV R4, #50 D JNZ R4, SJMP MAIN DJNZ R3, DEL KEY 4: MOV R1.#10 END
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在务五按健物时 34.3源程序的编辑、编译、下载 打开“伟福”模拟仿真软件进行程序的编辑、编译 1、正确选择单片机类型8751或8031 2、正确选择编译器一伟福编译器 3、选择模拟仿真功能 4、打开或新建文件进行编辑 5、编译 打开“ISP下载软件”将目标文件下载到ISP-4实验开发板上的 AT89S51单片机芯片,观察程序运行结果 、编译成功后打开下载软件 2、选择好单片机89S51并测试 3、打开伟福6000编译生成的BⅠN或HEX文件 4、选择自动写完成擦除、写、读、校验过程 5、观看运行结果
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 相关知识 1、MCS-51有哪些控制转移指令? 控制转移指令用于控制程序的流向,所控制的范围即为程序存储 器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程 序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进 行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及 其它无条件转移指令,这些指令的执行一般都不会对标志位有影响 ➢无条件转移指令(4条) 这组指令执行完后,程序就会无条件转移到指令所指向的地址上 去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令 访问的程序存储器空间为11位地址2kB空间
3.4任务五建控制灯 3.4.4相关知识 LJMP addr16;adr16→(PC),给程序计数器赋予新 值(16位地址) AJMP addrll (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 相关知识 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 A=0,(PC)+2+rel→(PC),累加器中的内容为0, 则转移到偏移量所指向的地址,否则程序往下执行 UNZ re ;A≠0,(PC)+2+rel→(PC),累加器中的内容不 为0,则转移到偏移量所指向的地址,否则程序往下执行 CINE A,data,rel;A≠(data),(PC)+3+rel→(PC),累加器 中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址, 否则程序往下执行 CINE A,#data,rel;A≠data,(PC)+3+rel→(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条) CINE Rn,#data,rel;A≠#data,(PC)+3+rel→(PC),工作寄存 器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程 序往下执行 CNE@Ri,#data,rel;A≠H#data,(PC)+3+rel→(PC),工作寄存 器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的 地址,否则程序往下执行 DINZ Rn rel .(Rn) 1→(Rn),(Rn)≠0,(PC)+2+rel→(PC) 工作寄存器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序 往下执行 DJNZ data,rel;(Rn)-1→(Rn)2(Rn)≠0,(PC)+2+rel→(PC) 直接地址单元中的内容减1不等于0,则转移到偏移量所指向的地址, 否则程序往下执行
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) (SP),(SP)→(PC7-0),(SP)-1→(SP) RETI;中断返回指令,除具有RET功能外,还具有恢复中断逻辑 的功能,需注意的是,RET指令不能用RET代替
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代替