MCS-51单片机原理及应用.ppt_第1页
MCS-51单片机原理及应用.ppt_第2页
MCS-51单片机原理及应用.ppt_第3页
MCS-51单片机原理及应用.ppt_第4页
MCS-51单片机原理及应用.ppt_第5页
已阅读5页,还剩641页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用 1 考核方式 笔试 实验 作业 期末成绩占70 期中成绩占20 实验成绩占5 平时作业成绩占5 答疑时间 周三下午16 00 17 30 答疑地点 机械学院508室 本课程教学安排 祝爱萍 机械学院508室2 第一章 概述第二章 mcs 51单片机结构及原理第三章 MCS 51单片机指令系统及编程举例第四章 单片机定时功能及应用第五章 单片机的中断系统第六章 单片机串行口及应用第七章 单片机系统扩展及显示接口技术第八章 D A A D转换器接口及应用第九章 键盘接口技术 目录 3 第一章概述 学习目标 通过本章的学习 学生应该能够 熟悉单片机的主要特点 典型产品 应用领域 掌握数制以的概念及不同数制间的转换方法 明确数在计算机中的表示方法 4 重点和难点内容 数制以及不同数制间的转换和数在计算机中的表示方法 解决方法 多练习 课外指导 答疑 教学效果检测方法 批阅作业 本章作业 教材P14习题与思考题1 2 3 4 5 6 7 8 5 1 定义 单片机全称为单片微型计算机 single chipMicrocomputer 它在一块芯片上集成了CPU RAM ROM PROM E2PROM CTC和多个I O口 此外 有的单片机如8096单片机上还集成了ADC和DAC转换芯片 本章主要内容 一 单片机的定义及特点 6 测量与显示 如各种智能仪表 用于提高测量与显示的自动化程度和准确度 3 应用领域 主要应用于以下几方面 2 特点 单片机的体积小 可靠性高 价格便宜 功耗低 它是目前应用最广泛的工业控制微机 7 辅助设计和制造 如加工中心 用于提高加工的自动化程度和精度 日常生活 如各种家电中 用于提高家电的自动化程度 增强其功能 科学计算 人造卫星轨迹 天气预报等 数据处理 企业管理 情报检索等 其他方面 系统仿真 智能模拟 计算机网络与信息及高速公路管理等 8 1946 1958 第一代电子管计算机 磁鼓存储器 机器语言及汇编语言编程 1958 1964 第二代晶体管计算机 磁芯作主存储器 磁盘作外存储器 开始使用高级语言编程 二 单片机的发展概况 9 1964 1971 第三代集成电路计算机 使用半导体存储器 出现多终端计算机和计算机网络 1971 第四代大规模集成电路计算机 出现微型计算机 单片微型计算机 外部设备多样化 1981 第五代人工智能计算机 模拟人的智能和交流方式 二 单片机的发展概况 10 三 计算机发展趋势 微型化 便携式 低功耗巨型化 尖端科技领域的信息处理 满足超大容量 高速度的要求智能化 模拟人类大脑思维和交流方式 具有多种处理能力系列化 标准化 便于各种计算机硬 软件兼容和升级多机系统 大型设备 生产流水线集中管理 独立控制 故障分散 资源共享 11 典型产品有8051 8751和8031 其三种芯片的主要区别在于 ROM EPROM和外接EPROM 8051内部程序要由生产芯片的厂家写入 适用于低成本大批量生产 8751片内程序可由用户固化或清除 价格相对较贵 适用于开发样机 8031芯片必须外接ROM 适用于较方便进行修改和更新程序记忆的场合 1 MCS 51系列简介 看P18表2 1 四 常用单片机系列介绍 12 2 存储器简介 memory是单片机的主要组成部分之一 主要用于存储信息 它的分类如下 内存 包含有 RAM 随机存储器 其中信息可读可写 断电丢失全部内容 ROM 只读存储器 用户不可更改其内容 与EPROM同样 断电仍可保存信息 13 外存 包含有 硬盘 可随时读写并永久保存信息但硬盘存储容量有限 随身携带不方便 EPROM 可擦除可编程的只读ROM 用紫外线可擦除其内容 用专用设备用户可固化信息 软盘 软盘可随时读写并永久保存信息 其容量小但可无限扩充 随身携带方便 14 光盘 可随时读取信息 容量大 随身携带方便 也可对其进行写操作并永久保存信息 但必须配备专门的刻盘机 五 数制及其间的转换 1 数制 常用的计数方法 有二 Binary 十 Decimal 十六 Hexadecimal 八 Q Octal 十二及六十进制等 优盘 特点同软盘 但容量较软盘大很多 比硬盘小 15 位权 某个数位的值是由这一位的数码值乘以处在这一位的固定常数决定的 通常把这一固定常数称之为位权值 简称位权 简而言之权是以基为底的幂 例 1010 11B的基为2 各位的权分别为 23 22 21 20 2 1和2 2 基数 指数制所使用数码的个数 如 B 2 Q 8 D 10 H 16 16 例1 FFFFH 15 163 15 162 15 161 15 160 65535例2 10111100 101B 27 25 24 23 22 2 1 2 3 188 625 二 八 十六进制转换为十进制时 原则为 按位权展开相加 2 数制之间相互转换的原则 17 十进制转换为二 八 十六进制时 原则为 整数部分除基取余 先出低位 小数部分乘基取整 先出高位 例1 4 32D 100 0101B 取四位小数 并非精确转换 例2 254 73D 376 56Q FE BAH 18 机器数 数字在机器中的表示方式称为机器数 即将符号 也作为数字的一部分 具体地说 在存储数据时 最高一位用来表示数字的符号 当数字为正时 最高一位的值为0 当数字为负时 最高一位的值为1 机器数有原码 反码和补码三种形式 3 数在计算机中的表示方法 19 真值 一个数的实际大小称为这个数的真值 原码 正数的符号位用0表示 负数的符号位用1表示 符号位之后是数字的真值 此法表示的数字称为数的原码 正数的原码与其真值相同 20 例 对于8位数据 35H表示为 35H 原码 00110101 35H表示为 35H 原码 10110101 0 原码 00000000 0 原码 10000000 反码 正数的反码与其原码相同 负数的反码则为其对应的原码按位取反 符号位除外 21 例 对于8位数据 35H表示为 35H 反码 00110101 35H表示为 35H 反码 11001010 0 反码 00000000 0 反码 11111111 补码 正数的补码与其原码相同 负数的补码则为其对应的原码按位取反 符号位除外 加1 22 注意 计算机中所有的符号数都是默认用补码表示的 例 对于8位数据 35H表示为 35 补码 00110101 35H表示为 35 补码 11001011 0 补码 0 补码 00000000 23 计算机中所能表示的符号数的范围为 2n 1 2n 1 1 n为数据的位数 当n 8时 所能表示的符号数的范围为 128 127 即 27 27 1当n 16时 所能表示的符号数的范围为 32768 32767即 215 215 1 24 已知一个数的补码时 其真值为 正数 真值 正数 补码 负数 真值 负数 补码取反 符号位除外 1 例 x 01001101 则 x 真值 01001101 77Dx 10110101 则 x 真值 11001010 1 11001011 75D 25 例 Y 117 10 117 补 10 补 10001011 1110110 110000001 127 利用补码可将减法转换为加法以简化硬件电路 具体原理为 将减数与减号一起变为补码后再与被减数的补码相加 其和 如有进位则舍弃进位 就是两数之差 了解 26 4 ASCII码 又称字符编码 英文字母A Z及a z 数字字符0 9 专用字符 空格和各种标点符号 各种非打印字符如 CR 回车 LF 换行 BELL 响铃 等 计算机处理的信息并不全是数字 有时还要处理字符和字符串 常见的字符有 27 5 BCD码 BinaryCodedDecimal 用四位二进制代码表示一位十进制正整数的编码称为BCD码 以上这些字符在计算机中都用固定的二进制数表示 国际上目前采用最常用的美国标准信息交换码也称ASCII码来表示 要求大家记住前两类字符的ASCII码值 P10表1 3 列高行低 例 129 000100101001 BCD 28 第二章mcs 51单片机结构及原理 学习目标 通过本章的学习 学生应该能够 掌握有关单片机的基本结构及其功能 尤其是mcs 51系列单片机CPU和存储器的结构及功能 这一部分是全新的概念 需要认真掌握 29 重点和难点内容 mcs 51系列单片机CPU和存储器的结构及功能 解决方法 细讲 慢讲 课外指导 答疑 质疑 教学效果检测方法 课堂提问 批阅作业 本章作业 教材P36习题与思考题1 3 5 6 7 30 本章主要内容 2 1mcs 51单片机结构 2 2mcs 51的存储器结构 2 3单片机的时序 31 第一节mcs 51单片机结构 一 mcs 51单片机内部结构简介二 8051CPU的组成及其功能三 计算机指令执行过程四 MCS 51引脚及功能 32 33 单片机内部最核心的部分是CPU CPU的主要功能是产生各种控制信号 控制存储器及输入 输出端口的数据传送 实现数据的算术运算 逻辑运算以及位操作处理等功能 34 8051CPU的组成及其功能 PC程序计数器 16位专用RS 用于存放下一条将要执行的指令地址 其内容有自加功能 它可保证程序按一定顺序执行 8051CPU由控制器与运算器两部分组成1 控制器 35 指令译码器 将指令RS的指令转换成电信号 再经逻辑控制电路产生各种控制信号 译码前指令为0 1代码 译码后指令为脉冲信号 指令Register RS 8位 用于暂存待执行的指令 等待译码 8051CPU的组成及其功能 36 数据指针DPTR 16位专用地址指针RS 主要用于存放16位地址 作间址RS使用 也可拆成两个8位RS DPH和DPL 它们片内RAM中占据的地址分为83H和82H 8051CPU的组成及其功能 37 定时控制与条件转移逻辑电路 不介绍 2 运算器 累加器ACC 8位专用RS 用于存放操作数或中间结果 是CPU中使用最频繁的一个RS 也是20个SFR中的一个 8051CPU的组成及其功能 38 程序状态字RS PSW 8位专用RS 用于存放程序运行中的各种状态信息 它可以进行位操作 PSW的字节地址为D0H 位地址为D0 D7H 各位的含义如下 算逻运算部件 此部件实现算数运算与逻辑运算的功能 其运算结果的状态送PSW中 8051CPU的组成及其功能 39 CY PSW 7 进位标志 表示在进行无符号加减时 最高位有无向更高位进 借 位 当有进位CY 1 无进位则CY 0 程序状态字RS PSW 各位的含义 AC PSW 6 半进位标志 表示在进行无符号加减时 D3位有无向D4位进 借 位 当有AC 1 无则AC 0 主要用于BCD码的判断位 40 程序状态字RS PSW 各位的含义 RS1 RS0 PSW 4 PSW 3 工作RS组选择标志 用于选择内部RAM中4个RS中的一组它们的关系如下 F0 PSW 5 用户标志位 由用户通过程序设置1或0 表示程序处于某种状态 为后续程序执行提供条件 41 程序状态字RS PSW 42 OV PSW 2 溢出标志 当进行符号数运算时可表示是否有溢出 则OV 1 无则OV 0 溢出的逻辑表达式为OV C6Y C7Y F1 PSW 1 保留位 无定义 程序状态字RS PSW 各位的含义 P PSW 0 奇偶标志位 表示累加器A中含 1 个数的奇偶性 当A中有奇数个1 43 B寄存器 用于乘除法操作 8位RS 是20个SFR中之一 B用来存放第二操作数 即用于存放乘法的高位字节或除法的余数部分 暂存器 暂存数据信息 P 1 否则P 0 注意 P的值与A内容的奇偶无关 程序状态字RS PSW 各位的含义 44 三 计算机指令执行过程 45 MCS 51采用40引脚双列直插式封装 DIP 形式 看P28图2 6 主电源引脚 Vss 地 和Vcc 5v 外接晶振引脚 有两个 四 MCS 51引脚及功能 XTAL2 片内晶振器反向放大器输出端 当使用外部晶振器 作为晶振信号的输入端 XTAL1 片内晶振器反向放大器输入端 当使用外部晶振器 此端接地 46 47 48 四 MCS 51引脚及功能 3 控制信号引脚 RST VPD 系统复位 备用电源输入引脚 输入信号 有两个作用 RST端维持两个机器周期以上的高电平时将使单片机复位 复位后CPU各寄存器的特点为 49 A 四个I O口P0 P3锁存器均被初始化为0FFH B 堆栈指针寄存器SP 07H C 串行口数据缓冲器寄存器SBUF的内容不确定 其它各专用RS均被写成00H D 内部RAM不受复位影响 上电后RAM内容为随机 MCS 51引脚及功能 50 MCS 51引脚及功能 当电源电压下降时 此引脚可为备用电源输入线 为片内RAM提供备用电源 当CPU访问外部memory初时 产生正脉冲ALE信号输出 在其后沿将P0口输出的低8位地址锁存于外部地址锁存器中 51 MCS 51引脚及功能 当片内有EPROM时 可作为编程脉冲输入端使用 访问外部memory的过程中 ALE端仍以不变的频率周期性的输出正脉冲信号 且fALE 1 6fosc 所以可用作对外输出的时钟信号和定时作用 52 MCS 51引脚及功能 53 MCS 51引脚及功能 对于片内有EPROM 编程时 此引脚接21v编程电源VPP 54 MCS 51引脚及功能 准双向端口工作特点 只有使端口锁存器事先置 1 才能使对应口的I O引脚作为输入线使用 而CPU执行输出操作时 不管端口的状态如何都能直接输出信号 4 输入输出引脚 P0 P1 P2 P3均为准双向信息传输端口 55 注意 P0 P3除作为一般的I O线使用外 还兼有以下功能 MCS 51引脚及功能 P1口 在EPROM编程验证程序时输入低8位地址 P0口 当CPU访问外部memory时 P0口可分时作为低8位地址线和8位双向数据线用 56 MCS 51引脚及功能 P3口 第二功能见P27表2 7 复位后P3口的第二功能可直接使用 但复位前必须先置口内锁存器FFH才能用 P2口 当CPU访问外部memory时 P2口可作为外部高8位地址的输出线 57 58 第二节MCS 51的存储器结构 MCS 51单片机物理上有4个存储空间 片内程序存储器ROM 4KB 片外程序存储器EPROM 64KB 片内数据存储器RAM 256B 片外数据存储器RAM 64KB 59 这些存储器结构的物理特点是 程序存储器和数据存储器空间是相互独立的 片内数据存储器和片外数据存储器空间在也是相互独立的 从逻辑上MCS 51单片机又可分为3个存储空间 片内 外统一编址的程序存储器 共68KB 片内数据存储器 共256B 片外数据存储器 共64KB 60 MCS 51存储器配置 0FFFH 256B 4KB 64KB 64KB 68KB 61 CPU通过P0 P2口送出要访问存储单元的地址A0 A15 CPU发出ALE信号把P0口地址信号A0 A7锁入锁存器 存储器按A0 A15地址进行译码 找到要访问的单元 如下页图 MCS 51访问外部存储器 粗略的讲可分为以下四步 一 MCS 51单片机片内外存储器系统简介 62 63 64 二 MCS 51各存储器具体说明 外部程序存储器用于存放程序 程序执行时必要的常数和表格 外部程序存储器EPROM MCS 51可以扩展64K字节的EPROM 其中 外部程序存储器受PC管理 PC的内容始终指向下一条将要执行的指令所在的地址 PC具有自动加1的功能 保证程序按规定顺序执行 65 二 MCS 51各存储器具体说明 外部程序存储器的容量为64K字节 地址范围为 0000H 0FFFFH 且有 66 67 内部程序存储器EPROM 68 外部数据存储器主要存放运行程序的过程中所需的数据 中间结果和最终结果 外部数据存储器受datapoint 数据指针 寄存器DPTR和工作寄存器R0及R1的管理 外部数据存储器RAM 69 外部数据存储器在软件上由MOVX类指令访问 外部数据存储器的最大容量为64K字节 地址范围为 0000H 0FFFFH 外部数据存储器RAM 70 71 MCS 51芯片内部有128个字节 BYTE 的内部数据存储器RAM 称片内RAM 地址为00H 7FH 有128B的特殊功能寄存器 SFR 区 地址为80H 0FFH 也称高地址区 共256个字节的存储空间 从使用性能上可分为以下几部分 4 MCS 51片内数据存储器 72 SFR FFH 73 位寻址空间 内部RAM中 地址20H 2FH16个字节单元 共128个位 具有位寻址的功能 即CPU可对这16个字节中的每一位 工作寄存器R 内部RAM中00H 1FH单元 共32B 为通用工作Register区 分为4组 每组8个字节 均可用作R0 R7 用户可根据PSW中的RS1和RS0的值选择相应的工作寄存器组 MCS 51内部RAM 74 这128个位的地址规定为00H 7FH RAM的低区地址也是00H 7FH 在使用中由软件指令加以区分 如 MCS 51内部RAM 单独进行操作 所以20H 2FH区域是MCS 51单片机布尔处理机的一个存储空间 其中 20H 2FH对应此存储区中16个字节的每一个字节的地址 因为每个字节有8位 所以此存储区共有16 8 128位供用户单独操作 75 MCS 51内部RAM 且有 对应的字节地址 20H 位地址 8 其中位地址 8的余数为该位在该字节中所处的具体位置 MOV20H A 字节操作 20H单元 A的内容MOV20H C 位操作 布尔处理机存储空间第20H位 即24H单元中的第0位 中 PSW中进位位CY内容 76 例 位地址7AH对应的字节地址的计算方法是 7AH 8 商为F 余数为2 表示该位处于片内RAM2FH 20H F 字节的第二位 位地址 字节地址 20H 8 N 其中 N 0 7 为该位在此字节中的位置 例 2EH中的第6位对应的位地址 2EH 20H 8 6 76H 77 30H 7FH空间 用户RAM区 共80个字节 此部分空间可以作为buffer 堆栈区等存储单元用 但不能作为工作寄存器用 不能进行位寻址 对于工作Register区 00H 1FH 单元 没有被选中的工作Register单元与30H 7FH单元具有同样功能 78 MCS 51特殊功能Register SFR 在80H 0FFH这128个字节中除去SFR占用的21个字节外其余字节均无定义 注意访问无定义的单元得到的是一个随即数 SFR的分布 MCS 51单片机除PC外共有20个SFR 占21个字节 因为DPTR占两个字节 它们分布在内部RAM的80H 0FFH 79 MCS 51特殊功能Register SFR 位寻址空间 在SFR中凡是字节地址能被8整除的SFR均有位寻址功能 即末位地址为8或0的SFR有位寻址功能 共11个SFR有85位可进行位寻址 SFR与RAM 00 7FH 的区别 SFR作为源操作数时只能采用直接寻址 寄存器间接寻址对其无效 但对低128B的RAM区有效 80 SP 堆栈指针RS 是个8位SFR 在RAM中的地址值为81H 其内容用于指示堆栈栈顶 已存有数据的堆栈存储单元 的地址值 每当有数据进栈时SP值自动加1 出栈时SP值自动减1 当系统复位后 SP 07H 即堆栈实际上是由08H单元开始 几个常用SFR的基本功能 81 串行数据缓冲器SBUF 是个8位的SFR 地址为99H 用于存放串行通讯时待发送或已接受到的数据 它由两个独立的寄存器 Rbuf和Tbuf 组成 但它们共用一个地址值 复位后SBUF的内容不确定 堆栈 是个具有先入后出特点的一片存储区 堆栈的真正工作区一般选在片内RAM的30H 7FH内 几个常用SFR的基本功能 82 定时器 计数器T0 T1 8051系列单片机有两个16位的定时器 计数器T0和T1 它们分别由TL0 TH0和TL1 TH1两个8位的独立的SFR组成 分布在片内RAM的地址为8AH 8DH 注意 T0与T1在使用时不能作为2个16位的RS来对待 83 第三节单片机的时序 一 MCS 51单片机的复位方法及复位后内部各SFR状态 复位后内部各SFR的状态 看P25表2 5 84 一条指令可分解为若干个基本的微操作 而这些操作所对应的脉冲信号在时间上有严格的先后次序 这种次序就称为计算机的时序 要求掌握以下几个概念 二 CPU的时序 振荡周期T振 也称时钟周期 指为单片机提供时钟信号的振荡源的周期 当晶振频率为12MHz时T振 1 12us 85 CPU的时序 机器周期T机 指CPU完成某些基本操作的所需要的时间 1个机器周期包含6个状态周期 T机 6T状 12T振 1us 2 状态周期T状 也称S周期 由两个振荡周期组成一个状态周期 如上例中 T状 Ts 2 1 12 1 6us 86 CPU的时序 指令周期T指 指令周期是指执行一条指令所需要的时间 一般情况下 T指 1 4 T机 MCS 51系列单片机执行一条最长的指令 如乘 除法指令 需要4个机器周期 即4us时间 87 第二章补充练习 MCS 51单片机内256B的数据存储器可分为哪几个区 分别作什么用 开机复位后 CPU使用的是哪组工作寄存器 它们的地址是什么 CPU如何确定和改变当前工作寄存器组 MCS 51单片机的程序存储器和数据存储器共处同一地址空间为什么不会发生总线冲突 位地址7CH与字节地址7CH如何区别 位地址7CH具体在片内RAM中什么位置 88 第三章MCS 51单片机指令系统及编程举例 学习目标 通过本章的学习 学生应该能够 熟练地掌握符号指令及寻址方式 掌握常用伪指令的使用方法以及汇编语言指令的完整格式 会读常见典型程序 学会编写基本的汇编语言程序 89 重点和难点内容 MCS 51寻址方式 指令系统及汇编语言程序的编写方法 解决方法 详细讲解 多举实例 不断重复要点 增加练习 课外指导 答疑 教学效果检测方法 质疑 批阅作业并结合期中考试 90 指令 是控制计算机进行各种操作的运算代码形式的命令 MCS 51有42种助记符33个指令功能共111条指令 指令系统 计算机所能识别执行的全部指令的集合称作这种计算机的指令系统 各种计算机的指令系统各不相同 本章常用术语简介 91 机器码 计算机所能辨认的命令是二进制代码 又称操作码或指令代码称 一种计算机有几十种甚至几百中指令 如果都用二进制代码 记忆 书写 编程都很不方便 且易出错 程序 是人们为了完成某中预定的任务 将一系列指令 数据 地址按一定顺序排列而得到的一组指令 92 汇编语言源程序 用助记符 操作码 符号地址和标识符等书写的程序称之为汇编语言源程序 助记符 为解决上述问题 制造厂家对指令系统中的每一条指令规定了特定的英文缩写符号称为助记符 MOVA R0 A R0内容 MOV称指令助记符对应的机器码为 11111000 93 汇编 汇编语言源程序在机器执行前必须先转换为相应的机器码方可被机器识别执行 这个过程称为翻译 汇编 翻译汇编语言源程序的方法有两种 人工翻译和汇编软件自动翻译 本章第一次作业 教材P55习题与思考题2 4 7 8 4 10 补充作业 请用位操作指令编写实现下面逻辑表达式的程序 PSW 5 P1 3 Acc 2 B 5 P1 1 94 3 1指令格式简介 3 2MCS 51的寻址方式 3 3指令系统 3 4伪指令 3 5汇编程序设计及应用举例 本章主要内容 95 第一节指令格式简介 汇编语言的标准格式为 标号 指令助记符 操作数1 操作数2 操作数3 注释 标号 是用户定义的符号 它代表该条指令的符号地址 标号也称标识符 标号组成 以英文字母开始 由1 8个字符 字母 数字和下划线 组成 以 结尾 96 操作码助记符 是汇编语言中每一行不可缺少的部分 它规定了指令的操作功能 操作码助记符是由2 5个字母组成的字符串 也是机器的保留字 操作码与操作数之间要用若干空格分开 注意 标号不能使用机器的保留字 一个程序中不允许重复定义标号 97 操作数 可以是具体的数字 也可以是符号或RS名 操作数可分为源操作数SRC source 和目的操作数DST destination 二者用逗号分开 有些指令无操作数 带 的内容可省 注释 注释必须以 开头 可有可无 可由任何可打印的ASCII码字符组成 用于解释说明程序 98 第二节MCS 51的寻址方式 例 movA data A 将数字data特点 指令操作码后面的一个字节就是操作数本身 立即数是放在程序存储器中的一个常数 1 立即寻址 所要找的操作数是一二进制数或十进制数 出现在指令中 用 作前缀 99 为立即数的前缀符号 data可为16位 也可为8位 MCS 51系列只有一条指令 其立即数为16位 这就是 MOVDPTR data16 DPH data高8位 DPL data低8位 100 2 直接寻址 例 MOVA 70H A RAM区70H单元的内容 特点为 指令中直接给出操作数的地址 指令操作码后面的一个字节就是实际操作数的地址 8位 101 因为direct是8位二进制数 所以直接寻址的范围主要有以下三个地址空间 指令中的直接地址可用direct表示 例 PUSHdirect 功能为将direct所指 示的片内RAM中单元 的内容 堆栈中 102 内部RAM及SFR中 可进行位寻址的位地址空间共213位 内部RAM中有20H 2FH中有128个位 SFR中有85位 内部RAM00H 7FH地址空间共128个字节 特殊功能R 即SFR 直接寻址是访问SFR的唯一寻址方式 103 3 寄存器寻址 操作数存放在工作寄存器R0 R7中 或寄存器A B DPTR和C中 例 MOVA Rn A Rn n 0 7特点 Rn的内容就是操作数本身 寻址范围是 被选中的工作RS组中的8个workRS R0 R7及A B DPTR和进位标志CY C 104 R中的内容不是操作数本身而是其所在存储单元的地址值 即R0指示了操作数所在存储单元的地址值 4 寄存器间接寻址 间址寻址 指令中寄存器的内容作为操作数存放的地址 在指令中间接寻址寄存器前用 表示前缀 例 MOVA R0 A R0 将R0所指向存储单元的内容 A中特点 105 可用作间址RS的register有workRS R0 R1 数据指针DPTR 例如 一本书放在甲抽屉中 上了锁 其开锁的钥匙放在乙抽屉中 乙抽屉也上了锁 问如何才能取到那本书 答 这就是一个间接寻址的问题 要经过两次寻址才能找到那本书 而寄存器间接寻址也是同样 106 间址寻址的范围 R0 R1 SP作为间址RS可以访问内部RAM的128个字节 DPTR作为间址RS可访问外部RAM全部的64KB空间 R0 R1作为间址RS可以访问外部数据存储器RAM页内256个字节 可用P2口选中页面 64KB的RAM可分为256个页面 107 间址寻址方式有 ADDA Ri i 0或1 MOV Ri direct i 0或1 MOVXA DPTR 108 又称变址寻址 有两种方式 MOVCA A PC A A PC MOVCA A DPTR A A DPTR 特点 5 基址寄存器加变址RS间接寻址 操作数地址 变地址 基地址基地址寄存器DPTR或PC变址寄存器 A 109 是MCS 51单片机特有的一种寻址方式 它以地址指针DPTR或程序计数器PC 当前值 为基地址R 以累加器A作为变址R 这二者内容之和才是实际操作数地址 A是无符号8位数 00H FFH 寻址的范围是68K字节的程序存储器EPROM 110 该寻址方式常用于访问程序存储器和查表 两条指令的区别为 前者查表的范围是相对PC当前值以后的255字节地址空间 而后者查表范围可达整个程序存储器64K字节的地址空间 111 6相对寻址 把指令中给定的地址偏移量与下一条将要执行的指令所在单元地址 PC内容 相加 得到真正有效的操作数所存放的地址值 例 JCrel 若PSW中CY 1 则转移至PC PC当前值 rel处 若PSW中CY 0 PC不变 特点 112 以程序计数器PC当前值内容为基地址 加上指令中给定的偏移量作为操作数的存储地址 位移量rel为带符号的8位二进制数 必须以补码形式出现 所以rel的范围为 127 128 即该种寻址方式的寻址范围为 以当前PC内容为起点向下可偏移128字节 向上可转移127个字节 113 7 位寻址 专门用于位操作指令 可对MCS 51中213个位进行运算和传送的操作 且本寻址方式只能使用专用累加器C 例 MOVC 20H 114 115 第三节指令系统及应用举例 MCS 51单片机共有111条指令 用42个助记符表示了33种指令功能 同一种指令所对应的操作码可多达8种 指令按其功能可分为5大类 数据传送类 算术运算类 逻辑运算类 控制转移类 位操作指令 116 指令中操作数的描述符号 Rn 工作寄存器R0 R7Ri 间接寻址寄存器R0 R1Direct 直接地址 包括内部128BRAM单元地址 21个SFR地址 data 8位常数 data16 16位常数addr16 16位目的地址addr11 11位目的地址rel 8位带符号的偏移地址DPTR 16位外部数据指针寄存器bit 可直接位寻址的位 117 direct可表示片内RAM00H 7FH 128B 的内存空间和SFR的地址 但不包括A DPTR Rn寄存器 除以direct为DST外 其它指令都不影响PSW中除P以外的其它位 以A为DST的指令会影响PSW中的P位 一 数据传送类指令 分为五部分共29条 看P41表3 1 特点如下 118 119 120 访问ROM和片外RAM的指令所使用的寄存器只能是专用寄存器A 通常SRC可以是 A Rn direct Ri和 data5种 而DST只能有4种 不能是 data 访问SFR的唯一寻址方式是直接寻址 SFR的名称代表直接地址 A寄存器除外 121 数据传送类指令总结 122 注意 以下指令均为非法指令 MOVRn RnMOV Ri RiMOVRn RiMOV data AMOVX30H DPTRMOVCB A DPTR 哇 好容易出错啊 123 例1设内部RAM30H单元内容为52H 给出以下程序执行后 R0 A 30H 及30H在不同指令中的作用 MOVA 30HMOVA 30HMOVR0 30HMOVA R0MOV30H 30H A 30H A 30H 即 A 52H R0 30H A R0 即 A 52H 30H 30H 124 解 R0 30H A 52H 30H 30H其中 第一 三 五句中 30H为立即数 第二 五条指令中30H为直接地址 第四条指令R0中的30H为隐含的间接地址 125 例2 已知P1口内容为0AAH 给出下列程序执行的结果及相应的机器码 P214表A 1 7830H 851090H E510H F6H 8640H 126 例3 设片内RAM30H单元内容为40H 40H单元中的内容为10H P1口上的内容为0CAH 给出执行以下程序的结果 40H P1 127 例4 设片外 0 分析下面程序执行的结果 128 H 44H 2030H 129 例5 设堆栈指针 SP 11H PSW 00H 给出下面程序执行的结果 MOV20H 53HPUSH20HPOPPSW 20H 53H SP SP 1 SP 12H 53H SP 12H PSW SP 53H SP SP 1 SP 11H 130 例3 试编写一程序段 实现将外RAM0FAH单元中的内容传送到外RAM04FFH单元中 解 MOVP2 00HMOVDPTR 04FFHMOVR0 0FAHMOVXA R0MOVX DPTR A 131 小结 数据传送类指令有几种类型 哪些影响哪个标志位 132 二 算术运算类指令 看P45表3 2 此类指令具有加 减 乘 除指令 它们一般对PSW的CY AC OV和P各位均有影响 对其余四位不影响 但INC与DEC指令不影响PSW的内容 具体特点如下 133 加减法指令的DST只能是A SRC可为其它四种方式 减法指令只有带进位减助记符 除法中 OV 1表示除数为0 A B中的内容均不定 其它情况OV 0 乘法中 OV 1表示乘积大于255 OV 0表示乘积小于255 加1减1指令不影响PSW除P位以外的其它位 乘 除法中CY 0 134 程序中DAA指令必须紧跟在加法指令之后 再判断当PSW中的CY 1或A寄存器中高4位值大于9 则对A寄存器中高4位内容进行加6处理 先判断当PSW中的AC 1或A寄存器中低4位值大于9 则对A寄存器中低4位内容进行加6处理 十进制加法调整指令DAA的调整原理为 在操作数为十进制时 加法指令执行后 135 136 类型 助记符 功能 对PSW的影响 字节数 振荡周期 算术运算类指令 137 例1 给出以下程序执行结果及对程序状态字PSW的影响 30H 43H A 7AH R0 30H A 30H 7AH 0BDH MOV30H 43HMOVA 7AHMOVR0 30HADDA R0 138 上述结果对于无符号数而言为正确 但对有符号数而言不正确 因为2个正数相加得到一个负数 所以一定是发生了溢出 结果不正确 执行程序以后 据以上结果知PSW中 CY D7CY 0 AC D3CY 0 奇偶位P 0 OV D7CY D6CY 0 1 1 139 MOVR0 7EHMOV7EH 0FFHMOV7FH 38HMOVDPL 0FEHMOVDPH 10HINC R0INCR0INC R0INCDPTRINCDPTR R0 7EH 7EH 0FFH 7FH 38H DPL 0FEH DPH 10H 7EH 1 0FFH 1 00H 7EH R0 7FH 7FH 1 38H 1 39H 7FH DPTR 10FEH 1 10FFH DPTR 10FFH 1 1100H 例2 分析执行以下程序段的结果 140 MOVA 0C4HSUBBA 55H 例3 设进位位C 1 给出执行以下程序片断后A寄存器的结果及对PSW的影响 A 0C4H A A 55H C 141 以上结果对于无符号数而言为正确 OV 1无意义 对于符号数则 OV 1表示结果为错误 负数减正数结果应为负数 而6EH为正数 原因是因为符号数C4H真值为 3CH 所以C4H 55H 1 3CH 56H 92H 而 92H 146已超出8位二进制数所能表示的最大负数 128 其中 A 6EH CY D7CY 0 AC D3CY 1 P 1 OV D7CY D6CY 0 1 1 142 例4 设累加器A中内容为89的BCD码 即10001001 R0中的内容为28的BCD码 即00101000 求执行下面程序后 A中结果及正确的BCD码值应为多少 ADDA R0DAA A R0 A 即 A B1H 即非十进制正确结果 也非十六进制正确结果 A 17H 这里 因为 C 1 所以正确答案为117 143 因为在执行DAA指令时 首先由于 AC D3CY 1 所以对A中低4位内容加6调节 使A的低4位变为0111 然后又由于A中高4位内容大于9 所以对A中高4位内容再加6进行调整 使其变为0001 同时使进位位 CY 1 则最终得到结果为117 144 以累加器A作为DST SRC可以是 data Rn direct 内部RAM低128B或SFR 和 Ri四种方式 三 逻辑运算类指令 看P49表3 4 逻辑运算类指令主要用于逻辑运算中 主要可以分为两大类 2 以direct为DST 而以A或 data为SRC的操作指令 145 三 逻辑运算类指令 看P45表3 4 逻辑与 ANL 按位相与 特点是清0或屏蔽 操作数和0相与结果为0 和1相与原内容保持不变 3 单操作数的指令 操作数必须放在A中 4 各类指令的特点为 特点 此类指令除RLC和RRC指令外 均不影响PSW中除P以外的其他位 而RLC和RRC也只影响P与C位 146 逻辑运算类指令 147 148 逻辑异或指令 XRL 对操作数中的某一位或某几位进行取反 两个操作数不同出1 相同出0 具体方法为 操作数和1相异或内容被取反 和0相异或原内容保持不变 看例3 逻辑或 ORL 按位相或 特点是置1 操作数和1相或结果为1 和0相或原内容保持不变 看例1及例2 149 逻辑循环右移 RL 特点是在操作数最高低为0的条件下 操作数每被左循环移位一次 其内容相当于被除2 看例4 逻辑循环左移 RL 特点是在操作数最高位为0的条件下 操作数每被左循环移位一次 其内容相当于被乘2 150 MOVA 0F0HANLP1 00HORLP1 55HORLP1 AANLP1 A A 0F0H P1 00H P1 55H P1 0F5H P1 0F0H 例1 给出下列两段程序执行的结果 151 屏蔽A中高5位 去掉P1中的低3位 P12 0 A2 0 例2 要求编程把累加器中的低3位传送到P1口 传送时不影响P1口的高5位 ANLA 07HANLP1 0F8HORLP1 A 152 例3 MOVA 42HXRLA 52H 153 例4 分析以下程序执行的结果 MOVA 08HRLARLARLARRARRA A 08H 左移一位 A 10H 左移一位 A 20H 左移一位 A 40H 右移一位 A 20H 右移一位 A 10H 154 例5 分析以下程序执行的结果 CLRCMOVA 99HRLAMOVA 99HRRCA C 0 A 99H 左移一位 A 33H A 99H 带进位位右循环一位 A 4CH C 1 155 例6 已知片内RAM的DAT单元存放着一个小于20的无符号数 分析以下程序实现的功能 MOVR0 DATMOVA R0RLAMOVR1 ARLARLAADDA R1MOV R0 A 功能为 将DAT单元的内容乘以10 注意 DAT单元数的最大值为20 1EH 即1EH 00011110 156 四 控制程序转移类指令 看P51表3 5 3 访问 128 127B存储空间的指令有SJMP和条件转移类指令 其中 1 访问64KB存储空间的指令有LCALL LJMP JMP 2 访问2KB存储空间的指令有ACALL AJMP 157 四 控制程序转移类指令 看P47表3 5 5 CJNE指令的第一操作数可以是A Rn和 Ri 而第二操作数只能是 data和direct 且指令只影响PSW中的CY位 无论转移与否 CJNE指令均影响CY的值 但它执行后不影响各操作数 第一与第二 的内容 4 除CJNE指令外 其余指令对PSW中各值均无影响 158 159 指令中的rel为一个8位符号数 表示要转移的相对地址值 6 如果整个程序的口地址发生改变 只要程序中各指令的相对位置不发生变化 则SJMP和条件转移中的各地址均不发生变化 但长转移与绝对转移指令LJMP AJM和JMP中地址值均发生变化 要修改程序中的相应地址值 160 注意 MCS 5164Kmemory分为16段 32个区 256页 每段包括2个区 每区2K字节 划分方法如下 EPROM16位地址码中高8位定义为页地址 低8位为页内地址 所以64Kmemory分为256页 每页256个字节 规定每8页为一个2K区 8 256 页地址 高8位地址 可以写成两位16进制数XhXlH 其中 高位16进制数Xh由0 F定义为16个段 低8位Xl由0 7页定义第一个2K区 8 F页定义第二个2K区 低8位Xl的值表示段内具体的页码 XL的0 7页定义为某段内第一个2K区 XL的0 8页定义为第二个2K区 161 例如 AJMP3ABCH 设此指令执行前 PC 289AH AJMP3DEFH 设此指令执行前 PC 37FEH AJMP3BCDH 设此指令执行前 PC 3456H 解释 第2条指令的操作码位于第3段7页内 目的地址处于第3段第D页内 与 PC 2 3段8页 处于同一2K范围内 所以此指令正确 执行此指令的功能是 保持PC15 PC11值不变 将目的地址3ABCH的第10 0位 01010111100B 使 PC 0011101010111100B PC PC 2 3ABEH PC15 PC11 00111 解释 第一条指令的操作码位于第3段第8页 因为 PC 389AH 而目的地址为3ABCH 处于第3段A页内 与 PC 2处于同一个2K范围内 所以此指令使用正执行后的功能使 PC 3ABCH 即使程序转向指定地址执行指令 指令的执行过程为 162 定义 PC当前地址 SJMP指令第一字节所在地址 2 PC 3DEFH 解释 第3条指令 PC 3456H 所以 PC 2 3458H处于EPROM中3段第4页内 目的地址为3BCDH 处于PROM中第3段B页内 与第3段4页内的程序不属于同一个2K地址范围 所以此处AJMP指令使用错误 注意2 手工汇编计算相对地址rel的方法 rel 目的地址 SJMP指令第一字节所在地址 2 目的地址 PC 2 目的地址 PC当前值 规定 当目的地址大于PC当前地址时 rel值应在00 7FH之间 正值 若rel值大于7FH时 说明向后跳转超过 127 超出本指令应用范围 不能用本指令 当目的地址小于PC当前地址时 应有 目的地址 PC当前值 rel 0 其 163 例如 计算下列指令的相对地址rel 指令第一字节所在地址指令目的地址rel值2100HSJMP2123H21H 02143HSJMP2111H0CCH 0第一条指令rel 2123 2100 2 0021H 所以rel 21H第二条指令rel 2111 2143 2 FFCCH 所以rel 0CCH 中低8位为rel的实际值 高8位一定是FFH 表明rel是个负数 当高8位不是0FFH则说明向前跳转超过 128 本指令不能用 注意3 AJMP与ACALL指令转移或调用的目的地址必须在指令操作码第一字节所在地址值 2后的同一2K范围内 否则上述指令不能用 164 例1 MCS 51单片机的P1口与某设备数字温度计相连 如果设备温度大于50 C时 需要降温 小于50 C时 需要升温 等于50 C时停机 其程序如下 165 MOVA P1CJNEA 50 CHK1 停机操作 CHK1 JCCHK2 降温操作 CHK2 升温操作 A P1 将外设的温度值即P1口送入A中 A 50则转CHK1 否则停机 若 A 50 则 C 0 若 A 50 则 C 1 A 50否 即 C 1 是则转CHK2处 否则执行降温操作 执行此处程序表示A 50 所以应执行降温 此处表示 A 50 所以执行升温指令 此处表示 A 50 所以执行停机操作 166 MOVR0 01HMOVR1 02HMOVR2 03HDJNZR0 LABLE0DJNZR1 LABLE1 第一条转移指令 R0 R0 1 0 顺执 第二条转移指令 R1 R1 1 1 0 程序转至LABLE1 例2 分析以下程序走向 1

温馨提示

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

评论

0/150

提交评论