项目6水塔水位控制4课时.ppt

上传人:牧羊曲112 文档编号:5888725 上传时间:2023-08-29 格式:PPT 页数:53 大小:1.33MB
返回 下载 相关 举报
项目6水塔水位控制4课时.ppt_第1页
第1页 / 共53页
项目6水塔水位控制4课时.ppt_第2页
第2页 / 共53页
项目6水塔水位控制4课时.ppt_第3页
第3页 / 共53页
项目6水塔水位控制4课时.ppt_第4页
第4页 / 共53页
项目6水塔水位控制4课时.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《项目6水塔水位控制4课时.ppt》由会员分享,可在线阅读,更多相关《项目6水塔水位控制4课时.ppt(53页珍藏版)》请在三一办公上搜索。

1、单片机应用技术一体化教学,每三位同学组成一个学习组,本学期不能随意变动,课堂上按学习组进行考评平时成绩。本学期每个学习组的学生要固定机位,不能随意变动。每个学习组使用两台电脑。有条件的同学上课时可自带笔记本电脑。,学习要求:,项目6 水塔水位控制,6-0 复习6-1 任务引入及演示6-2 算术运算指令6-3 逻辑操作指令,内容提要:,学习目标进一步掌握控制程序转移类指令、位操作指令进一步理解多分支程序的设计方法。掌握用分支程序实现水塔水位控制的方法。掌握用Proteus实现单片机系统仿真的方法。通过实训加深对程序转移指令、位操作指令的理解掌握MCS-51指令系统中的算术运算指令和逻辑操作指令,

2、项目6 水塔水位控制,教学重点和难点控制程序转移指令和位操作指令的进一步理解算术运算指令和逻辑操作指令的掌握与运用分支程序设计如何用单片机实现水塔水位的控制Keil C软件的使用,项目6 水塔水位控制,教学方法讲授法、演示法教学学时6课时,项目6 水塔水位控制,主要操作实例水塔水位控制(理论教材P9899)算术运算指令、逻辑操作指令的验证(实验指导书P4753),1、控制程序转移指令控制程序转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返回指令。,6.0 复习,1)无条件转移指令(4条),无条件转移指令是指当程序执行到

3、该指令时,程序无条件转移到指令所提供的地址处执行。无条件转移类指令有四类:绝对转移AJMP长转移LJMP相对转移(短转移)SJMP间接转移(散转指令)JMP,2)条件转移指令(8条),条件转移指令是指根据给出的条件进行判断,若条件满足,则程序转向由偏移量确定的目的地址处去执行。若条件不满足,程序将不会转移,而是按原顺序执行。8051有丰富的条件转移指令:累加器A判0指令(2条)比较转移指令(4条)减1非零转移指令(2条),3)调用、返回指令(4条),通常把具有一定功能的公用程序段作为子程序,在主程序中采用调用指令调用子程序,子程序的最后一条指令为返回主程序指令(RET)。8051指令系统中有两

4、条调用指令,分别是绝对调用和长调用指令。主程序调用子程序及从子程序返回主程序的过程如右图所示。调用、返回指令有:绝对调用指令长调用指令返回指令,4)空操作指令(1条),8051硬件结构中有个位处理机又称布尔处理机,它具有一套完整的处理位变量的指令集,包括位变量传送、逻辑运算、控制程序转移指令等。在进行位寻址时,PSW中的进位标志CY作为位处理机的累加器,称为位累加器。位寻址空间包括以下两部分:片内RAM中位寻址区即字节地址20H2FH单元中连续的128个位,位地址为00H7FH。部分特殊功能寄存器中的可寻址位凡SFR中字节地址能被8整除的特殊功能寄存器都可以进行位寻址。位地址为80F7H,一共

