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

下载本文档

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

文档简介

1、3.5 单片机控制水箱水位,学习目标:通过学习任务的完成方法,学习MCS-51单片机的位操作指令。 任务描述:消防水箱总是要保证有一定的水位,以防火灾发生,如果单纯靠人工操作,时间不允许,而且还会有险情发生。如果用单片机来代替人工就可以解决这个问题,硬件电路,电路中: 1)输出:P1.0=1时,M放水; P1.0=0时,M关 2)输入:水位B, T1、T2导通 P1.1=0,P1.2=0 A水位B, T1止,T2通 P1.1=1,P1.2=0,水池水位自动控制装置,要求:水位B停放,中断方式可提高CPU的效率,程序设计,CLR P1.0 SETB P1.1 SETB P1.2 L1: JNB

2、P1.2, L1 SETB P1.0 L2: JB P1.1, L2 CLR P1.0 SJMP L1 END,相关知识,1、单片机如何控制单根I/O口线? 我们在上面任务中看到,P3口共有8根口线,现在我们只要控制其中一根线,在单片机中能不能实现?答案是肯定的。因为单片机中有一类位操作指令。 2、MCS-51单片机有哪些位操作指令? MCS-51单片机有一个位处理机,它以进位标志做为位累加器,以内部RAM可寻址的128个为存储位 。 既然有位处理机功能,所以也就有相应的位操作指令集,下面我们分别谈论,位操作:布尔操作,以二进制位为单位进行运算,由布尔处理器实现,操作数范围: C,位寻址区的位

3、,11个可位寻址的寄存器,位地址的四种表示: 1)使用直接位地址表示;如20H、30H、33H等; 2)使用位寄存器名来表示;如C、OV、F0等; 3)用字节寄存器名后加位数来表示;如PSW.4、P0.5ACC.3等; 4)字节地址加位数来表示;如20.0、30.4、50.7等,位变量传送指令 位清零和置位指令 位逻辑运算指令 综合举例与练习,返回本章首页,1 位变量传送指令,MOVC,bit;C(bit) MOV bit,C;bitC,例1 以知片内RAM 的(2FH)=10110101B 执行 MOV C,2FH.7或MOV C,7FH 结果 C=,例2 若C=1,(P1)=1100010

