




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 5单片机控制水箱水位 学习目标 通过学习任务的完成方法 学习MCS 51单片机的位操作指令 任务描述 消防水箱总是要保证有一定的水位 以防火灾发生 如果单纯靠人工操作 时间不允许 而且还会有险情发生 如果用单片机来代替人工就可以解决这个问题 硬件电路 电路中 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停放 中断方式可提高CPU的效率 程序设计 CLRP1 0SETBP1 1SETBP1 2L1 JNBP1 2 L1SETBP1 0L2 JBP1 1 L2CLRP1 0SJMPL1END 相关知识 1 单片机如何控制单根I O口线 我们在上面任务中看到 P3口共有8根口线 现在我们只要控制其中一根线 在单片机中能不能实现 答案是肯定的 因为单片机中有一类位操作指令 2 MCS 51单片机有哪些位操作指令 MCS 51单片机有一个位处理机 它以进位标志做为位累加器 以内部RAM可寻址的128个为存储位 既然有位处理机功能 所以也就有相应的位操作指令集 下面我们分别谈论 位操作 布尔操作 以二进制位为单位进行运算 由布尔处理器实现 操作数范围 C 位寻址区的位 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 MOVbit C bit C 例1以知片内RAM的 2FH 10110101B执行MOVC 2FH 7或MOVC 7FH结果C 例2若C 1 P1 11000101B执行MOVP1 3 CMOVP1 2 C后 P1 C 1 P1 11001101B 例3将P1 2送给P1 6 MOVC P1 3MOVP1 6 C 返回本节 2位清零和置位指令 CLRC C 0CLRbit bit 0SETBC C 1SETBbit bit 1 返回本节 3位逻辑运算指令 ANLC bit C C bit ANLC bit C C bit ORLC bit C C bit ORLC bit C C bit CPLC C CCPLbit bit bit 返回本节 例2已知A B C D代表位地址 试编程实现D AB AB MOV10H CMOVC ACC 0ANLC P2 3ORLC 10HMOVP1 0 C 例 试编程完成 答 MOVC BANLC AMOVD C MOVC AANLC BORLC DMOVD C 综合举例与练习 例3用软件实现下图所示的P10 P13间的逻辑运算 解 MOVC P1 1ORLC P1 2ANLC P1 0MOVP13 C P1 1 P1 2 P1 0 P1 3 第四章MCS 51单片机的程序设计 汇编语言基本概念汇编语言程序设计本章思考题与作业 汇编语言基本概念 一 程序设计语言二 汇编语言的语句格式三 伪指令 返回本章首页 一 程序设计语言 按照语言的结构及其功能可以分为三种 1 机器语言 机器语言是用二进制代码0和1表示指令和数据的最原始的程序设计语言 计算机可以直接识别和执行 2 汇编语言 是一种符号化语言 用助记符代替 0 1 计算机不能直接执行 要通过汇编程序汇编成机器语言后再执行 不同的计算机汇编语言是不同的 3 高级语言 是一种不依赖具体计算机的语言 接近于人的自然语言 是面向过程或问题而独立于机器的通用语言 必须要通过解释程序或编译程序实现执行 返回本节 二 汇编语言的语句格式 1 汇编语言的指令类型MCS 51单片机汇编语言 包含两类不同性质的指令 1 基本指令 即指令系统中的指令 它们都是机器能够执行的指令 每一条指令都有对应的机器码 2 伪指令 汇编时用于控制汇编的指令 它们都是机器不执行的指令 无机器码 2 汇编语言的语句格式汇编语言源程序是由汇编语句 即指令 组成的 汇编语言语句一般由四部分组成 其典型的汇编语句格式如下 标号 操作码 操作数 注释 例如START MOVA 30H A 30H 1 标号 是指语句地址的名字 命名规则 第一字符必须用英文字母 第二个字符以后可以用字母或数字0 9 组成标号的字符不能超过6个字符 注 特殊功能寄存器名 SFR 伪指令 助记符等不能作为标号 例 请指出下列标号是否正确 2AADDS MDPTR X X X X 2 操作码 规定了语句执行的具体操作 3 操作数 提供了操作所需要的数据或地址 4 注释 对语句进行解释或说明 增加可读性 返回本节 ORGEQUDBDWDSBITEND 三 伪指令 返回本节 格式 ORGm功能 用来规定程序段在存储器中存放的起始地址 例如 ORG1000HSTART MOVA 20HMOVB 30H 2 EQU 赋值伪指令格式 符号名EQU 或 表达式给指定的符号名赋予一个确定的数值 例如 SUMEQU22HMOVA SUM 1 ORG 汇编起始伪指令 说明 该程序段是从地址是1000H单元开始存放的 A 22H 1000H 74H 20H 格式 标号 DB8位字节数据表功能 从ROM某一地址单元开始 存入一组规定好的8位二进制数 例 ORG8000HTAB DB45H 49H 0AHTAB1 DB07H 3 DB 字节数据定义伪指令 45H 49H 0AH 07H TAB 8000HTAB1 8003H 格式 标号 DW16位字数据表功能 从ROM某一地址单元开始 存入一组规定好的16位二进制数 例 ORG3000HTAB DW5678H 1234HDW3CH 4 DW 字数据定义伪指令 56H 78H 12H 34H 00H 3CH 5 DS 空间定义伪指令 格式 标号 DS表达式功能 从标号指定的地址单元开始 在ROM中保留由表达式所指定个数的存储单元作为备用的空间 并均填以零 例 ORG2000HAB DS06HTAB MOVA BTAB的地址应为多少 2006H 00H 00H 00H 00H 00H 00H 6 BIT 位地址符号定义伪指令 7 END 汇编结束伪指令 格式 符号名BIT表达式功能 将位地址赋给指定的符号名 例 A1BITP1 0MOVC A1 MOVC P1 0 格式 标号 END 表达式 功能 结束汇编 返回本节 汇编语言程序设计 一 汇编语言程序设计步骤二 结构化程序设计1 顺序结构2 分支结构3 循环结构4 子程序结构 返回本章首页 一 汇编语言程序设计步骤 1 分析问题2 确定算法3 绘制程序流程图4 分配内存单元5 编写汇编语言源程序6 调试程序 返回本节 二 结构化程序设计 顺序程序是一种最简单 最基本的程序 特点 程序按编写的顺序依次往下执行每一条指令 直到最后一条 例4 1 将单片机内部RAM40H 41H 42H三个单元内的无符号数相加 和存入R0 高 和R1 低 中 程序流程如图4 1所示 1 顺序结构 96H 75H 10BH F6H 01H 1 2 图4 1例4 1程序流程图 ORG1000HMOVA 40H 取值ADDA 41H 40H和41H单元相加MOVR1 A 和送R1中CLRAADDCA 00HMOVR0 AMOVA 42HADDA R1MOVR1 ACLRAADDCA R0MOVR0 ASJMP END 例4 2 设X Y两个小于10的整数分别存于片内30H 31H单元 试求两数的平方和并将结果存于32H单元 解 两数均小于10 故两数的平方和小于100 可利用乘法指令求平方 程序流程如图4 2所示 图4 2例4 2程序流程图 ORG2000HMOVA 30H 取30H单元数据MOVB A 将X送入B寄存器MULAB 求X2 结果在累加器中MOVR1 A 将结果暂存于R1寄存器中MOVA 31H 取31H单元数据MOVB A 将Y送入B寄存器MULAB 求Y2 结果在累加器中ADDA R1 求X2 Y2MOV32H A 保存数据SJMP 暂停END 返回本节 1 分支结构的基本形式分支结构有三种基本形式 如图4 3所示 分支结构程序的设计要点如下 先建立可供条件转移指令测试的条件 选用合适的条件转移指令 在转移的目的地址处设定标号 2 分支结构 图4 3分支程序结构流程图 返回 例4 3 根据下列程序段 画出程序流程图 JZL1MOVR1 0FFHSJMPL2L1 MOVR1 00HL2 SJMPL2 2 分支结构程序设计举例 N Y 例4 4 设X存在30H单元中 根据下式X 2X 0Y 100X 0XX 0求出Y值 将Y值存入31H单元 解 根据数据的符号位判别该数的正负 若最高位为0 再判别该数是否为0 程序流程如图4 4所示 图4 4例4 3程序流程图 Y ORG2000HMOVA 30H 取数JBACC 7 NEG 负数 转NEGJZZER0 为零 转ZER0ADDA 02H 为正数 求X 2AJMPSAVE 转到SAVE 保存数据ZER0 MOVA 64H 数据为零 Y 100AJMPSAVE 转到SAVE 保存数据NEG CPLA 求XSAVE MOV31H A 保存数据SJMP 暂停END 返回本节 3 循环结构 1 循环程序的结构 如图4 5所示 循环程序一般包括如下四个部分 初始化 循环体 循环控制 结束 循环程序按结构形式 有单重循环与多重循环 在多重循环中 只允许外重循环嵌套内重循环 不允许循环相互交叉 也不允许从循环程序的外部跳入循环程序的内部 如图4 6所示 图4 5循环结构程序流程图 返回 图4 6多重循环示意图 返回 2 循环结构程序设计举例 例4 5 试编程实现将单片机的2000H 20FFH单元内容清零 解 设置一个计数器R1控制循环次数 每清零一次 计数器加1 程序流程如下图所示 ORG0100HMOVDPTR 2000HMOVR0 00HMOVA 00HL1 MOVX DPTR AINCDPTRINCR0CJNER0 00H L1SJMP END 例4 5 在单片机内部RAM50H 60H单元中存放一组数 试编程找出其中最大数并将该数送2FH单元中 解 设置一个计数器R1控制循环次数 每处理完一个数据 计数器减1 程序流程如图4 7所示 图4 7例4 5的程序流程图 ORG1000HMOVR0 50HMOVR1 10HMOVA R0INCR0MOV40H R0MOVB ACLRCSUBBA 40HJNCLOOP1MOVA 40HSJMPLOOP2LOOP1 MOVA BLOOP2 DJNZR1 LOOPMOV2FH ASJMP END LOOP 例4 6 已知在ROM1000H 104FH单元中存放一组各不相同的8位二进制数 试编写程序找出其中是否有数据为88H 若有 将该数所在存储单元的地址送入R1 R0中 否则R1 R0清零 解 程序流程如图4 8所示 图4 8例4 6的程序流程图 ORG0000HLJMPMAINORG0100HMAIN MOVDPTR 1000HMOVR2 50HAGAIN MOVA 00HMOVCA A DPTRCJNEA 88H LOOPMOVR1 DPHMOVR0 DPLSJMPL1LOOP INCDPTRDJNZR2 AGAINMOVR0 00HMOVR1 00HL1 SJMPL1END 例4 7 50ms延时设晶振频率为12MHZ 则一个机器周期为1 s 执行一条DJNZ指令需要2个机器周期 解 MOVR7 200DEL1 MOVR6 123NOPDEL2 DJNZR6 DEL2 2 123 2 sDJNZR7 DEL1 248 2 200 1 s 248 2 200 1 50 001 s 返回本节 4 子程序 1 子程序概念将在程序中可能多次出现的操作 用独立的 标准化的通用程序段表示 所谓调用子程序 暂时中断主程序的执行 而转到子程序的入口地址去执行子程序 如图4 9所示 调用子程序应注意 子程序占用的存储单元和寄存器 参数的传递 子程序经过调用后得到的数据来完成程序之间的参数传递 嵌套调用与递归调用 如图4 10所示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咨询公司岗位晋升方案
- 建筑方案设计阐释范文模板
- 方案设计建筑角度分析图
- 精益化企业营销方案模板
- 银行赠送对联活动方案策划
- 隆回金银花营销策略方案
- 湖北节日活动策划方案公司
- 感冒药营销模式优化方案
- 咨询灭虫方案
- 厌学症的咨询方案
- 2025呼和浩特粮油收储有限公司招聘18名工作人员考试参考题库及答案解析
- 抖音达人签约合同协议书
- 新22J01 工程做法图集
- 2024年社区警务规范考试题库
- 《运动训练学》(第二版)PPT
- GB/T 14181-2010测定烟煤粘结指数专用无烟煤技术条件
- DISC性格特质分析课件
- 丹佛斯变频器modbus通讯
- (中职)氯碱PVC生产工艺及设备8项目八 PVC生产教学课件
- GB∕T 21448-2017 埋地钢质管道阴极保护技术规范
- 常州豪爵铃木班组长任职资格考试试题及答案
评论
0/150
提交评论