5、83位。,对于位寻址,有以下三种不同的写法。第一种是直接地址写法,如 MOV C,0D2H,其中,0D2H表示PSW中的OV位地址。第二种是点操作符写法,如 MOV C,0D0H.2。第三种是位名称写法,在指令格式中直接采用位定义名称,这种方式只适用于可以位寻址的SFR,如MOV C,OV。,6.0 复习,2、位操作指令,1)位数据传送指令,汇编指令格式 机器指令格式 操 作 MOV C,bit A2H bit C(bit)MOV bit,C 92H bit bit(C),2)位逻辑运算指令,位逻辑“与”指令 汇编指令格式 机器指令格式 操 作 ANL C,bit 82H bit C(C)(b

6、it)ANL C,/bit B0H bit C(C)(bit)位逻辑“或”指令 汇编指令格式 机器指令格式 操 作 ORL C,bit 72H bit C(C)(bit)ORL C,/bit A0H bit C(C)(bit),3)位清0、置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 b

7、it(),4)位条件转移类指令,判位累加器C转移指令 汇编指令格式 机器指令格式 操 作 JC rel 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 P

8、C(PC)+3;若(bit)=0,则程序转移PC(PC)+rel 若(bit)=1,则程序往下顺序执行,4)位条件转移类指令,判位变量清0转移指令 汇编指令格式 机器指令格式 操 作 JBC bit,rel 10H bit rel PC(PC)+3 若(bit)=1,则程序转移PC(PC)+rel,且bit0 若(bit)=0,则程序往下顺序执行,1、试编程比较内部RAM 40H、41H单元的无符号数的大小,将较小的数存放在42H单元中。ORG 0000H MOV A,40H;取第一个数 CJNE A,41H,NEQU;比较,不相等转移至NEQU处 MOV 42H,40H;相等,(40H)42

9、H SJMP TOOFF;完成,转移至结尾退出NEQU:JNC LESS;若CY=0,说明(40H)(41H)转移 MOV 42H,40H;(40H)(41H),(40H)42H SJMP TOOFF;完成,转移至结尾退出 LESS:MOV 42H,41H;(40H)(41H),(41H)42HTOOFF:END,6.0 复习练习,2、使用位操作指令实现下列逻辑关系。(1)P1.0=(10H)Pl.1)(ACC.0CY)(2)P1.3=(ACC.2P1.0)(ACC.1P1.1)(1)MOV 00H,C;CY保存起来存在00H MOV C,10H ORL C,P1.1;(10H)P1.1 MO

10、V 01H,C;暂存在01H位 MOV C,00H;取出之前放在00H里的CY ORL C,ACC.0;CYACC.0 ANL C,01H;(10HP1.1)(CYACC.0)MOV P1.0,C(2)略。,6.0 复习练习,2、把片外数据存储器4020H单元中的数据读到累加器中,应用哪几条指令?MOV DPTR,#4020HMOVX A,DPTR3、试编写程序将外部RAM 5000H单元内容传送至外部RAM 6030H单元。MOV DPTR,#5000HMOVX A,DPTRMOV DPTR,#6030HMOVX DPTR,A,6.0 复习练习,4、试编程将内部RAM 30H3FH单元中的内

11、容全部清0(利用循环转移指令)。ORG 0000HMOV R0,#10HMOV R1.#30HLP:MOV A,R1CLR AMOV R1,AINC R1DJNZ R0,LPEND,6.0 复习练习,设计一个水塔水位控制系统。晶振频率6MHz。设计要求如下所示。1.在水塔内三个不同的高度分别安装了一根固定不动的金属棒,正常情况下,塔内水位应保持在虚线之内,水位控制原理图如图所示。2.A棒处于水位上限,B棒处于水位下限。当水位低于水位下限时,自动启动水泵电机给水塔供水;直到塔内水位达到水位上限,自动停止水泵电机转动。3.塔内水位从水位上限下降到水位下限的过程中,水泵电机不会自动启动。4.水塔进水