4、1B 执行 MOV P1.3,C MOV P1.2,C 后 (P1)=,C=1,P1)=11001101B,例3 将P1.2送给P1.6,MOV C,P1.3 MOV P1.6,C,返回本节,2 位清零和置位指令,CLR C;C0 CLR bit;(bit)0 SETB C ;C1 SETB bit ;(bit)1,返回本节,3 位逻辑运算指令,ANLC,bit;CC(bit) ANLC,/bit;CC(bit) ORLC,bit;CC(bit) ORLC,/bit;CC(bit) CPLC ;CC CPLbit ;(bit)(bit,返回本节,例2已知A、B、C、D代表位地址,试编程实现 D

5、A B+A B,MOV 10H,C MOV C,ACC.0 ANL C,P2.3 ORL C,10H MOV P1.0,C,例试编程完成.(.,答:MOV C,B ANL C,A MOV D,C,MOV C,A ANL C,B ORL C,D MOV D,C,综合举例与练习,例3 用软件实现下图所示的P10 P13间的逻辑运算,解: MOV C,P1.1 ORL C,P1.2 ANL C,P1.0 MOV P13,C,P1.1,P1.2,P1.0,P1.3,第四章 MCS51单片机的程序设计,汇编语言基本概念 汇编语言程序设计 本章思考题与作业,汇编语言基本概念,一、 程序设计语言 二、 汇编

6、语言的语句格式 三、 伪指令,返回本章首页,一、 程序设计语言,按照语言的结构及其功能可以分为三种: 1机器语言:机器语言是用二进制代码0和1表示指令和数据的最原始的程序设计语言,计算机可以直接识别和执行。 2汇编语言:是一种符号化语言,用助记符代替“0”、“1”,计算机不能直接执行,要通过汇编程序汇编成机器语言后再执行。不同的计算机汇编语言是不同的。 3高级语言:是一种不依赖具体计算机的语言,接近于人的自然语言,是面向过程或问题而独立于机器的通用语言,必须要通过解释程序或编译程序实现执行,返回本节,二、 汇编语言的语句格式,1汇编语言的指令类型 MCS-51单片机汇编语言,包含两类不同性质的

7、指令。 (1)基本指令:即指令系统中的指令。它们都是机器能够执行的指令,每一条指令都有对应的机器码。 (2)伪指令:汇编时用于控制汇编的指令。它们都是机器不执行的指令,无机器码,2汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令)组成的。汇编语言语句一般由四部分组成,其典型的汇编语句格式如下: 标号:操作码 操作数;注释 例如 START:MOV A,30H; ( A ) (30H,1)标号,是指语句地址的名字。 命名规则:第一字符必须用英文字母;第二个 字符以后可以用字母或数字09;组 成标号的字符不能超过6个字符。 注:特殊功能寄存器名(SFR)、伪指令、助 记符等不能作为标号。 例

8、:请指出下列标号是否正确。 2A ADD S+M DPTR,X,X,X,X,2)操作码,规定了语句执行的具体操作,3)操作数,提供了操作所需要的数据或地址,4)注释,对语句进行解释或说明,增加可读性,返回本节,ORG EQU DB DW DS BIT END,三、 伪指令,返回本节,格式:ORG m 功能:用来规定程序段在存储器中存放的起始地址。 例如:ORG1000H START:MOVA,#20H MOVB,#30H,2EQU赋值伪指令 格式:符号名 EQU(或=)表达式 给指定的符号名赋予一个确定的数值。 例如:SUM EQU 22H MOV A,SUM,1ORG 汇编起始伪指令,说明:

9、该程序段是从地址是1000H 单元开始存放的,A)=22H,1000H,74H,20H,格式:标号: DB 8位字节数据表 功能:从ROM某一地址单元开始, 存入一组规定好的8位二进制数。 例:ORG 8000H TAB: DB 45H,49H,0AH TAB1:DB 07H,3DB 字节数据定义伪指令,45H,49H,0AH,07H,TAB=8000H TAB1=8003H,格式:标号: DW 16位字数据表 功能:从ROM某一地址单元开始, 存入一组规定好的16位二进制数。 例:ORG 3000H TAB: DW 5678H,1234H DW 3CH,4DW 字数据定义伪指令,56H,78

10、H,12H,34H,00H,3CH,5DS 空间定义伪指令,格式:标号: DS 表达式 功能:从标号指定的地址单元开始, 在ROM中保留由表达式所指定 个数的存储单元作为备用的空 间,并均填以零。 例:ORG 2000H AB:DS 06H TAB:MOV A,B TAB的地址应为多少,2006H,00H,00H,00H,00H,00H,00H,6BIT位地址符号定义伪指令,7END汇编结束伪指令,格式:符号名 BIT 表达式 功能:将位地址赋给指定的符号名。 例: A1 BIT P1.0 MOV C,A1,MOV C,P1.0,格式: 标号: END 表达式 功能:结束汇编,返回本节,汇编语

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

12、1,2,图4-1 例4-1程序流程图,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 $ END,例4.2】 设X、Y两个小于10的整数分别存于片内 30H、31H单元,试求两数的平方和并将结 果存于32H单元。 解:两数均小于10,故两数的平方和小于100,可利用 乘法指令求平方。程序流程如图4-2所示,图4-2 例4.2程序流程图,ORG 2000H

13、 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,返回本节,1)分支结构的基本形式 分支结构有三种基本形式,如图4-3所示。 分支结构程序的设计要点如下: 先建立可供条件转移指令测试的条件。 选用合适的条件转移指令。 在转移的目的地址处设定标号,2. 分支结构,图4-3 分支程序结构流程图,返回

