《项目6水塔水位控制4课时》由会员分享,可在线阅读,更多相关《项目6水塔水位控制4课时(53页珍藏版)》请在金锄头文库上搜索。
1、单片机应用技术单片机应用技术一体化教学一体化教学每三位同学组成一个学习组,本学期不能随意变动,课堂上按学习组进行考评平时成绩。本学期每个学习组的学生要固定机位,不能随意变动。每个学习组使用两台电脑。有条件的同学上课时可自带笔记本电脑。学习要求:学习要求:项目项目6 6 水塔水位控制水塔水位控制6-0 6-0 复习复习6-1 6-1 任务引入及演示任务引入及演示6-2 6-2 算术运算指令算术运算指令6-3 6-3 逻辑操作指令逻辑操作指令内容提要:内容提要:v学习目标学习目标进一步掌握控制程序转移类指令、位操作指令进一步理解多分支程序的设计方法。掌握用分支程序实现水塔水位控制的方法。掌握用Pr
2、oteus实现单片机系统仿真的方法。通过实训加深对程序转移指令、位操作指令的理解掌握MCS-51指令系统中的算术运算指令和逻辑操作指令项目项目6 6 水塔水位控制水塔水位控制v教学重点和难点教学重点和难点控制程序转移指令和位操作指令的进一步理解算术运算指令和逻辑操作指令的掌握与运用分支程序设计如何用单片机实现水塔水位的控制Keil C软件的使用项目项目6 6 水塔水位控制水塔水位控制v教学方法教学方法讲授法、演示法v教学学时教学学时6课时项目项目6 6 水塔水位控制水塔水位控制v主要操作实例主要操作实例水塔水位控制(理论教材P9899)算术运算指令、逻辑操作指令的验证(实验指导书P4753)1
3、、控制程序转移指令控制程序转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返回指令。6.0 6.0 复习复习1 1) 无条件转移指令(无条件转移指令(4 4条)条)v无条件转移指令是指当程序执行到该指令时,程序无条件转移到指令所提供的地址处执行。v无条件转移类指令有四类:l绝对转移AJMPl长转移LJMPl相对转移(短转移)SJMPl间接转移(散转指令)JMP2 2) 条件转移指令(条件转移指令(8 8条)条)v条件转移指令是指根据给出的条件进行判断, 若条件满足,则程序转向由偏移量确定的目的地址处去执行。 若条件不满足
4、,程序将不会转移,而是按原顺序执行。8051有丰富的条件转移指令:累加器A判0指令(2条)比较转移指令(4条)减1非零转移指令(2条)3 3)调用、返回指令)调用、返回指令 (4条条)v通常把具有一定功能的公用程序段作为子程序,在主程序中采用调用指令调用子程序,子程序的最后一条指令为返回主程序指令(RET)。 v8051指令系统中有两条调用指令,分别是绝对调用和长调用指令。v主程序调用子程序及从子程序返回主程序的过程如右图所示。v调用、返回指令有:绝对调用指令绝对调用指令长调用指令长调用指令返回指令返回指令4 4)空操作指令)空操作指令(1(1条条) )v8051硬件结构中有个位处理机又称布尔
5、处理机,它具有一套完整的处理位变量的指令集,包括位变量传送、逻辑运算、控制程序转移指令等。在进行位寻址时,PSW中的进位标志CY作为位处理机的累加器,称为位累加器。v位寻址空间包括以下两部分:l片内RAM中位寻址区即字节地址20H2FH单元中连续的128个位,位地址为00H7FH。l部分特殊功能寄存器中的可寻址位凡SFR中字节地址能被8整除的特殊功能寄存器都可以进行位寻址。位地址为80F7H,一共83位。 对于位寻址,有以下三种不同的写法。 第一种是直接地址写法, 如 MOV C,0D2H,其中,0D2H表示PSW中的OV位地址。 第二种是点操作符写法,如 。 第三种是位名称写法,在指令格式中
6、直接采用位定义名称,这种方式只适用于可以位寻址的SFR,如MOV C,OV。6.0 6.0 复习复习2、 位操作指令 1 1)位数据传送指令)位数据传送指令 汇编指令格式 机器指令格式 操 作 MOV C,bit A2H bit C (bit) MOV bit,C 92H bit bit (C)2 2)位逻辑运算指令)位逻辑运算指令位逻辑“与”指令 汇编指令格式 机器指令格式 操 作 ANL C,bit 82H bit C (C)(bit) ANL C,/bit B0H bit C (C)(bit)位逻辑“或”指令 汇编指令格式 机器指令格式 操 作 ORL C,bit 72H bit C (
7、C)(bit) ORL C,/bit A0H bit C (C)(bit)3 3) 位清位清0 0、置、置1 1指令指令 位清0指令 汇编指令格式 机器指令格式 操 作 CLR C C3H C 0 CLR bit C2H bit bit 0位置1指令 汇编指令格式 机器指令格式 操 作 SETB C D3H C 1 SETB bit D2H bit bit 1位取反指令 汇编指令格式 机器指令格式 操 作 CPL C B3H C ( ) CPL bit B2H bit bit ( )4 4)位条件转移类指令)位条件转移类指令 判位累加器C转移指令 汇编指令格式 机器指令格式 操 作 JC re
8、l 40H rel PC (PC)+2 若(C)=1,则程序转移PC (PC)+rel 若(C)=0,则程序往下顺序执行 JNC rel 50H rel PC (PC)+2 若(C)=0,则程序转移PC (PC)+rel 若(C)=1,则程序往下顺序执行判位变量转移指令 汇编指令格式 机器指令格式 操 作 JB bit,rel 30H bit rel PC (PC)+3 若(bit)=1,则程序转移 (PC)+rel 若(bit)=0,则程序往下顺序执行 JNB bit,rel 20H bit rel PC (PC)+3; 若(bit)=0,则程序转移PC (PC)+rel 若(bit)=1,
9、则程序往下顺序执行4 4)位条件转移类指令)位条件转移类指令 判位变量清0转移指令 汇编指令格式 机器指令格式 操 作 JBC bit,rel 10H bit rel PC (PC)+3 若(bit)=1,则程序转移PC(PC)+rel, 且bit0 若(bit)=0,则程序往下顺序执行v1、试编程比较内部RAM 40H、41H单元的无符号数的大小,将较小的数存放在42H单元中。 ORG 0000H MOV A,40H ;取第一个数 CJNE A,41H,NEQU;比较,不相等转移至NEQU处 MOV 42H,40H ;相等, (40H)42H SJMP TOOFF;完成,转移至结尾退出NEQ
10、U: JNC LESS ;若CY=0,说明(40H) (41H)转移 MOV 42H,40H;(40H) (41H),(40H)42H SJMP TOOFF;完成,转移至结尾退出 LESS: MOV 42H,41H ;(40H)(41H),(41H)42HTOOFF: END6.0 6.0 复习复习练习练习v2、使用位操作指令实现下列逻辑关系。v (1)P1.0=(10H) Pl.1)(ACC.0CY)v (2)P1.3=(ACC.2P1.0)(ACC.1P1.1)(1)MOV 00H,C;CY保存起来存在00H MOV C,10H MOV 01H,C;暂存在01H位 MOV C,00H;取出
11、之前放在00H里的CY ORL C, ACC.0 ANL C,01H )(CYACC.0 ) MOV P1.0,C(2)略。)略。6.0 6.0 复习复习练习练习v2、 把片外数据存储器4020H单元中的数据读到累加器中,应用哪几条指令?MOV DPTR,#4020HMOVX A,DPTRv3、试编写程序将外部RAM 5000H单元内容传送至外部RAM 6030H单元。MOV DPTR,#5000HMOVX A,DPTRMOV DPTR,#6030HMOVX DPTR,A6.0 6.0 复习复习练习练习v4、试编程将内部RAM 30H3FH单元中的内容全部清0(利用循环转移指令)。 ORG 0
12、000HMOV R0,#10HMOV R1.#30HLP:MOV A,R1CLR AMOV R1,AINC R1DJNZ R0,LPEND6.0 6.0 复习复习练习练习v设计一个水塔水位控制系统。晶振频率设计一个水塔水位控制系统。晶振频率6MHz。v设计要求如下所示。设计要求如下所示。1.在水塔内三个不同的高度分别安装了一根固定不动的金属棒,正常情况下,塔内水位应保持在虚线之内,水位控制原理图如图所示。棒处于水位上限,B棒处于水位下限。当水位低于水位下限时,自动启动水泵电机给水塔供水;直到塔内水位达到水位上限,自动停止水泵电机转动。3.塔内水位从水位上限下降到水位下限的过程中,水泵电机不会自
13、动启动。4.水塔进水时,要有信号灯指示;水位监测发生故障时,要有故障灯指示并使水塔水位控制系统停止工作。6.1 6.1 任务引入及演示任务引入及演示6.1 6.1 任务引入及演示任务引入及演示1、实训任务v、脚分别做水位上限信号和水位下线信号的脚分别做水位上限信号和水位下线信号的输入脚,本,本实训将以开关来模拟实训将以开关来模拟水位传感器水位传感器。v脚作为控制水泵电机启动(脚作为控制水泵电机启动(P1.2=0)和停止)和停止(P1.2=1)的)的输出控制信号端,接电机(本实训里采,接电机(本实训里采用直流电机模拟);用直流电机模拟);v做指示水泵电机运行状态的做指示水泵电机运行状态的输出脚,
14、接一只,接一只LED(P1.3=0时点亮);时点亮);v作为水位监测系统故障状态信号的作为水位监测系统故障状态信号的输出脚,接一只,接一只LED,(,(P1.4=0时点亮)。时点亮)。6.1 6.1 任务引入及演示任务引入及演示2、任务分析及演示:、任务分析及演示:完成本任务需要解决哪些问题?完成本任务需要解决哪些问题?v硬件部分硬件部分单片机控制电路的设计:单片机控制电路的设计: (1)常用单片机的型号,作出本任务的选择;(2)8051最小系统;(3)模拟开关电路的设计,水泵电机的驱动电路设计,启动、停止、故障指示信号灯电路的设计;(4)整个设计系统电路。v软件部分软件部分控制程序的设计:控
15、制程序的设计:(1)如何通过程序去实现水塔水位的控制;(2)分支程序的设计;6.1 6.1 任务引入及演示任务引入及演示6.1 6.1 任务引入及演示任务引入及演示表6-1 水位控制信号与水泵电机控制状态的对应关系表P1.1 P1.0控制状态控制状态P1.2P1.3P1.400水泵电机启动水泵电机启动00101故障报警故障报警11010维持原来状态维持原来状态111水泵电机停止水泵电机停止111主程序:地址地址机器码机器码源程序源程序注释注释ORG 0000H0000H02 00 30LJMP MAINORG 0030H0030H43 90 03MAIN: ORL P1,#03H; 水位信号输
16、入端做读入准备水位信号输入端做读入准备0033HF5 90 MOV A,P1; 读入水位监测信号读入水位监测信号0035H30 E1 08 JNB ACC.1,QDZB; P1.1=0,转移到启动准备转移到启动准备0038H20 E0 16 JB ACC.0,TZDJ; P1.0=1,转移到停止电机转移到停止电机003BH12 01 00 YS: LCALL DELAY; 延时延时20s003EH80 F0 SJMP MAIN0040H30 E0 08QDZB: JNB ACC.0,QDDJ; P1.0=0,转移到启动电机转移到启动电机0043HD2 92 SETB P1.2;停止电机;停止电
17、机0045HD2 93 SETB P1.3;关闭电机运行指示;关闭电机运行指示0047HC2 94 CLR P1.4; 打开水位监测故障指示打开水位监测故障指示0049H80FE SJMP $004BHC2 92QDDJ: CLR P1.2; 启动电机启动电机004DHC2 93 CLR P1.3;打开电机运行指示;打开电机运行指示004FH80EA SJMP YS0051HD2 92TZDJ: SETB P1.2;停止电机;停止电机0053HD2 93 SETB P1.30055H80 E4 SJMP YS地址地址机器码机器码源程序源程序注释注释 ORG 0100H;20s延时子程序延时子程
18、序0100H7B C8DELAY:MOV R3,#200;20s循环次数循环次数0102H7F C8 LP1:MOV R7,#200;100ms循环次数循环次数0104H7E 7B LP2:MOV R6,#123 ;0.5ms循环次数循环次数0106H00 NOP0107HDE FE LP3:DJNZ R6,LP30109HDF F9 DJNZ R7,LP2010BHDB F5DJNZ R3,LP1010DH22 RET;子程序返回子程序返回 END延时子程序:#include”reg51.h” /定义8051寄存器的头文件#define count 50000 /T0(MODE 1)的计数值
19、,约#define TH_M1(65536-count)/256 /T0(MODE 1)计数高8位#define TL_M1(65536-count)%256 /T0(MODE 1)计数低8位void delay()int i;for(i=0;i9或AC=1,则(A0-3)+6A0-3l若(A4-7)9或CY=1,则(A4-7)+6A4-7 该操作影响标志位P。6.2.5 6.2.5 算术运算类指令应用实例算术运算类指令应用实例 【例1】 有两个BCD码表示的4位十进制数,分别存放在内部数据存储器的50H51H单元和60H61H单元,试编写程序求这两个数之和,并将结果存放在40H42H单元。解
20、:解:求两个BCD数之和的运算程序如下: MOV A,50H;取第一个数低2位BCD码 ADD A,60H;加第二个数低2位BCD码 DA A;十进制调整 MOV 40H,A;保存结果的低2位 MOV A,51H;取高位BCD码 ADDC A,61H;高位相加 DA A;十进制调整 MOV 41H,A;保存结果的高2位 MOV A,#00H ADDC A,#00H;计算进位 MOV 42H,A;保存进位6.2.5 6.2.5 算术运算类指令应用实例算术运算类指令应用实例 【例2】 试编程计算5678H1234H的值,结果保存在R6、R5中。解:减数和被减数都是16位二进制数,计算时要先进行低8
21、位的减法,然后再进行高8位的减法,在进行低8位减法时,不需要考虑借位,所以要在减法指令之前将借位标志清0。程序如下: MOV A,#78H;被减数低8位送累加器 CLR C;清进位标志位CY SUBB A,#34H;减去减数 MOV R5,A;保存低8位 MOV A,#56H;被减数高8位送累加器 SUBB A,#12H;减去减数 MOV R6,A;保存高8位6.2.5 6.2.5 算术运算类指令应用实例算术运算类指令应用实例 【例例3】 试分析执行下列指令以后,寄存器和内部RAM的状态。 MOV R0,#30H;数30H送入R0 MOV 30H,#40H;数40H送入片内RAM 30H单元
22、MOV 31H,#50H;数50H送入片内RAM 31H单元 INC R0;将片内RAM 30H单元中的内容 加1 INC R0;将R0中的内容加1 INC R0;将片内RAM 31H单元中的内容 加1解:分析结果:(R0)=31H (30H)=41H (31H)=51H v6.3.1 逻辑“与”、“或”、“异或”指令 v6.3.2 清零、取反指令 v6.3.3 循环移位指令 v6.3.4 逻辑运算类指令应用实例 6.3 逻辑操作指令逻辑操作指令6.3.1 6.3.1 逻辑逻辑“与与”、“或或”、“异或异或”指令指令1. 逻辑“与”指令 汇编指令格式 机器指令格式 操 作 ANL A,Rn 5
23、8H5FH A (A)(Rn) ANL A,direct 55H direct A (A)(direct) ANL A,Ri 56H57H A (A)(Ri) ANL A,#data 54H data A (A)#data ANL direct,A 52H direct direct (direct)(A) ANL direct,#data 53H direct data direct (direct)#data注意:后2条指令若直接地址正好是I/O端口P0P3,则为端口的“读改写”操作。前4条指令的操作影响标志位P。 6.3.1 6.3.1 逻辑逻辑“与与”、“或或”、“异或异或”指令指令2
24、. 逻辑“或”指令 汇编指令格式 机器指令格式 操 作 ORL A,Rn 48H4FH A (A)(Rn) ORL A,direct 45H direct A (A)(direct) ORL A,Ri 46H47H A (A)(Ri) ORL A,#data 44H data A (A)#data ORL direct,A 42H direct direct (direct)(A) ORL direct,#data 43H direct data direct (direct)#data注意:后2条指令若直接地址正好是I/O端口P0P3,则为端口的“读改写”操作。前4条指令的操作影响标志位P。
25、 6.3.1 6.3.1 逻辑逻辑“与与”、“或或”、“异或异或”指令指令3. 逻辑“异或”指令 汇编指令格式 机器指令格式 操 作 XRL A,Rn 68H6FH A (A)(Rn) XRL A,direct 65H direct A (direct)(A) XRL A,Ri 66H67H A (A)(Ri) XRL A,#data 64H data A (A)#data XRL direct,A 62H direct direct (direct)(A) XRL direct,#data 63H direct data direct (direct)#data注意:后2条指令若直接地址正好
26、是I/O端口P0P3,则为端口的“读改写”操作。前4条指令的操作影响标志位P。 6.3.2 6.3.2 清零、取反指令清零、取反指令 1. 累加器A清0指令 汇编指令格式 机器指令格式 操 作 CLR A E4H A 0注意:该操作影响标志位P。2. 累加器A取反指令 汇编指令格式 机器指令格式 操 作 CPL A F4H A ( )对累加器A的内容逐位取反,不影响标志位。 注意:该操作不影响标志位P。6.3.3 6.3.3 循环移位指令循环移位指令 1. 累加器A循环左移指令 汇编指令格式 机器指令格式 操 作 RL A23H 注意:该操作不影响PSW标志位。2. 累加器A循环右移指令 汇编
27、指令格式 机器指令格式 操 作 RR A03H 注意:该操作不影响PSW标志位。6.3.3 6.3.3 循环移位指令循环移位指令 3. 累加器A带进位循环左移指令 汇编指令格式 机器指令格式 操 作 RLC A 33H 注意:该操作影响标志位P和CY。4. 累加器A带进位循环右移指令 汇编指令格式 机器指令格式 操 作 RRC A 23H 注意:该操作影响标志位P和CY 。6.3.4 6.3.4 逻辑运算类指令应用实例逻辑运算类指令应用实例 【例16】 将P1口的、清零,其余位不变。 解:相应的指令为: ANL P1,#01110011B【例17】 利用逻辑运算指令将P1口的、置1,其余位保持
28、不变。 解:相应的指令为: ORL P1,#00101010B【例18】 利用逻辑运算指令,将内部RAM中40H单元的1、3、5、7位取反,其他位保持不变。 解:相应指令为: XRL 40H,#0AAH;0AAH=10101010B6.3.4 6.3.4 逻辑运算类指令应用实例逻辑运算类指令应用实例 【例19】 利用逻辑运算指令将当前工作寄存器设定为第3组工作寄存器。 解:相应指令为: ORL PSW,#00011000B【例20】 无符号8位二进制数(A)=00111101B=3DH,CY=0。试分析执行“RLC A”指令后累加器A的内容。 解:执行指令“RLC A”的结果为 (A)=011
29、11010B=7AH CY=0 7AH正是3DH的2倍,该指令执行的是乘2操作。6.3.4 6.3.4 逻辑运算类指令应用实例逻辑运算类指令应用实例 【例21】 拆字程序:在内部RAM 40H单元保存有以压缩BCD码表示的2位十进制数,编程将它们拆开,分别保存在内部RAM的41H、42H单元。 解:程序如下: MOV A,40H;压缩BCD码送累加器 ANL A,#0FH;高4位清0,保留低4位 MOV 41H,A;保存低4位BCD码 MOV A,40H;取数据 ANL A,#0F0H;低4位清0,保留高4位 SWAP A;高低位交换 MOV 42H,A;保存高4位BCD码教学安排教学安排v前
30、面对单片机应用系统设计及相关知识有更全面前面对单片机应用系统设计及相关知识有更全面的认识,要完全领会实训中的控制程序还需对单的认识,要完全领会实训中的控制程序还需对单片机的指令系统有进一步的认识。片机的指令系统有进一步的认识。Keil 软件介绍软件介绍控制算术运算指令和逻辑操作指令(控制算术运算指令和逻辑操作指令(3课时)课时)v接下来接下来 对前述内容进行复习、总结并且进行实训对前述内容进行复习、总结并且进行实训验证:算术运算指令和逻辑操作指令(验证:算术运算指令和逻辑操作指令(1课时)课时)v然后然后 指导同学们做水塔水位控制实验(指导同学们做水塔水位控制实验(2课时),课时),进一步教会
31、同学们读懂程序,理解分支程序设计进一步教会同学们读懂程序,理解分支程序设计与循环程序设计思路,并在现有基础上进行修改。与循环程序设计思路,并在现有基础上进行修改。本项目小结本项目小结v算术运算指令可以完成加、减、乘、除和加1、减1等运算。加、减、乘、除指令要影响PSW中的标志位CY、AC、OV。乘除运算只能通过累加器A和B寄存器进行。如果是进行BCD码运算,在加法指令后面还要紧跟一条十进制调整指令“DA A”,它可以根据运算结果自动进行十进制调整,使结果满足BCD码运算规则。 本项目小结本项目小结v逻辑运算和移位操作指令可以实现包括清0、置1、取反、逻辑与、逻辑或、逻辑异或等逻辑运算和循环移位操作。逻辑运算是将对应的存储单元按位进行逻辑操作,将结果保存在累加器A中或者是某一个直接寻址存储单元中。如果保存结果的直接寻址单元是端口P0P3,则为“读改写”指令,即:将端口的内容读入CPU进行逻辑运算,然后再回写到端口。作业作业理论:理论:1 1、理论教材、理论教材P80P80:1515、2121题题2 2、实验报告、实验报告复习、预习要求复习、预习要求理论教材:第三章 8051指令系统、第四章 汇编语言程序设计实训:实验指导书P79散转程序实验