12、时,要有信号灯指示;水位监测发生故障时,要有故障灯指示并使水塔水位控制系统停止工作。,6.1 任务引入及演示,6.1 任务引入及演示,1、实训任务,P1.0、P1.1脚分别做水位上限信号和水位下线信号的输入脚,本实训将以开关来模拟水位传感器。P1.2脚作为控制水泵电机启动(P1.2=0)和停止(P1.2=1)的输出控制信号端,接电机(本实训里采用直流电机模拟);P1.3做指示水泵电机运行状态的输出脚,接一只LED(P1.3=0时点亮);P1.4作为水位监测系统故障状态信号的输出脚,接一只LED,(P1.4=0时点亮)。,6.1 任务引入及演示,2、任务分析及演示:完成本任务需要解决哪些问题?硬

13、件部分单片机控制电路的设计:(1)常用单片机的型号,作出本任务的选择;(2)8051最小系统;(3)模拟开关电路的设计,水泵电机的驱动电路设计,启动、停止、故障指示信号灯电路的设计;(4)整个设计系统电路。软件部分控制程序的设计:(1)如何通过程序去实现水塔水位的控制;(2)分支程序的设计;,6.1 任务引入及演示,6.1 任务引入及演示,表6-1 水位控制信号与水泵电机控制状态的对应关系表,主程序:,延时子程序:,#include”reg51.h”/定义8051寄存器的头文件#define count 50000/T0(MODE 1)的计数值,约0.05s#define TH_M1(6553

14、6-count)/256/T0(MODE 1)计数高8位#define TL_M1(65536-count)%256/T0(MODE 1)计数低8位void delay()int i;for(i=0;i400;i+)/for循环,定时中断400次,实现20s TH0=TH_M1;/设置高8位TL0=TL_M1;/设置低8位TR0=1;/启动T0while(TF0=0);/等待中断(TF0=1)TF0=0;/中断后,清除TF0,关闭T0/for循环定时结束,C51参考程序:水塔水位控制。(晶振频率为12MHz),C51参考程序:水塔水位控制。,void main(void)while(1)P1=

15、P1|0 xFF;if(MIN=0)if(MAX=0)MOTOR=0;START=0;delay();elseMOTOR=1;START=1;BREAKDOWN=0;while(1);elseif(MAX=1)MOTOR=1;START=1;delay();else delay();,sbit MAX=P10;sbit MIN=P11;sbit MOTOR=P12;sbit START=P13;sbit BREAKDOWN=P14;,6.2.1 加法、减法指令 6.2.2 乘法、除法指令 6.2.3 加1、减1指令 6.2.4 十进制调整指令 6.2.5 算术运算类指令应用实例,6.2 算术运

16、算指令,6.2.1 加法、减法指令,1.加法类指令 汇编指令格式 机器指令格式 操 作 ADD A,Rn 28H2FH A(A)+(Rn)ADD A,direct 25H direct A(A)+(direct)ADD A,Ri 26H27H A(A)+(Ri)ADD A,#data 24H data A(A)+#data 注意:当和的第3位或第7位有进位时,分别将AC、CY标志位置1;否则为0。如果第6位向第7位有进位而第7位没有向前进位,或者如果第7位向前有进位而第6位没有向第7位进位,OV=1,否则OV=0。该操作也影响标志位P。,6.2.1 加法、减法指令,2.带进位加法指令 汇编指令

17、格式 机器指令格式 操 作 ADDC A,Rn 38H3FH A(A)+(Rn)+CY ADDC A,direct 35H direct A(A)+(direct)+CY ADDC A,Ri 36H37H A(A)+(Ri)+CY ADDC A,#data 34H data A(A)+#data+CY注意:本指令的执行将影响标志位AC、CY、OV、P,与 ADD指令相同。,6.2.1 加法、减法指令,3.带借位减法指令 汇编指令格式 机器指令格式 操 作 SUBB A,Rn 98H9FH A(A)-CY-(Rn)SUBB A,direct 95H direct A(A)-CY-(direct)