14、,例4.3】根据下列程序段,画出程序流程图。 JZ L1 MOV R1,#0FFH SJMP L2 L1:MOV R1,#00H L2:SJMP L2,2)分支结构程序设计举例,N,Y,例4.4】 设X存在30H单元中,根据下式 X+2X0 Y =100X=0 X X0 求出Y值,将Y值存入31H单元。 解:根据数据的符号位判别该数的正负,若最高位为0,再判别该数是否为0。程序流程如图4-4所示,图4-4 例4.3程序流程图,Y,ORG 2000H MOVA,30H;取数 JBACC.7,NEG;负数,转NEG JZZER0 ;为零,转ZER0 ADDA,#02H;为正数,求X+2 AJMP

15、SAVE;转到SAVE,保存数据 ZER0:MOVA,# 64H ;数据为零,Y=100 AJMP SAVE ;转到SAVE,保存数据 NEG:CPL A ;求X SAVE:MOV31H,A ;保存数据 SJMP ;暂停 END,返回本节,3. 循环结构,1)循环程序的结构(如图4-5所示) 循环程序一般包括如下四个部分: 初始化 循环体 循环控制 结束 循环程序按结构形式,有单重循环与多重循环。 在多重循环中,只允许外重循环嵌套内重循环。 不允许循环相互交叉,也不允许从循环程序的外部跳入循环程序的内部(如图4-6所示,图4-5 循环结构程序流程图,返回,图4-6 多重循环示意图,返回,2)循

16、环结构程序设计举例,例4.5】试编程实现将单片机的2000H 20FFH单元内容清零。 解:设置一个计数器R1控制循环次数,每清零一次,计数器加1。程序流程如下图所示,ORG 0100H MOV DPTR,#2000H MOV R0,#00H MOV A,#00H L1:MOVX DPTR,A INC DPTR INC R0 CJNE R0,#00H,L1 SJMP $ END,例4.5】在单片机内部RAM50H60H单元中 存放一组数,试编程找出其中最大数 并将该数送2FH单元中。 解:设置一个计数器R1控制循环次数,每处理完一个数据,计数器减1。程序流程如图4-7所示,图4-7 例4.5的

17、程序流程图,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 LOOP2 LOOP1: MOV A,B LOOP2: DJNZ R1,LOOP MOV 2FH,A SJMP $ END,LOOP,例4.6】已知在ROM1000H104FH单元中存 放一组各不相同的8位二进制数,试 编写程序找出其中是否有数据为 88H,若有,将该数所在存储单元的 地址送入R1、R0中,否则R1、R0清 零。 解:程序流程如图4-8所示,图4-

18、8 例4.6的程序流程图,ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV DPTR,#1000H MOV R2,#50H AGAIN:MOV A,#00H MOVC A,A+DPTR CJNE A,#88H,LOOP MOV R1,DPH MOV R0,DPL SJMP L1 LOOP: INC DPTR DJNZ R2,AGAIN MOV R0,#00H MOV R1,#00H L1:SJMP L1 END,例4.7】50ms延时 设晶振频率为12MHZ,则一个机器周期为1s,执行一条DJNZ指令需要2个机器周期。 解: MOV R7,#200 DEL1:MOV R6,#123 NOP DEL2:DJNZ R6,DEL2;2*123+2 s DJNZ R7,DEL1;(248+2)*200+1 s (248+2)*200+1 =50.001s,返回本节,4. 子程序,1)子程序概念 将在程序中可能多次出现的操作,用独立的、标 准化的通用程序段表示。 所谓调用子程序,暂时中断主程序的执行,而转 到子程序的入口地址去执行子程序。如图4-9所 示。 调用子程序应注意: 子程序占用的存储单元和寄存器。 参数的传递。 子程序经过调用后得到的数据来完成程序之间的 参数传递。 嵌套调用与递归调用。如图4-10所示,图4-9 子

温馨提示

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

评论

0/150

提交评论