任务四-消防水箱水位的控制PPT演示课件_第1页
任务四-消防水箱水位的控制PPT演示课件_第2页
任务四-消防水箱水位的控制PPT演示课件_第3页
任务四-消防水箱水位的控制PPT演示课件_第4页
任务四-消防水箱水位的控制PPT演示课件_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、13.5 单片机控制水箱水位单片机控制水箱水位学习目标学习目标:通过学习任务的完成方法,学习mcs-51单片机的位操作指令。任务描述任务描述:消防水箱总是要保证有一定的水位,以防火灾发生,如果单纯靠人工操作,时间不允许,而且还会有险情发生。如果用单片机来代替人工就可以解决这个问题。2硬件电路硬件电路3电路中:电路中:1)输出:输出:p1.0=1时,时,m放水;放水; p1.0=0时,时,m关关2)输入:输入:水位水位b, t1、t2导通导通 p1.1=0,p1.2=0a水位水位b, t1止,止,t2通通 p1.1=1,p1.2=0 水池水位自动控制装置水池水位自动控制装置要求:水位要求:水位b

2、停放停放中断方式可提高中断方式可提高cpu的效率的效率4clr p1.0 setb p1.1 setb p1.2l1: jnb p1.2, l1 setb p1.0l2: jb p1.1, l2 clr p1.0 sjmp l1 end5相关知识相关知识1、单片机如何控制单根i/o口线?我们在上面任务中看到,p3口共有8根口线,现在我们只要控制其中一根线,在单片机中能不能实现?答案是肯定的。因为单片机中有一类位操作指令。2、mcs-51单片机有哪些位操作指令?mcs-51单片机有一个位处理机,它以进位标志做为位累加器,以内部ram可寻址的128个为存储位 。既然有位处理机功能,所以也就有相应的

3、位操作指令集,下面我们分别谈论。6位操作:布尔操作,以二进制位为单位进行运算,由布尔处理器实现。操作数范围:c,位寻址区的位,11个可位寻址的寄存器位地址的四种表示:1)使用直接位地址表示;如20h、30h、33h等;2)使用位寄存器名来表示;如c、ov、f0等;3)用字节寄存器名后加位数来表示;如psw.4、p0.5acc.3等;4)字节地址加位数来表示;如20.0、30.4、50.7等。7 位变量传送指令 位清零和置位指令 位逻辑运算指令 综合举例与练习返回本章首页81 位变量传送指令movc,bit;c(bit)mov bit,c;bitc9例1 以知片内ram 的(2fh)=10110

4、101b 执行 mov c,2fh.7或mov c,7fh 结果 c=?例2 若c=1,(p1)=11000101b 执行 mov p1.3,c mov p1.2,c 后 (p1)=?c=1(p1)=11001101b例3 将p1.2送给p1.6mov c,p1.3mov p1.6,c返回本节102 位清零和置位指令clr c;c0clr bit ;(bit)0setb c ;c1setb bit ;(bit)1返回本节113 位逻辑运算指令anl c,bit;cc(bit)anl c,/bit;cc(bit)orlc,bit;cc(bit)orlc,/bit;cc(bit)cpl c ;cc

5、cpl bit ;(bit)(bit)返回本节12例2已知a、b、c、d代表位地址,试编程实现 da b+a bmov 10h,cmov c,acc.0anl c,p2.3orl c,10hmov p1.0,c例试编程完成.(.)答:mov c,b anl c,a mov d,cmov c,aanl c,borl c,dmov d,c综合举例与练习13例例3 3 用软件实现下图所示的用软件实现下图所示的p10 p10 p13 p13间的逻辑运算。间的逻辑运算。 解解: mov c,p1.1: mov c,p1.1 orl c,p1.2 orl c,p1.2 anl c,p1.0 anl c,p

6、1.0 mov p13,c mov p13,c p1.1p1.2p1.0p1.3&114第四章第四章 mcs51单片机的程单片机的程序设计序设计 汇编语言基本概念 汇编语言程序设计 本章思考题与作业15l 汇编语言基本概念 一、 程序设计语言 二、 汇编语言的语句格式 三、 伪指令返回本章首页16一、 程序设计语言 按照语言的结构及其功能可以分为三种: 1机器语言:机器语言是用二进制代码0和1表示指令和数据的最原始的程序设计语言,计算机可以直接识别和执行。 2汇编语言:是一种符号化语言,用助记符代替“0”、“1”,计算机不能直接执行,要通过汇编程序汇编成机器语言后再执行。不同的计算机汇