18、SUBB A,Ri 96H97H A(A)-CY-(Ri)SUBB A,#data 94H data A(A)-CY-#data注意:在执行不带借位的运算时,可在“SUBB”指令前用“CLR C”指令将CY清0。如果第7位有借位,则CY置1,否则清0。若第3位有借位,则AC置1;否则清0。两个带符号数相减,还要考查OV标志,若OV为1,表示差数溢出,即破坏了正确结果的符号位。该操作也影响标志位P。,6.2.2 乘法、除法指令,1.乘法指令 汇编指令格式 机器指令格式 操 作 MUL AB A4H BA(A)(B)注意:若乘积大于0FFH,则OV置1,否则清0(此时B的内容为0)。CY总是被清0

19、。该操作也影响标志位P。2.除法指令 汇编指令格式 机器指令格式 操 作 DIV AB 84H A(A)(B)的商,B(A)(B)的余数注意:若除数(B)=00H,则结果无法确定,则OV置1。CY总是被清0。该操作也影响标志位P。,6.2.3 加1、减1指令,1.加1指令 汇编指令格式 机器指令格式 操 作 INC A 04H A(A)+1 INC Rn 08H0FH Rn(Rn)+1 INC direct 05H direct direct(direct)+1 INC Ri 06H07H(Ri)(Ri)+l INC DPTR A3H DPTR(DPTR)+1注意:该操作不影响PSW标志位。,

20、6.2.3 加1、减1指令,2.减1指令 汇编指令格式 机器指令格式 操 作 DEC A 14H A(A)-1 DEC Rn 18H1FH Rn(Rn)-l DEC direct 15H direct direct(direct)-1 DEC Ri 16H17H(Ri)(Ri)-1注意:该操作不影响PSW标志位。,6.2.4 十进制调整指令,汇编指令格式 机器码格式 操 作 DA A D4H 调整累加器A内容为BCD码注意:这条指令一般跟在ADD或ADDC指令后,将相加后存放在累加器中的结果进行十进制调整,完成十进制加法运算功能(不能用于十进制减法的调整)。调整方法如下:若(A0-3)9或AC

21、=1,则(A0-3)+6A0-3若(A4-7)9或CY=1,则(A4-7)+6A4-7 该操作影响标志位P。,6.2.5 算术运算类指令应用实例,【例1】有两个BCD码表示的4位十进制数,分别存放在内部数据存储器的50H51H单元和60H61H单元,试编写程序求这两个数之和,并将结果存放在40H42H单元。解:求两个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 41

22、H,A;保存结果的高2位 MOV A,#00H ADDC A,#00H;计算进位 MOV 42H,A;保存进位,6.2.5 算术运算类指令应用实例,【例2】试编程计算5678H1234H的值,结果保存在R6、R5中。解:减数和被减数都是16位二进制数,计算时要先进行低8位的减法,然后再进行高8位的减法,在进行低8位减法时,不需要考虑借位,所以要在减法指令之前将借位标志清0。程序如下:MOV A,#78H;被减数低8位送累加器 CLR C;清进位标志位CY SUBB A,#34H;减去减数 MOV R5,A;保存低8位 MOV A,#56H;被减数高8位送累加器 SUBB A,#12H;减去减数

23、 MOV R6,A;保存高8位,6.2.5 算术运算类指令应用实例,【例3】试分析执行下列指令以后,寄存器和内部RAM的状态。MOV R0,#30H;数30H送入R0 MOV 30H,#40H;数40H送入片内RAM 30H单元 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,6.3.1 逻辑“与”、“或”、“异或”指令 6.3.2 清零、取反指令 6.3.3 循环移位指令

24、6.3.4 逻辑运算类指令应用实例,6.3 逻辑操作指令,6.3.1 逻辑“与”、“或”、“异或”指令,1.逻辑“与”指令 汇编指令格式 机器指令格式 操 作 ANL A,Rn 58H5FH 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条指令若直接地

25、址正好是I/O端口P0P3,则为端口的“读改写”操作。前4条指令的操作影响标志位P。,6.3.1 逻辑“与”、“或”、“异或”指令,2.逻辑“或”指令 汇编指令格式 机器指令格式 操 作 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)#da

