




已阅读5页,还剩271页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 单片机原理及应用 2 目录 单片机概述单片机芯片的硬件结构MCS 51单片机指令系统MCS 51汇编语言程序设计单片机存储器扩展单片机的中断与定时系统单片机I O扩展与应用单片机串行数据通信MCS 51单片机应用与开发技术 3 第一章单片机概述 单片机的概念单片机的发展单片机的应用 4 什么是单片机 单片机 将计算机的五大部件集中在同一块集成电路硅片上的计算机 第一节单片机的概念 单片机的名称 单片微型计算机 SCMC 微控制器 MCU 嵌入式控制器 EMCU 单片机与一般微机最根本的不同之处 单片机的五大部件集成在一块集成电路硅片上 5 什么是通用单片机和专用单片机 通用单片机是一种基本芯片 专用单片机是针对一种产品或一种控制应用专门设计的 单片机与单片机系统 单片机系统是在单片机芯片的基础上扩展其它电路或芯片构成的具有一定应用功能的计算机系统 6 单片机应用系统与单片机开发系统 单片机开发系统即是单片机系统开发调试的工具 仿真器 编程器等 机器语言 基本的的语言形式 多出现在应用系统中 汇编语言 单片机开发中最常用的程序设计语言 高级语言 很具发展潜力 单片机的程序设计语言和软件常用单片机语言 汇编语言 高级语言c51 7 单片机的分类 4位单片机特点 一次处理4位二进制数代表产品 COP4XX系列 NS公司 TMP47XXX系列 Toshiba公司 用途 计算器 家用电器等 8位单片机特点 一次处理8位二进制数代表产品 MCS 51系列 Intel公司 M6805系列 Motorola公司 用途 工业控制 智能仪表 家用电器和办公自动化系统 8 16位单片机特点 一次处理16位二进制数代表产品 MCS 96系列 Intel公司 M68HC16系列 Motorola公司 用途 过程控制 智能仪表 家用电器和计算机外设等 32位单片机特点 一次处理32位二进制数代表产品 M68300系列 Motorola公司 SH系列 日立公司 用途 多媒体 蜂窝电话 光驱等计算机外设 9 第二节单片机的发展 单片机的发展历史第一阶段 4位单片机阶段 主要特点是 价格便宜 具有一定的控制功能 主要代表系列有 日本NEC公司的uMOS40系列 松下公司的MN1400系列 夏普公司的SM系列 富士通的MB88系列等等 第二阶段 1976 1978年 低 中档8位单片机阶段 以Intel公司的MCS 48为代表 这个系列的单片机片内集成有8位CPU 并行I O口 8位定时器 计数器 寻址范围不大于4K 无串行口 10 第三阶段 1978至1982 高档8位单片机阶段 这阶段推出的普遍带有串行I O口 有多种中断处理系统 多个16位定时器 计数器 片内RAM ROM容量较大 寻址范围可达64K 有的片内还带有A D转换接口 主要代表系列有Intel公司的MCS 51 Motorola公司的6801 Zilog公司的Z8等 第四阶段 1982至今 8位单片机完善发展和16位 32位单片机推出阶段 这阶段的主要特征是一方面发展16位单片机及专用单片机 另一方面同时不断完善高栏8位单片机 改善其结构 以满足不同的用户需要 11 8位单片机的市场前景 8位单片机用途广泛 美国 每家226个办公室42个每汽车35个 注意 基于Internet 无线数字传输的嵌入式应用将会是32位机最广泛的市场 12 8位单片机的新发展 为了减小体积 增强功能 提高灵活性和可靠性 8位单片机的新发展体现在下面4个方面 CPU功能增强 内部资源增多 引脚的多功能化 低电压和低功耗 13 8位单片机的新发展 为了减小体积 增强功能 提高灵活性和可靠性 8位单片机的新发展体现在下面4个方面 CPU功能增强采用亚微米的CMOS工艺提高运算速度 计划把80C51设计成1 3时钟周期执行一条指令 并可在33MHZ时钟下运行 内部资源增多 引脚的多功能化 低电压和低功耗 14 8位单片机的新发展 为了减小体积 增强功能 提高灵活性和可靠性 8位单片机的新发展体现在下面4个方面 CPU功能增强 内部资源增多增加了A D和D A转换器 DMA通道 总线接口 晶振和LCD驱动电路 引脚的多功能化 低电压和低功耗 15 8位单片机的新发展 为了减小体积 增强功能 提高灵活性和可靠性 8位单片机的新发展体现在下面4个方面 CPU功能增强 内部资源增多 引脚的多功能化采用一脚多用设计方案 减少引脚数量 提高应用灵活性 低电压和低功耗 16 8位单片机的新发展 为了减小体积 增强功能 提高灵活性和可靠性 8位单片机的新发展体现在下面4个方面 CPU功能增强 内部资源增多 引脚的多功能化 低电压和低功耗制造成 3V电源的单片机 采用CMOS工艺 设立掉电和空闲两种工作方式 17 几种8位单片机的性能概况 1 Intel公司的MCS 51系列 2 Philips公司的80C51系列 3 Microchip公司的PIC系列 4 Atmel公司的AT89 AT90 AT91和智能IC卡四个系列 5 Motorola公司的M68HC05 M68HC11系列 18 MCS 51系列单片机特性 19 除了Intel公司外 Siemens Philips和Fujitsu等公司都在80C51基础上推出与Intel公司的80C51兼容的新型单片机 统称为80C51系列 Philips公司的80C51系列单片机性能卓著 产品最齐全 最具有代表性 它以80C51为内核 新增功能电路有 A D转换器捕捉输入 定时输出PWM PulseWidthModulator 脉冲宽度调制器I2C总线接口视频显示控制器监视定时器E2PROM 20 80C51系列单片机主要性能特点 21 PIC系列单片机分低档 中档和高档三个层次 1 产品特点 价格低 率先采用RISC 精简指令系统计算机 技术速度高 两级指令流水线结构采用哈佛双总线结构可靠性好 采用OTP 一次性程序 技术 比熔丝式EPROM更为可靠2 主要应用 嵌入式单片机的主流产品之一 22 PIC系列中档单片机性能表 23 Atmel公司是世界上著名的高性能 低功耗 非易失性存储器和数字集成电路的一流半导体制造公司 单片机产品分为AT89 AT90 AT91和智能IC卡等四个系列 1 产品特点 E2PROM存储器技术FLASH闪速存储器技术2 主要应用 计算机外部设备 通信设备 自动化工业控制航空航天仪表 雷达系统 导弹机器人 各类武器系统 24 AT90系列单片机选型表 25 Motorola公司是世界最具影响力的单片机厂商 其8位机约占8位机市场的30 份额 该公司共分为M6805 M68HC05 M68HC08 M68HC11等几个系列 26 M6805系列单片机主要性能表 27 M68HC05系列单片机主要性能表 28 M68HC11系列单片机主要性能表 29 第三节单片机的应用 单片机应用的特点1 控制系统的在线应用 2 软硬件结合 1 计算机在控制系统中的离线应用 由微型机或小型机实现 2 计算机在控制系统中的在线应用 由单片机实现 要求 设计人员既要掌握汇编语句编程技术 又要具备较扎实的硬件理论和实践知识 30 1 广泛性 微电子时代的必然发展趋势 意义 有利于产品的小型化 多功能化和智能化 改变了的传统的控制系统设计思想 传统 控制设计思想 现代 控制设计思想 4 应用的广泛性及其重要意义 3 应用现场环境恶劣 注意 使用时 应根据环境的温度情况选择合适的芯片 31 单片机的应用领域1 工业自动化方面2 仪器仪表方面3 家用电器方面4 信息和通信产品方面5 军事装备方面 32 参考书 单片机原理及实用技术 张振荣北京人民邮电出版社 MCS 51系列单片机系统原理与设计 苏凯冶金工业出版社 单片机原理及其接口技术 胡汉才清华大学出版社 33 第二章单片机芯片的硬件结构 MCS 51单片机的逻辑结构及信号引脚MCS 51单片机的内部存储器MCS 51单片机并行输入 输出口电路MCS 51单片机时钟电路与时序MCS 51单片机工作方式 34 第一节逻辑结构及信号引脚 MCS 51单片机结构框图 35 MCS 51单片机芯片内部逻辑结构 中央处理器内部数据存储器内部程序存储器定时器 计数器并行I O口串行口中断控制系统时钟电路位处理器总线 36 1 中央处理器 注意 控制器的时钟脉冲由振荡器OSC电路提供 PC 存放将要执行的指令地址 IR 存放正在执行的指令地址 ID 存放指令码 定时与控制电路 产生时序输出信号和微操作控制信号 控制器 PC PC加1寄存器 指令寄存器 IR 指令译码器 ID 定时与控制电路 ALU 用于进行算术 逻辑运算 ACC 用于存放操作数或操作结果 B 用于存放操作数 PSW 用于存放指令执行后的状态信息 TMP 用于存放中间操作数 对用户不开放 运算器 ALU ACC B PSW TMP1 TMP2 37 2 内部数据存储器由RAM和RAM地址寄存器组成 用于存放可读写的数据 根据片内ROM的结构 单片机可分为 无ROM型ROM型EPROM型E2PROM型FLASH型 3 内部程序存储器由ROM和ROM地址寄存器组成 用于存放程序和原始数据 38 4 定时器 计数器2个16位 80C51 8051 用于将其定时或计数的结果对单片机进行控制 5 并行I O口4个8位 P0 P1 P2 P3 用于使单片机和存储器或外设之间并行传送8位数据 6 串行口1个全双工串行口用于单片机和其它数据设备之间的串行数据传送 39 7 中断控制系统5个中断源 2级中断 10 总线 9 位处理器即布尔处理器 特别适用于控制目的和解决逻辑问题 8 时钟电路典型的晶振频率为12MHZ 40 MCS 51单片机的信号引脚 1 信号引脚介绍 41 1 主电源及时钟引脚 2 控制引脚 3 输入 输出引脚 VCC 40脚 VSS 20脚 XTAL1 19脚 XTAL2 18脚 RST VPD 9脚 复位信号 备用电源ALE PROG 30脚 地址锁存控制信号 编程脉冲PSEN 29脚 外部程序存储器读选通信号EA VPP 31脚 访问程序存储器控制信号 编程电源 P0 8位三态双向I O口 可驱动8个LSTTL负载P1 8位准双向I O口 可驱动4个LSTTL负载P2 8位准双向I O口 可驱动4个LSTTL负载P3 8位准双向I O口 可驱动4个LSTTL负载 42 2 信号引脚的第二功能 引脚 复用 可概况为 一组与三个 一组 P3口 三个 9脚 RST VPD30脚 ALE PROG31脚 EA VPP 43 第二节内部存储器 MCS 51单片机的存储器结构特点 1 数据存储区与程序存储区完全分开 且各有自己的一套系统 2 分为内外存储器 44 存储器的配置情况 物理上 片内程序存储器 片外程序存储器片内数据存储器 片外数据存储器 逻辑上 片内外统一的64KB的程序存储器片内数据存储器64KB片外数据存储器 45 内部数据存储器物理上分为3块 00H 7FH 0 127 低128字节RAM 80H FFH 128 255 高128字节RAM同上128字节专用寄存器 SFR 块 SFR RAM RAM 0FFH 80H 7FH 00H 0FFH 80H 46 1 寄存器区 内部数据存储器低128单元按用途可分为3个区域 2 位寻址区 3 用户RAM区 47 1 寄存器区 内部数据存储器低128单元按用途可分为3个区域 4组寄存器组 R0 R7 由PSW中的RS1和RS0位确定当前工作寄存器组两种访问通用寄存器的形式 MOVR0 09HMOV08H 09H 48 3 用户RAM区 2 位寻址区 16个RAM单元 128位既可进行字节操作 也可进行位操作两种访问位的形式 SETB0FHSETB21H 7 用于存放用户数据或作为堆栈区使用 49 内部数据存储器高128单元 SFR 1 专用寄存器简介 1 程序计数器PC 16位程序地址寄存器存放下一条要执行的指令地址具有自动加1功能没有地址 不可寻址 2 累加器A 8位寄存器存放操作数或结果数据传送中转站作为变址寄存器 50 3 B寄存器 4 程序状态字PSW 8位寄存器主要用于乘除运算A B BAA B A B 例如 MOVA 05HMOVB 03HMULABDIVAB AC OV P的状态在指令执行过程中自动形成 CY的状态在执行算术和逻辑指令时 可以被硬件或软件置位或清除 F0 RS1 RS0由软件设置 51 CY 进位标志位 AC 辅助进位标志位 F0 用户标志位由用户根据程序执行的需要通过传送指令确定 在位操作中 充当累加器 如 RLCA 在某些逻辑运算中也会影响到进位标志位 如 ANLC bit 52 OV 溢出标志位带符号数加减运算 超出 128 127 范围 置位乘法运算 乘积超过255 置位除法运算 除数为0 置位 RS1 RS0 寄存器组选择位用于选择当前工作通用寄存器组有利于程序中保护现场 例如 MOVPSW 08HMOVR0 43H 53 例 设程序执行前F0 0 RS1RS0 00B 请问机器执行如下程序后MOVA 0FHADDA F8HPSW中各位的状态是什么 答 PSW C1H P 奇偶标志位表明累加器中1的个数的奇偶性 01的个数为偶数 11的个数为奇数 54 5 数据指针DPTR 唯一供用户使用的16位寄存器由DPH DPL拼成可用来存放片内ROM 片外ROM和片外RAM的地址访问外部数据存储器时作地址指针使用MOVXA DPTR访问程序存储器时作为基址寄存器使用MOVCA A DPTR 例如 将片外RAM2000H单元中的数据X 取入累加器 MOVDPTR 2000HMOVXA DPTR 55 2 专用寄存器的字节寻址 根据不同的型号 可字节寻址的专用寄存器个数不同 8051 80C51 8031等有21个 8052等有26个 分布不连续 PC不可寻址 只能使用直接寻址方式 56 3 专用寄存器的位寻址 80C51的位寻址空间 位寻址区 128位 专用寄存器可位寻址区 83位 211位 57 MCS 51的堆栈操作 堆栈本身是数据结构范畴内的一种线性表结构在物理上表现为一个特定的存储区域采用LIFO FILO 的存取规则 1 堆栈的功用 现场保护和断点保护 数据的临时存放 常用在编程过程中 2 堆栈的开辟 堆栈只能开辟在内部数据存储器中的低128字节中 最好设置在用户RAM区 30H 7FH 注意 在编程中尽量少的运用多级子程序嵌套和多重中断 58 3 堆栈指示器 SP 功能 用于存放堆栈的栈顶地址 4 堆栈类型 5 堆栈使用方式 自动方式指令方式 59 内部程序存储器 80C51中含有4KB的ROM单元作为程序存储器 地址为0000H 0FFFH 其中位于存储区前部的43个单元为系统保留区 分为6个特殊功能区 地址为0000H 002AH 0000H 0002H为系统启动单元0003H 000AH为外部中断0中断地址区000BH 0012H为定时器 计数器0中断地址区0013H 001AH为外部中断1中断地址区001BH 0022H为定时器 计数器1中断地址区0023H 002AH为串行中断地址区 60 第三节并行输入 输出口电路 MCS 51系列共有4个8位并行双向口 分别表示为P0 P1 P2 P3 每个I O端口内部都有一个8位数据输出锁存器和一个8位数据输入缓冲器 其中四个数据输出锁存器和端口号同名 且为SFR中的一个 61 1 P0口 字节地址80H 位地址80H 87H 可作为地址 数据线 也可作为通用I O口 A1 A2 62 2 P1口 字节地址90H 位地址90H 97H 只可作为通用I O口 63 3 P2口 字节地址0A0H 位地址0A0H 0A7H 既可作为高8位地址线使用 又可作为通用I O口使用 一般不作数据传送工作 64 4 P3口 字节地址0B0H 位地址0B0H 0B7H 只可作为通用I O口 主要用于第二功能控制逻辑 65 第四节时钟电路与时序 1 振荡脉冲信号的产生 什么是时钟电路 时钟电路就是用来产生单片机工作所需要的时钟信号的电路 1 时钟信号的产生 66 2 MCS 51各时钟信号的产生 2 外部脉冲信号的引入 注意 振荡电路产生的振荡脉冲并不是直接拿来使用的 而是经分频后再为系统所用的 原因 在多片单片机系统中 为了使单片机之间时钟信号同步 注意 外时钟信号电平持续时间应大于20ns 且脉冲频率应低于12MHZ 67 4个 节拍 P 状态 S 机器周期 指令周期 MCS 51共有111条指令 按长度分为单字节指令 双字节指令和三字节指令 不同的指令可以在不同的机器周期内完成 时序定时单位 典型指令时序 节拍 P 振荡脉冲的周期 状态 S 振荡周期的2倍 机器周期 振荡周期的12倍 指令周期 执行一条指令需要的时间 时序关系 1个机器周期 6个状态 12个振荡周期 节拍 68 69 第五节工作方式 1 复位方式和复位电路 1 复位操作 功能 初始化单片机 使其进行工作状态 系统重新启动 程序计数器和特殊功能寄存器复位状态 注意 复位后 ALE变为低电平 PSEN变为高电平 70 2 复位信号及其产生 片内复位电路在每个机器周期的S5P2时刻对施密特触发器进行采样 以确定是否有复位操作发生 3 复位方式 上电自动复位 手动复位 71 2 程序执行方式 2个方式 单步执行工作方式连续执行工作方式 1 单步执行工作方式单片机在控制面板上的单步执行键控制下一条一条地执行用户程序中的指令 利用单片机外部中断功能实现主要用于用户程序调试 2 连续执行工作方式所有单片机都需要的一种工作方式 72 3 低功耗方式 1 待机方式 PCON 0 IDL标志位 1 有效 振荡器保持工作 保证中断逻辑 串行口和定时器 计数器电路时钟 中断方式退出 2 掉电保护方式 PCON 1 PD标志位 1 有效 只保证内部RAM数据不丢失 数据转存 掉电中断 接通备用电源 支持内部RAM数据 现实方法 硬件复位方式退出 73 4 EPROM的编程和校验方式 EPROM编程 利用特殊的手段将用户程序写入单片机内部的EPROM 校验 对写入的程序代码连续读出校验的过程 8751H片内含有4KB的EPROM 具有编程 校验和保密编程等工作方式 74 1 编程方式 2 程序校验方式 3 加密方式 8751一旦完成保密编程以后 用户可以让它自由执行EPROM中的程序 但不能以任何形式读出和对它进行局部修改 75 第三章MCS 51单片机指令系统 MCS 51单片机指令格式和寻址方式MCS 51单片机指令分类介绍 76 第一节指令格式和寻址方式 1 指令系统概述 指令 计算机适用于控制各功能部件完成某一指定动作的指示和命令 指令系统 指令的集合 因机器而异 如 Z80有150条基本指令Intel8080有70条基本指令MCS 51有111条基本指令 指令的三种表示形式 二进制形式 直接为CPU执行16进制形式 阅读和书写汇编形式 编写程序 77 2 MCS 51单片机指令格式 操作码 操作数或操作数地址 1 一字节指令 49 2 二字节指令 45 3 三字节指令 17 如 INCDPTR和MOVA Rn 如 MOVA data 如 MOVDPTR data16和MOVdirect data 标号 操作码 操作数1 操作数2 操作数3 注释 78 1 寄存器寻址 特点 指令码中含有操作数所在的寄存器号 MCS 51根据该寄存器可找到操作数 范围 通用寄存器R0 R7 部分专用寄存器 A B DPTR等 2 直接寻址 范围 只限于内部RAM和专用寄存器 3 MCS 51单片机寻址方式 寻址方式 如何指定操作数的所在单元 特点 指令码中含有操作数地址 机器通过该地址寻找操作数 79 4 立即寻址 特点 指令码中含有操作数 3 寄存器间接寻址 特点 指令码中含有操作数地址所在的寄存器号 机器通过寄存器可找到操作数地址 再根据该地址可找到操作数 范围 内部RAM低128单元 只能使用R0和R1 外部RAM 使用DPTR R0或R1 例 MOVA R0 80 5 变址寻址 特点 操作数地址 基地址 地址偏移量 指令码中隐含存放基地址的寄存器号 PC DPTR DPTR PC中的基地址常常是表格始地址 A中存放偏移量rel 功能 主要用于访问程序存储器中的数据表格 例 MOVA A DPTR 81 6 位寻址 特点 操作数是可寻址位 指令码中含有位地址 范围 内部RAM中的20H 2FH位寻址区 高128单元中的可位寻址专用寄存器 表示方法 直接使用位地址位名称表示方法单元地址加位数表示方法专用寄存器符号加位数的表示方法 7 相对寻址 功能 主要用于解决程序中的转移问题 特点 目的地址 转移指令地址 转移指令字节数 REL 注意 在程序中 相对地址偏移量常用符号表示 82 4 MCS 51单片机寻址方式小结 对片内外程序存储器只能使用变址寻址方式 内部数据存储器寻址方式灵活 外部数据存储器只能使用寄存器间接寻址方式 83 第二节指令分类介绍 指令格式中符号意义说明 通用格式 MOV 特点 源操作数和目的操作数都在内部RAM中 1 内部RAM数据传送指令组 16条 1 立即数传送指令 2 直接型数据传送指令 3 寄存器寻址型数据传送指令 4 寄存器间址型数据传送指令 数据传送类指令 84 指令通式 MOVA dataMOVRn dataMOV Ri dataMOVdirect dataMOVDPTR data16 例如 请编程完成将数据X送到20H单元的操作 1 MOVR0 20HMOV R0 X 2 MOV20H X 85 指令通式 MOVA directMOVdirect AMOV Ri directMOVRn directMOVdirect2 direct1 例如 已知 40H X 编程完成将X送到50H单元 1 MOVR0 50HMOV R0 40H 2 MOV50H 40H 86 指令通式 MOVA RnMOVRn AMOVdirect Rn特点 指令码中含有Rn的寄存器号 例如 已知R7 X 编程完成将X送到20H单元 1 MOVA R7MOV20H A 2 MOV20H R7 87 指令通式 MOVA RiMOV Ri AMOVdirect Ri特点 指令码中含有Ri的寄存器号 Ri中应预先放有8位二进制地址 例如 编程完成将20H单元中的数据与30H单元中的数据之间的交换 MOVA 20HMOV20H 30HMOV30H A 88 2 外部RAM数据传送指令组 4条 特点 只能使用间接寻址 助记符为MOVX 且须以累加器A为中介 说明 第1 2条指令可在外部RAM的64K范围内寻址 第3 4条指令能对外部RAM0000H 00FFH范围寻址 指令通式 MOVXA DPTRMOVX DPTR AMOVXA RiMOVX Ri A 89 例如 已知外部RAM的88H单元中有一数据X 试编写程序将X传送到外部RAM的1818H单元 MOVR0 88HMOVDPTR 1818HMOVXA R0MOVX DPTR A 90 3 程序存储器数据传送指令组 2条 特点 使用变址寻址 助记符MOVC 也须以累加器A为中介 单向传送 指令通式 MOVCA A DPTRMOVCA A PC 说明 两条指令均为单字节查表指令 DPTR PC中存放被查表的初始地址 A中存放被查表的项数 91 例3 1 以查表方法把累加器中的十六进制数转换为ASCII码 并送回累加器中 其查表程序如下 2000HHBA INCA2001HMOVCA A PC2002HRET2003HDB30H2004HDB31H2005HDB32H 200CHDB39H200DHDB41H200EHDB42H 2012HDB46H 92 例 已知累加器A中有一个0 9范围内的数 试用查表指令编出能查找出该数平方值表的程序 方法一 以DPTR为基址寄存器查表 MOVDPTR 2000HMOVCA A DPTRORG2000HDB0DB1DB4DB9 DB81END 93 方法二 以PC为基址寄存器查表 单元地址指令码ORG1FFBH1FFBH2402HADDA data1FFDH83HMOVCA A PC1FFEH80FEHSJMP 2000H00HDB001HDB1DB4DB9 DB81END 起始地址 PC当前值 data 94 4 数据交换指令组 4条 指令通式 XCHA RnXCHA directXCHA RiXCHDA Ri 说明 只有累加器A可作目的操作数 这几条指令执行后会影响PSW中的P标志位 最后一条指令用作代码转换 95 例二 已知50H中有一个0 9的数 请编程把它变为相应的ASCII码程序 MOVR0 50HMOVA 30HXCHDA R0MOV R0 A 例一 已知外部RAM的20H单元中有一个数X 内部RAM20H单元中有一个数Y 试编写可以使它们互相交换的程序 MOVR1 20HMOVXA R1XCHA R1MOVX R0 A 96 5 堆栈操作指令组 指令通式 说明 均为双字节指令 A和Rn不可直接出现在指令中 A必须用ACC或它的物理地址 E0H Rn必须用它的物理地址 00H 1FH PUSHdirectPOPdirect 例 利用堆栈作为转存介质编写30H和40H单元中内容的互换 MOVSP 50HPUSH30HPUSH40HPOP30HPOP40H 97 算术运算类指令 1 加法指令组 不带CY位加法指令 ADDA RnADDA directADDA RiADDA data 注意 1 目的操作数只能是累加器A 2 参加运算的两个操作数必须是8位二进制数 操作结果也是一个8位二进制数 且会对PSW中标志位产生影响 3 若将两个操作数看作带符号数 则根据OV位判断结果是否溢出 98 例一 A 0C2H R0 0A9H 执行ADDA R0指令后 A和PSW中的值是多少 例二 执行下列指令后 A和PSW中的值是多少 MOVA 5AHADDA 6BH A 6BH PSW 85H A C5H PSW 44H 99 2 带进位加法指令组 ADDCA RnADDCA directADDCA RiADDCA data 注意 1 目的操作数只能是累加器A 2 主要用于多字节加法运算 3 其中所加的CY中的值是指令执行前的CY值 不是执行中形成的CY值 例一 A 85H R0 30H 31H FFH CY 1 试问CPU执行如下指令后累加器A和CY中的值是多少 1 ADDCA R0 2 ADDCA 31H 100 例二 两个三字节无符号数相加 被加数放在内部RAM20H 22H单元 低位在前 加数放在内部RAM2AH 2CH单元 低位在前 编程序实现 将它们计算的结果放在被加数单元中 MOVR0 20HMOVR1 2AHMOVR7 03HCLRCLOOP MOVA R0ADDCA R1MOV R0 AINCR0INCR1DJNZR7 LOOPCLRAADDCA 00HMOV R0 A 101 3 带借位减法指令组 SUBBA RnSUBBA directSUBBA RiSUBBA data 注意 1 在单片机内部 减法操作是在控制器控制下采用补码加法来实现的 在实际应用中 可按二进制减法法则进行 2 MCS 51中没有不带借位的减法指令 3 进行不带借位减法运算时 可结合 CLRC 指令应用 4 若将两个操作数看作带符号数 则根据OV位判断结果是否溢出 102 例二 判断执行如下程序后累加器A和PSW中的值是多少 CLRCMOVA 52HSUBBA 0B4H 例一 A 0C9H R2 54H CY 1 试问CPU执行指令SUBBA R2后累加器A和PSW中的值是多少 A 74H PSW 04H A 9EH PSW C5H 103 4 加1指令组 INCAINCRnINCdirectINC RiINCDPTR 例一 A 0FFH R3 0FH 30H 0F0H R0 40H 40H 00H 执行下列指令后 各寄存器及单元中的结果是多少 是否改变了PSW的状态 INCAINCR3INC30HINC R0 注意 只有INCA指令可以影响PSW中的奇偶标志位P 其它指令不会影响标志位 104 5 减1指令组 DECADECRnDECdirectDEC Ri 注意 只有DECA指令可以影响PSW中的奇偶标志位P 其它指令不会影响标志位 105 6 乘除指令组 MULABDIVAB 注意 执行这两条指令 进位标志CY总是被清 0 例一 已知两个8位无符号乘数分别放在30H和31H单元中 试编出令它们相乘并把积的低8位放入32H单元 高8位放入33H单元的程序 MOVR0 30HMOVA R0INCR0MOVB R0MULABINCR0MOV R0 AINCR0MOV R0 B 106 7 十进制调整指令 DAA 功能 用于对BCD码十进制数加法运算的结果进行修正 注意 1 DA指令不影响溢出标志 2 使用中通常紧跟在加法指令之后 不能跟在减法指令之后 3 借助进位标志可实现多位BCD数加法结果的调整 例一 试写出能完成85 59的BCD加法程序 并对其工作过程进行分析 MOVA 85HADDA 59HDAAEND 107 例二 已知R0和R1中分别存有BCD被减数91和BCD减数36 试编程求它们的BCD差 并存入R3中 CLRCMOVA 9AHSUBBA R1ADDA R0DAAMOVR3 ACLRCEND 步骤 1 求BCD减数的补数 2 BCD被减数加减数的补数 3 对和进行十进制加法调整 108 例三 4位压缩BCD数的相加程序 设一个加数存放在30H 31H单元 另一个加数存放在32H 33H单元 试编程序将和存放到30H 31H单元 MOVR0 30HMOVR1 32HMOVA R0ADDA R1DAAMOV R0 AINCR0INCR1MOVA R0ADDCA R1DAAMOV R0 A 109 逻辑运算及移位类指令 1 逻辑与运算指令组 ANLA RnANLA directANLA RiANLA dataANLdirect AANLdirect data 功能 主要用于将某存储单元或累加器A中某几位清 0 例 已知R0中有一个ASCII码 试通过编程把它变为BCD码 MOVA R0ANLA 0FHMOVR0 A 110 2 逻辑或运算指令组 ORLA RnORLA directORLA RiORLA dataORLdirect AORLdirect data 功能 主要用于将某存储单元或累加器A中某几位置 1 例 设 A 0AAH P1 0FFH 试通过编程把累加器A中的低4位送入P1口低4位 而P1口高4位不变 MOVR0 AANLA 0FHANLP1 0F0HORLP1 AMOVA R0 111 3 逻辑异或运算指令组 XRLA RnXRLA directXRLA RiXRLA dataXRLdirect AXRLdirect data 功能 主要用于将某存储单元或累加器A中某几位置取反 例 已知外部RAM30H中有一数6EH 试编写程序令其高4位不变 低4位取反 MOVR0 30HMOVXA R0XRLA 0FHMOVX P0 A 112 4 累加器清零和取反指令组 CLRACPLA 注意 其中CPLA取反指令常用于对某个存储单元或某个存储区域中带符号数的求补 例 已知30H单元中有一负数X 试写出求X的补码的程序 MOVA 30HCPLAINCAMOV30H A 113 5 移位指令组 RLARRARLCARRCASWAPA 114 例一 已知30H 31单元中有一个16位的二进制数 30H单元为低8位 请通过编程令其扩大二倍 CPLCMOVR1 30HMOVA R1RLCAMOV R1 AINCR1MOVA R1RLCAMOV R1 A 115 例二 在43H 44H单元中有两个BCD数 请通过编程将它们紧缩成一个字节并放入43H单元中 其中43H单元中的BCD数做为紧缩BCD数的高位 MOVR1 43HMOVA R1SWAPAINCR1ORLA R1MOV43H A 116 控制转移类指令 1 无条件转移指令组 2 条件转移指令组 3 子程序调用与返回指令组 4 空操作指令 117 控制转移类指令 LJMPaddr16AJMPaddr11SJMPrelJMP A DPTR 1 无条件转移指令组 特点 1 不会影响PSW中的标志位 2 指令的操作对象是PC的地址 3 第2 3条指令是相对转移指令 在子程序中很有用 118 长转移指令 LJMPaddr16 PC addr16 例 已知某单片机监控程序起始地址为A080H 试问用什么办法可使单片机开机后自动执行监控程序 答 为使开机后能自动转入A080H处执行 应在0000H处存放一条如下指令 LJMP0A080H 说明 1 把指令码中的addr16送入PC 使机器执行下条指令时无条件转移到addr16处执行程序 2 可以在64KB范围内转移 3 一般情况 addr16可用符号地址表示 119 绝对转移指令 AJMPaddr11 PC PC 2 PC10 0 addr11 例 已知指令KWR AJMPaddr11中 KWR 3100H addr11 10110100101B 则转移的目标地址是多少 答 程序转移到35A5H处执行 注意 AJMP指令的目标转移地址不是与AJMP指令地址在同一个2KB区域 而是应与AJMP指令取出后的PC地址在同一个2KB区域 说明 1 PC PC 2 确定程序转移的页面地址 2 PC10 0 addr11 确定程序转移的页内地址 120 短转移指令 SJMPrel PC PC 2 PC PC rel 1 根据偏移量计算转移的目标地址 例一 835AHSJMP35H例二 835AHSJMP0E7H 答 目标地址 835AH 02H 35H 8391H 答 目标地址 835AH 02H 19H 8343H 说明 1 rel是一个8位的带符号偏移字节 2 rel的取值范围是 128到 127 3 目的地址 PC 2 rel 121 2 根据目标地址计算偏移量 向高地址转移 rel 目标地址 源地址 2 向低地址转移 rel 目标地址 源地址 2 补 FEH 源地址 目标地址 1000H7401HSTAR MOVA 01H1002HF8HMOVR0 A1003H90CF01HLOOP MOVDPTR 0CF01H 1017H80relSJMPSTART END 答 rel E7H 目标地址的转移范围是F99H 1098H 例 有下列程序 请计算SJMPSTAR指令码中的rel 并分析目标地址的转移范围 122 变址转移指令 JMP A DPTR PC A DPTR 说明 1 DPTR中存放目标转移地址的基地址 常常是一张转移指令表的起始地址 2 A中存放表的偏移量 3 主要用于程序的多分支转移 123 例 已知累加器A中放有待处理命令 编号0 4 程序存储器中放有起始地址为PMTB的三字节长转移指令表 试编一程序能使机器按照累加器A中的命令编号转去执行相应的命令程序 CM MOVR1 ARLAADDA R1MOVDPTR PMTBJMP A DPTRPMTB LJMPPM0LJMPPM1LJMPPM2LJMPPM3LJMPPM4 PM0 PM4 124 控制转移类指令 2 条件转移指令组 累加器判零转移指令数值比较转移指令减1条件转移指令 125 应用 1 对于无符号数的比较 可直接根据执行后CY位来判断 2 对于带符号数的比较 先要确定符号 再判断 指令操作情况 1 若左操作数 右操作数 则程序顺序执行 即 PC PC 3 进位标志清 0 2 若左操作数 右操作数 则程序转移 即 PC PC 3 rel 进位标志清 0 3 若左操作数 右操作数 则程序转移 即 PC PC 3 rel 进位标志置 1 126 控制转移类指令 3 子程序调用与返回指令组 绝对调用指令长调用指令返回指令 127 绝对调用指令 ACALLaddr11 PC PC 2 SP SP 1 SP PC7 0 SP SP 1 SP PC15 8 PC10 0 addr11 说明 1 与绝对转移指令类似 要求该指令的下一条指令的第一个字节与子程序的入口地址必须在同一个2KB存储区内 2 指令操作过程可分为两部分 断点保护 构造目的地址 3 addr11可用符号地址 标号 表示 128 例一 8100HACALL48FH 先将PC加2 PC 8100H 2 1000000100000010B再替换低11位地址 PC 1000010010001111B 848FH 48FH 先将PC加2 PC 8F00H 2 1000111100000010B再替换低11位地址 PC 1000110010001111B 8C8FH 48FH 例二 8F00HACALL48FH 129 长调用指令 LCALLaddr16 PC PC 3 SP SP 1 SP PC7 0 SP SP 1 SP PC15 8 PC addr16 说明 1 主程序和被调用的子程序可以任意地放在64KB范围内 2 指令操作过程可分为两部分 断点保护 构造目的地址 3 addr16可用符号地址 标号 表示 130 例 已知 MA 0500H 试问执行如下指令MOVSP 70HMA LCALL8192HSP中数据为多少 堆栈中数据如何变化 PC中的内容是什么 答 SP 72H 71H 03H 72H 05H PC 8192H 131 返回指令 RET PC15 8 SP SP SP 1 PC7 0 SP SP SP 1RETI PC15 8 SP SP SP 1 PC7 0 SP SP SP 1 说明 1 第1条指令用于子程序返回 只能用于子程序末尾 2 第2条指令用于中断服务程序返回 只能用于中断服务程序的末尾 3 机器执行RETI指令后 还将清除相应中断优先级状态位 以允许单片机响应低优先级的中断 132 例 试利用子程序技术编出令20H 2AH 30H 3EH和40H 4FH三个子域清零的程序 MOVSP 30HMOVR0 20HMOVR2 0BHACALLZEROMOVR0 30HMOVR2 0FHACALLZEROMOVR0 40H MOVR2 10HACALLZEROSJMP ZERO MOV R0 00HINCR0DJNZR2 ZERORETEND 133 控制转移类指令 4 空操作指令 NOP PC PC 1 说明 用于程序的等待或时间的延迟 134 位操作类指令 1 位传送指令组 MOVC bitMOVbit C 说明 不能进行位地址与位地址值之间的传送 例 将20H位的内容与5AH位相交换 并不改变CY的值 MOV10H CMOVC 20HMOV21H CMOVC 5AHMOV20H CMOVC 21HMOV5AH C 135 2 位置位复位指令组 SETBCSETBbitCLRCCLRbit 说明 置位指令是位操作独有的 3 位运算指令组 ANLC bitANLC bitORLC bitORLC bitCPLCCPLbit 136 例 试编程完成位地址为10H 11H中的位异或操作 结果存入12H位 MOVC 11HANLC 10HMOV12H CMOVC 10HANLC 11HORLC 12HMOV12H C 137 JCrel CY位为1转移JNCrel CY位为0转移JBbit rel bit位为1转移JNBbit rel bit位为0转移JBCbit rel bit位为1转移 并将bit清零 4 位控制转移转移指令组 例一 已知内部RAM的50H和51H单元中各有一个无符号8位二进制 且两数不同 试编程比较它们的大小 并把大数送到52H单元 MOVA 50HCJNEA 51H LOOPLOOP JNCLOOP1MOVA 51HLOOP1 MOV52H A 138 例二 已知外部RAM的2000H开始有一个输入数据缓冲区 该缓冲区的数据以回车符CR ASCII码为0DH 为结束标志 试编写一个程序能把正数送入从30H 片内RAM 开始的正数区 并把负数送入40H开始的负数区 数据指针及跳转指令应用 MOVDPTR 2000HMOVR0 30HMOVR1 40HNEXT MOVXA DPTRCJNEA 0DH COMPSJMPDONECOMP JBACC 7 LOOPMOV R0 AINCR0 INCDPTRSJMPNEXTLOOP MOV R1 AINCR1INCDPTRSJMPNEXTDONE RETEND 139 I O访问指令使用说明 对P0 P3口的访问特点 用 MOV 指令既可以进行字节访问 又可以进行位访问 1 读引脚数据口或口线输入指令均属于读引脚的操作 ORLP1 03HMOVC P1 0 MOVC P1 2 例 利用P1口的P1 0和P1 1进行外界信号的输入 注意 在使用输入指令前应先用指令把口线引脚设置为高电平 140 2 读锁存器数据对口或口线执行 读 修改 写 类指令时 需要进行读锁存器的操作 读 修改 写 类指令 以口做目的操作数的逻辑运算指令和以口线做目的操作数的位操作指令 141 第四章MCS 51汇编语言程序设计 汇编语言程序设计概述单片机汇编语言程序的基本结构形式MCS 51单片机汇编语言程序设计举例MCS 51汇编语言的伪指令 142 汇编语言源程序的设计步骤 第一节汇编语言程序设计 1 拟制设计任务书 2 建立数学模型 3 确立算法 4 绘制程序流程图 5 编制汇编语言源程序 6 上机调试 7 试运行 设计任务书应包括 程序功能 技术指标 精度等级 实施方案 工程进度 所需设备 研制费用和人员分工等等 数学模型可以是一系列数学表达式 可以是数学的推理和判断 也可以是运行状态的模拟等 采用模块化程序设计思想 即把总模块划分成若干子模块 并画出所有子模块的程序流程图 进行人员分工 以便分头制作 1 子模块要有直观性和概括性 2 标注子模块和子模块间关系以及它们和主模块间的关系 目的 检验程序正确性和完整性 步骤 静态检查 分调 联调 143 144 汇编语言源程序的汇编 1 人工汇编 2 机器汇编 人工汇编 是指人工直接把汇编语言翻译成机器码的过程 通常需要进行两次汇编 才能完成 第一次 完成指令码的人工 代真 第二次 完成地址偏移量的 代真 机器汇编 是用机器代替人脑的一种汇编 145 分为3种形式 顺序结构 分支结构和循环结构 第二节基本结构形式 顺序结构程序 FIRSTEQU30HSECONDEQU31HMOVA 20HMOVB 64HDIVABMOVFIRST AMOVA B 例 已知20H单元中有一个二进制数 请编程把它转换为3位BCD数 把百位BCD数送入FIRST单元的低4位 十位和个位BCD数放在SECOND单元 十位BCD数在SECOND单元的高4位 MOVB 0AHDIVABSWAPAORLA BMOVSECOND ASJMP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三14校联考数学试卷
- 除锈施工安全试题及答案
- 初中历史教师业务考试试题及答案
- 二年级下册方向数学试卷
- 奉化区中考数学试卷
- 护士的职业素养与能力培养
- 法律顾问职业生涯发展指南
- 房地产经纪人职业发展规划与培训计划
- 当前行业环境与策略建议
- 混合云与容器技术的结合应用研究
- JTJ300-2000 港口及航道护岸工程设计与施工规范
- 血管外科科普知识宣传
- 小米汽车发布会
- 2022年浙江省台州市温岭中学提前招生数学试卷
- 安全应急管理培训
- 高中化学核心素养(北师大王磊)
- 40篇英语短文搞定高考3500个单词(全部)
- 工程建筑物拆除、清运及建筑废弃物综合招投标书范本
- 保密管理与商业机密保护
- 【低保政策执行过程中产生的消极效果及优化建议分析11000字(论文)】
- 未婚先孕流产补偿协议
评论
0/150
提交评论