7、编语言是不同的。 3高级语言:是一种不依赖具体计算机的语言,接近于人的自然语言,是面向过程或问题而独立于机器的通用语言,必须要通过解释程序或编译程序实现执行。返回本节17二、 汇编语言的语句格式 1汇编语言的指令类型 mcs-51单片机汇编语言,包含两类不同性质的指令。 (1)基本指令:即指令系统中的指令。它们都是机器能够执行的指令,每一条指令都有对应的机器码。 (2)伪指令:汇编时用于控制汇编的指令。它们都是机器不执行的指令,无机器码。18 2汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令)组成的。汇编语言语句一般由四部分组成。 其典型的汇编语句格式如下:其典型的汇编语句格式如下:

8、标号:标号:操作码操作码 操作数操作数;注释;注释 例如例如 start:mov a,30h ; ( a ) (30h)19(1)标号 是指语句地址的名字。 命名规则:第一字符必须用英文字母;第二个 字符以后可以用字母或数字09;组 成标号的字符不能超过6个字符。 注:特殊功能寄存器名(sfr)、伪指令、助 记符等不能作为标号。 例:请指出下列标号是否正确。 2a add s+m dptrxxxx20(2)操作码)操作码 规定了语句执行的具体操作。规定了语句执行的具体操作。(3)操作数提供了操作所需要的数据或地址。 (4)注释对语句进行解释或说明,增加可读性。返回本节21lorglequldb

9、ldwldslbitlend三、 伪指令返回本节22 格式:org m 功能:用来规定程序段在存储器中存放的起始地址。 例如:org1000h start:mov a,#20h movb,#30h 2equ赋值伪指令赋值伪指令格式:符号名格式:符号名 equ(或(或=)表达式)表达式 给指定的符号名赋予一个确定的数值。给指定的符号名赋予一个确定的数值。例如:sum equ 22h mov a,sum1org 汇编起始伪指令汇编起始伪指令说明:该程序段是从地址是1000h 单元开始存放的 。(a)=22h1000h74h20h23 格式:标号: db 8位字节数据表 功能:从rom某一地址单元开

10、始, 存入一组规定好的8位二进制数。 例:org 8000h tab: db 45h,49h,0ah tab1:db 07h 3db 字节数据定义伪指令字节数据定义伪指令45h49h0ah07htab=8000htab1=8003h24 格式:标号: dw 16位字数据表 功能:从rom某一地址单元开始, 存入一组规定好的16位二进制数。 例:org 3000h tab: dw 5678h,1234h dw 3ch 4dw 字数据定义伪指令字数据定义伪指令56h78h12h34h00h3ch255ds 空间定义伪指令 格式:标号: ds 表达式 功能:从标号指定的地址单元开始, 在rom中保留

11、由表达式所指定 个数的存储单元作为备用的空 间,并均填以零。 例:org 2000h ab:ds 06h tab:mov a,b tab的地址应为多少?2006h00h00h00h00h00h00h266bit位地址符号定义伪指令 7end汇编结束伪指令格式:符号名格式:符号名 bit 表达式表达式功能:将位地址赋给指定的符号名。功能:将位地址赋给指定的符号名。例:例: a1 bit p1.0 mov c,a1mov c,p1.0格式:格式: 标号:标号: end 表达式表达式功能:结束汇编。功能:结束汇编。返回本节27l 汇编语言程序设计 一、 汇编语言程序设计步骤 二、 结构化程序设计 1

12、. 顺序结构 2. 分支结构 3. 循环结构 4. 子程序结构返回本章首页28一、 汇编语言程序设计步骤 1分析问题 2确定算法 3绘制程序流程图 4分配内存单元 5编写汇编语言源程序 6调试程序返回本节29二、 结构化程序设计 顺序程序是一种最简单,最基本的程序。 特点:程序按编写的顺序依次往下执行每一条指 令,直到最后一条。 【例4.1】 将单片机内部ram40h、41h、42h三个单 元内的无符号数相加,和存入r0(高)和r1 (低)中。程序流程如图4-1所示。 1. 顺序结构顺序结构 96h + 75h 1 0bh+f6h01h1230图4-1 例4-1程序流程图结束(40h) (a)

13、(a)+(41h) (a)(a) (r1)(42h) (a)(r1)+(a) (r1)(r0)+c (r0)开始c (r0)31 org 1000h mova,40h;取值 add a,41h ;40h和41h单元相加 mov r1,a ;和送r1中 clr a addc a,#00h mov r0,a mov a,42h add a,r1 mov r1,a clr a addc a,r0 mov r0,a sjmp $ end32 【例4.2】 设x、y两个小于10的整数分别存于片内 30h、31h单元,试求两数的平方和并将结 果存于32h单元。 解:两数均小于10,故两数的平方和小于100