26、ta注意:后2条指令若直接地址正好是I/O端口P0P3,则为端口的“读改写”操作。前4条指令的操作影响标志位P。,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 di

27、rect(direct)#data注意:后2条指令若直接地址正好是I/O端口P0P3,则为端口的“读改写”操作。前4条指令的操作影响标志位P。,6.3.2 清零、取反指令,1.累加器A清0指令 汇编指令格式 机器指令格式 操 作 CLR A E4H A 0注意:该操作影响标志位P。2.累加器A取反指令 汇编指令格式 机器指令格式 操 作 CPL A F4H A()对累加器A的内容逐位取反,不影响标志位。注意:该操作不影响标志位P。,6.3.3 循环移位指令,1.累加器A循环左移指令 汇编指令格式 机器指令格式 操 作 RL A23H 注意:该操作不影响PSW标志位。2.累加器A循环右移指令 汇

28、编指令格式 机器指令格式 操 作 RR A03H 注意:该操作不影响PSW标志位。,6.3.3 循环移位指令,3.累加器A带进位循环左移指令 汇编指令格式 机器指令格式 操 作 RLC A 33H 注意:该操作影响标志位P和CY。4.累加器A带进位循环右移指令 汇编指令格式 机器指令格式 操 作 RRC A 23H 注意:该操作影响标志位P和CY。,6.3.4 逻辑运算类指令应用实例,【例16】将P1口的P1.2、P1.3、P1.7清零,其余位不变。解:相应的指令为:ANL P1,#01110011B【例17】利用逻辑运算指令将P1口的P1.1、P1.3、P1.5置1,其余位保持不变。解:相应

29、的指令为:ORL P1,#00101010B【例18】利用逻辑运算指令,将内部RAM中40H单元的1、3、5、7位取反,其他位保持不变。解:相应指令为:XRL 40H,#0AAH;0AAH=10101010B,6.3.4 逻辑运算类指令应用实例,【例19】利用逻辑运算指令将当前工作寄存器设定为第3组工作寄存器。解:相应指令为:ORL PSW,#00011000B【例20】无符号8位二进制数(A)=00111101B=3DH,CY=0。试分析执行“RLC A”指令后累加器A的内容。解:执行指令“RLC A”的结果为(A)=01111010B=7AH CY=0 7AH正是3DH的2倍,该指令执行的

30、是乘2操作。,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码,教学安排,前面对单片机应用系统设计及相关知识有更全面的认识,要完全领会实训中的控制程序还需对单片机的指令系统有进一步的认识。

31、Keil 软件介绍控制算术运算指令和逻辑操作指令(3课时)接下来 对前述内容进行复习、总结并且进行实训验证:算术运算指令和逻辑操作指令(1课时)然后 指导同学们做水塔水位控制实验(2课时),进一步教会同学们读懂程序,理解分支程序设计与循环程序设计思路,并在现有基础上进行修改。,本项目小结,算术运算指令可以完成加、减、乘、除和加1、减1等运算。加、减、乘、除指令要影响PSW中的标志位CY、AC、OV。乘除运算只能通过累加器A和B寄存器进行。如果是进行BCD码运算,在加法指令后面还要紧跟一条十进制调整指令“DA A”,它可以根据运算结果自动进行十进制调整,使结果满足BCD码运算规则。,本项目小结,逻辑运算和移位操作指令可以实现包括清0、置1、取反、逻辑与、逻辑或、逻辑异或等逻辑运算和循环移位操作。逻辑运算是将对应的存储单元按位进行逻辑操作,将结果保存在累加器A中或者是某一个直接寻址存储单元中。如果保存结果的直接寻址单元是端口P0P3,则为“读改写”指令,即:将端口的内容读入CPU进行逻辑运算,然后再回写到端口。,作业,理论:1、理论教材P80:15、21题2、实验报告,复习、预习要求,理论教材:第三章 8051指令系统、第四章 汇编语言程序设计实训:实验指导书P79散转程序实验,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号