14、,可利用 乘法指令求平方。程序流程如图4-2所示。 33结束取数据x求x2暂存x2取数据y求y2求x2+y2开始保存平方和图4-2 例4.2程序流程图34 org 2000h mova,30h;取30h单元数据 movb,a ;将x送入b寄存器 mul ab;求x2,结果在累加器中 mov r1,a;将结果暂存于r1寄存器中 mov a,31h;取31h单元数据 mov b,a ;将y送入b寄存器 mul ab;求y2,结果在累加器中 add a,r1;求x2+ y2 mov 32h,a;保存数据 sjmp $ ;暂停 end 返回本节35 (1)分支结构的基本形式 分支结构有三种基本形式,如

15、图4-3所示。 分支结构程序的设计要点如下: 先建立可供条件转移指令测试的条件。 选用合适的条件转移指令。 在转移的目的地址处设定标号。 2. 分支结构分支结构36条件满足?ayn(a)条件满足?abny(b)(c)a0a1ank=0 k=1 k=nk=?图4-3 分支程序结构流程图返回37 【例4.3】根据下列程序段,画出程序流程图。 jz l1 mov r1,#0ffh sjmp l2 l1:mov r1,#00h l2:sjmp l2(a)=0(r1) 00h(r1) ffh(2)分支结构程序设计举例)分支结构程序设计举例ny38 【例4.4】 设x存在30h单元中,根据下式 x+2x0

16、 y =100x=0 x x0 求出y值,将y值存入31h单元。 解:根据数据的符号位判别该数的正负,若最高位为0,再判别该数是否为0。程序流程如图4-4所示。39a为负数?取数,a(30h)开始结束a=0?ynnaxa64hax+2存数,(31h)a图4-4 例4.3程序流程图y40 org 2000h mova,30h;取数 jbacc.7,neg;负数,转neg jzzer0 ;为零,转zer0 adda,#02h;为正数,求x+2 ajmp save ;转到save,保存数据 zer0:mova,# 64h ;数据为零,y=100 ajmp save ;转到save,保存数据 neg:

17、cpl a ;求x save:mov31h,a ;保存数据 sjmp ;暂停 end返回本节413. 循环结构 (1)循环程序的结构(如图4-5所示) 循环程序一般包括如下四个部分: 初始化 循环体 循环控制 结束 循环程序按结构形式,有单重循环与多重循环。 在多重循环中,只允许外重循环嵌套内重循环。 不允许循环相互交叉,也不允许从循环程序的外部跳入循环程序的内部(如图4-6所示)。 42(a)当型循环结构(b)直到型循环结构循环结束?循环体yn初始化修改循环参数结束部分开始结束循环结束?循环体y初始化修改循环参数结束部分开始n结束图4-5 循环结构程序流程图返回43外循环中循环内循环外循环内

18、循环外循环内循环内循环(a)嵌套正确(b)嵌套正确(c)交叉不正确图4-6 多重循环示意图返回44(2)循环结构程序设计举例 【例4.5】试编程实现将单片机的2000h 20ffh单元内容清零。 解:设置一个计数器r1控制循环次数,每清零一次,计数器加1。程序流程如下图所示。4546 org 0100h mov dptr,#2000h mov r0,#00h mov a,#00h l1:movx dptr,a inc dptr inc r0 cjne r0,#00h,l1 sjmp $ end47 【例4.5】在单片机内部ram50h60h单元中 存放一组数,试编程找出其中最大数 并将该数送2

19、fh单元中。 解:设置一个计数器r1控制循环次数,每处理完一个数据,计数器减1。程序流程如图4-7所示。48图4-7 例4.5的程序流程图49 org 1000h mov r0,#50h mov r1,#10h mov a,r0 inc r0 mov 40h,r0 mov b,a clr c subb a,40h jnc loop1 mov a,40h sjmp loop2loop1: mov a,bloop2: djnz r1,loop mov 2fh,a sjmp $ endloop :50 【例4.6】已知在rom1000h104fh单元中存 放一组各不相同的8位二进制数,试 编写程序找

20、出其中是否有数据为 88h,若有,将该数所在存储单元的 地址送入r1、r0中,否则r1、r0清 零。 解:程序流程如图4-8所示。51图4-8 例4.6的程序流程图52org 0000hljmp mainorg 0100hmain:mov dptr,#1000h mov r2,#50hagain:mov a,#00h movc a,a+dptr cjne a,#88h,loop mov r1,dph mov r0,dpl sjmp l1loop: inc dptr djnz r2,again mov r0,#00h mov r1,#00h l1:sjmp l1end53 【例4.7】50ms延时 设晶振频率为12mhz,则一个机器周期为1s,执行一条d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论