mcs-51/52 · 内 容 简 介. 本书详细介绍了 mcs-51/52...

81
MCS-51/52 单片机原理与应用 李东江 马文弟 编著 科学出版社 职教技术出版中心 www.abook.cn

Upload: others

Post on 24-Oct-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

  • MCS-51/52 单片机原理与应用

    闻 新 李东江 马文弟 编著

    北 京

    学出版社

    职教技术出版中心

    www.abook.cn

  • 内 容 简 介

    本书详细介绍了 MCS-51/52 系列单片机的原理与应用。全书分为 10

    章,内容包括单片机概述、MCS-51/52 单片机硬件结构、指令系统与程序

    设计、中断系统、定时器/计数器、系统扩展、通信接口、人机接口、应用

    系统设计。本书内容精炼,实例丰富,深入浅出,讲解详细。在内容选材

    和结构安排上,强调实践性、应用性及新颖性。

    本书可作为大专院校计算机、通信、电子、自动化专业及其他专业的

    教学参考书,也可作为单片机技术的培训教材,同时适合初学者及单片机

    爱好者自学。

    图书在版编目(CIP)数据

    MCS-51/52 单片机原理与应用/闻新等,李东江,马文弟编著.—北京:科学出版社,20087 ISBN 978-7-03-021050-0

    Ⅰ. M… Ⅱ. ①闻…②李…③马… Ⅲ. 单片微型计算机 Ⅳ. TP368.1

    中国版本图书馆 CIP 数据核字(2008)第 015869 号

    责任编辑:鞠丽娜/责任校对:刘彦妮 责任印制:吕春珉/封面设计:三函设计

    出版 北京东黄城根北街 16 号

    邮政编码:100717 http://www.sciencep.com

    印刷 科学出版社发行 各地新华书店经销

    * 2008 年 3 月第 一 版 2008 年 3 月第一次印刷 印数:1-4 000

    开本:787×1092 1/16印张:14 字数:3 300

    (如有印装质量问题,我社负责调换< >)

    销售部电话 010-62136131 编辑部电话 010-62138978-8002

    定价:25.00元

  • 前 言

    8051 单片机自 1977 年问世以来,一直深受人们的欢迎,它是少数生命周期较长的CPU 架构之一。目前全世界的半导体供应商一直在开发非常先进的基于 8051 内核的单片机。由于它不断提高的性能、更大的存储空间、增强的 I/O 端口、丰富的开发工具以及大量的可用代码,计算机应用与设计工程师们到现在还热衷于这个“古老”的单片机

    架构,并不断地在新的设计中应用它。这也是本书之所以以 MCS-51/52 单片机为主线讲解单片机原理与应用的原因。事实上,单片机发展到今天,其品种繁多、性能各异,但

    只要掌握了 8051/52 系列单片机,就等于掌握各式各样的单片机。 典型的 8051 单片机提供了 4 个 8 位 I/O 端口,需要时开发人员可任意指定某个端

    口给 I/O 设备。简单地说,如果某个 I/O 引脚的默认状态是输入,而用户需要把它改为输出,则用一条指令就可以了。

    8051 指令能够设置、清除以及测试每一个数字位,简化了控制设备和检测通断状态的软件。每条指令需要 1~2 个时钟周期。在不断追求更高性能的同时,芯片生产商们仍然保留着以前 8051 的指令集、寄存器、标志位和其他 CPU 特性,沿用哈佛 CPU 体系结构,将指令和数据分别放在不同的存储区。8051 系列能向下兼容,所以 8051 代码在最新的产品中可以更好、更快地运行。

    8051 芯片提供了 128B 的 RAM 和 4KB 的 ROM,分别用于存储临时数据和指令(使用 I/O 端口可将外部存储器扩展到 64KB)。

    8051 单片机的成功源于模拟电路的多样性,现在生产商们已经把各种各样的模拟电路集成到了单片机上。

    8051 体系架构越来越受到人们的欢迎,这应归功于许多有效的工具和软件库,包括很多免费的工具和资源。

    本书针对上述内容将给予详细叙述与重点分析。此外,本书还具有以下特点: 第一,在介绍 8051/52 单片机原理的同时,突出地介绍了单片机应用系统的实例。

    不仅介绍了系统的设计,而且还详尽地介绍了硬件电路和软件编程技巧。 第二,对单片机应用系统实例中所涉及的重要元器件也给予了详细介绍,以便读者

    在今后的设计中选用方便。 第三,在选材上基本引用最新文献给出的例子,力求叙述通俗易懂,并努力在全面

    性和特色性之间、先进性和实用性之间寻求平衡。 由于作者水平有限,本书的缺点和错误在所难免,恳请广大读者指正。读者可以将

    建议发至 [email protected],作者在此表示感谢。

    作 者 2007 年 12 月

    学出版社

    职教技术出版中心

    www.abook.cn

  • 目 录

    第一章 8051/52 单片机概论 ................................................................................................................1

    1.1 何谓 8051/52 单片机 ...............................................................................................................1 1.2 MCS-51 系列单片机的特性..................................................................................................3 1.3 MCS-51 系列的引脚配置及功能.........................................................................................4 1.4 存储器结构.................................................................................................................................8

    1.4.1 程序存储器 ........................................................................................................................9

    1.4.2 数据存储器 ......................................................................................................................12

    1.5 省电工作模式 ..........................................................................................................................22 1.5.1 空闲工作模式 ..................................................................................................................23

    1.5.2 掉电工作模式 ..................................................................................................................23

    第二章 8051/52 指令系统及说明 .....................................................................................................25 2.1 8051/52 单片机汇编语言的指令格式 ..............................................................................25 2.2 8051/52 单片机的指令寻址方式 .......................................................................................25

    2.2.1 直接寻址(direct addressing) .......................................................................................26

    2.2.2 间接寻址(indirect addressing) ....................................................................................26

    2.2.3 寄存器寻址(register addressing) ................................................................................27

    2.2.4 立即寻址..........................................................................................................................28

    2.2.5 变址寻址方式 ..................................................................................................................28

    2.3 8051/52 单片机的指令集 .....................................................................................................28 2.3.1 算术运算指令 ..................................................................................................................32

    2.3.2 数据传送指令 ..................................................................................................................37

    2.3.3 逻辑运算指令 ..................................................................................................................40

    2.3.4 位操作指令 ......................................................................................................................44

    2.3.5 控制转移指令 ..................................................................................................................47

    2.3.6 伪指令..............................................................................................................................51

    第三章 汇编语言程序设计 ..................................................................................................................53 3.1 单片机汇编语言的程序设计步骤 .....................................................................................53 3.2 汇编语言程序设计结构........................................................................................................54

    3.2.1 顺序结构程序设计 ..........................................................................................................54

    3.2.2 分支结构程序设计 ..........................................................................................................56

    3.2.3 循环结构程序设计 ..........................................................................................................58

    3.2.4 子程序设计 ......................................................................................................................59

    3.3 单片机汇编语言设计技巧 ...................................................................................................63 3.3.1 两个数的比较 ..................................................................................................................63

    3.3.2 不带符号的两个数比较 ..................................................................................................63

  • MCS-51/52 单片机原理与应用 ·iv·

    3.3.3 带符号的两个数比较 ......................................................................................................63

    3.3.4 传送数据块 ......................................................................................................................64

    3.3.5 堆栈的熟练使用 ..............................................................................................................65

    3.3.6 通过切换寄存器工作区来增加间接寻址寄存器的个数(通用寄存器的个数) .......65

    3.3.7 常用的数据处理方法 ......................................................................................................66

    3.4 汇编语言程序的编辑 ............................................................................................................67 3.5 单片机开发系统 .....................................................................................................................67

    3.5.1 什么是单片机开发系统 ..................................................................................................68

    3.5.2 单片机开发系统的功能 ..................................................................................................68

    3.5.3 单片机应用系统的调试 ..................................................................................................71

    第四章 并行输入/输出口的原理与应用.........................................................................................74 4.1 并行输入/输出口的基本结构及原理 ...............................................................................74

    4.1.1 P0 口 ................................................................................................................................74

    4.1.2 P1 口 ................................................................................................................................75

    4.1.3 P2 口 ................................................................................................................................76

    4.1.4 P3 口 ................................................................................................................................77

    4.1.5 4 个并行口的结构特点比较 ...........................................................................................77

    4.2 并行输入/输出口的实用技术问答 ....................................................................................78 4.2.1 I/O的内部结构.................................................................................................................78

    4.2.2 I/O口读/写/改操作 ..........................................................................................................79

    4.2.3 使用I/O口的注意事项.....................................................................................................80

    4.3 并行输入/输出口的应用 ......................................................................................................80 第五章 定时器/计数器的原理与应用 .............................................................................................87

    5.1 定时器/计数器简介 ...............................................................................................................87 5.2 TCON控制寄存器与TMOD控制寄存器 .........................................................................88 5.3 定时器/计数器的结构与工作模式 ....................................................................................89

    5.3.1 定时器/计数器的MODE 0 工作模式 .............................................................................89

    5.3.2 定时器/计数器的MODE 1 工作模式 .............................................................................90

    5.3.3 定时器/计数器的MODE 2 工作模式 .............................................................................91

    5.3.4 定时器/计数器的MODE 3 工作模式 .............................................................................91

    5.4 定时器/计数器的基本应用..................................................................................................92 5.4.1 应用定时器/计数器的步骤 .............................................................................................92

    5.4.2 定时器/计数器应用实例 .................................................................................................93

    5.4.3 定时器/计数器的中断应用实例 .....................................................................................95

    5.4.4 单片机定时器中断时间误差的分析及补偿...................................................................96

    5.5 定时器/计数器的扩展应用..................................................................................................98 5.5.1 单片机应用系统中的“看门狗”技术 ..........................................................................98

    5.5.2 用单片机实现分频段测量信号频率 ............................................................................103

    学出版社

    职教技术出版中心

    www.abook.cn

  • 目 录 ·v·

    5.5.3 单片机软件监视抗干扰技术 ........................................................................................104

    5.6 8052 定时器/计数器TIMER2............................................................................................107 5.6.1 T2 的工作控制 ..............................................................................................................107

    5.6.2 T2 的工作模式 ..............................................................................................................108

    5.6.3 T2 的工作编码 .............................................................................................................. 110

    5.7 定时器/计数器实用技术问答 ........................................................................................... 110 第六章 单片机串行数据通信 ........................................................................................................... 113

    6.1 串行通信基础知识............................................................................................................... 113 6.1.1 串行通信基本原理 ........................................................................................................ 113

    6.1.2 串口信号线 .................................................................................................................... 116

    6.1.3 串行接口电路 ................................................................................................................ 117

    6.2 单片机的串行口及控制寄存器........................................................................................ 117 6.2.1 MCS-51 串行接口 ......................................................................................................... 118

    6.2.2 MCS-51 串行通信控制寄存器 ..................................................................................... 118

    6.3 单片机的串行通信...............................................................................................................121 6.3.1 单片机的串行通信设计 ................................................................................................121

    6.3.2 利用查询与中断方式实现微机和单片机的串行通信.................................................124

    6.3.3 利用MAX485 实现单片机与PC机的串行通信 ...........................................................128

    6.3.4 MCS-51 单片机与GPS-OEM板的串行通信 ................................................................132

    6.4 单片机多机通信系统 ..........................................................................................................136 6.4.1 单片机的多机通信设计 ................................................................................................136

    6.4.2 单片机多机通信系统可靠性问题 ................................................................................137

    第七章 MCS-51 单片机的中断系统 .................................................................................................141 7.1 中断的概念.............................................................................................................................141

    7.1.1 什么是中断 ....................................................................................................................141

    7.1.2 中断的意义 ....................................................................................................................141

    7.1.3 单片机中断的种类 ........................................................................................................141

    7.2 MCS-51 单片机的中断源 ..................................................................................................142 7.2.1 外部中断........................................................................................................................142

    7.2.2 定时/计数器中断 ...........................................................................................................143

    7.2.3 串行口中断 ....................................................................................................................143

    7.2.4 中断源与中断管理 ........................................................................................................144

    7.3 中断控制 .................................................................................................................................144 7.3.1 定时/计数器控制寄存器(TCON) ............................................................................144

    7.3.2 中断允许控制寄存器(IE) ........................................................................................145

    7.3.3 中断优先级控制寄存器(IP).....................................................................................145

    7.3.4 串行口控制寄存器(SCON)......................................................................................146

    7.4 中断处理过程 ........................................................................................................................147 7.4.1 中断采样........................................................................................................................147

  • MCS-51/52 单片机原理与应用 ·vi·

    7.4.2 中断查询........................................................................................................................147

    7.4.3 中断响应........................................................................................................................148

    7.5 中断请求的撤除 ...................................................................................................................150 7.5.1 定时/计数器中断请求的撤除 .......................................................................................150

    7.5.2 串行口中断请求的撤除 ................................................................................................150

    7.5.3 外部中断请求的撤除 ....................................................................................................150

    7.6 多级中断的嵌套 ...................................................................................................................151 7.6.1 多级中断嵌套 ................................................................................................................151

    7.6.2 三级中断嵌套的实现 ....................................................................................................151

    7.6.3 多级中断嵌套的实现 ....................................................................................................152

    7.7 中断应用举例 ........................................................................................................................153 7.7.1 外部中断实验 ................................................................................................................153

    7.7.2 单片机外中断使用方面的问题及解决措施.................................................................156

    7.7.3 MCS-51 系列单片机中断功能的扩展..........................................................................158

    第八章 MCS-51 单片机系统扩展与应用........................................................................................162 8.1 MCS-51 扩展系统概述 .......................................................................................................162

    8.1.1 MCS-51 扩展系统结构 .................................................................................................162

    8.1.2 存储器及外部I/O口的编址技术 ...................................................................................164

    8.2 程序存储器扩展 ...................................................................................................................165 8.2.1 常用程序存储器芯片 ....................................................................................................165

    8.2.2 程序存储器的扩展 ........................................................................................................166

    8.2.3 单片机系统中FLASH存储器的扩展............................................................................168

    8.3 数据存储器扩展 ...................................................................................................................171 8.3.1 数据存储器扩展的特点 ................................................................................................171

    8.3.2 数据存储器扩展的发展方向 ........................................................................................172

    8.3.3 存储容量扩展的软硬件设计 ........................................................................................172

    8.3.4 大容量RAM扩展及其查找技术 ...................................................................................174

    8.4 I/O口扩展................................................................................................................................177 8.4.1 并行I/O口概述...............................................................................................................177

    8.4.2 简单的I/O口扩展...........................................................................................................178

    8.4.3 8155 可编程I/O接口扩展 ..............................................................................................179

    第九章 单片机的人机接口技术.......................................................................................................182 9.1 LED显示器接口....................................................................................................................182

    9.1.1 LED显示器工作原理 ....................................................................................................182

    9.1.2 LED显示器的接口电路 ................................................................................................184

    9.1.3 LED显示器的显示方式 ................................................................................................186

    9.2 键盘接口技术 ........................................................................................................................189 9.2.1 键盘的特点与抖动 ........................................................................................................190

    学出版社

    职教技术出版中心

    www.abook.cn

  • 目 录 ·vii·

    9.2.2 键盘的结构及接口设计 ................................................................................................191

    9.3 键盘与显示器技术的综合应用举例...............................................................................193 9.3.1 8279 的键盘显示接口 ...................................................................................................193

    9.3.2 键盘/显示驱动电路 .......................................................................................................194

    第十章 单片机应用系统设计方法 ..................................................................................................197 10.1 构成应用系统的基本方法...............................................................................................197

    10.1.1 确定指标 ......................................................................................................................197

    10.1.2 可行性分析研究 ..........................................................................................................197

    10.1.3 系统总体设计方案 ......................................................................................................197

    10.2 应用系统硬件的设计 ........................................................................................................199 10.3 应用系统软件的设计方法...............................................................................................202

    10.3.1 编程语言的选择 ..........................................................................................................202

    10.3.2 软件设计 ......................................................................................................................202

    10.3.3 软件抗干扰原理与方法 ..............................................................................................203

    10.4 数字滤波技术......................................................................................................................206 10.4.1 均值滤波 ......................................................................................................................206

    10.4.2 递推平均滤波 ..............................................................................................................206

    10.4.3 防脉冲干扰平均值滤波 ..............................................................................................206

    10.4.4 限幅滤波 ......................................................................................................................207

    10.4.5 低通滤波 ......................................................................................................................207

    10.4.6 占优滤波 ......................................................................................................................207

    10.4.7 替代滤波 ......................................................................................................................208

    10.5 应用系统的调试方法 ........................................................................................................208 10.5.1 应用系统硬件的调试方法 ..........................................................................................209

    10.5.2 应用系统软件的调试方法 ..........................................................................................210

    10.5.3 应用系统的集成综合调试 .......................................................................................... 211

    10.5.4 应用系统的故障诊断 .................................................................................................. 211

    主要参考文献 ...........................................................................................................................................214

  • 第一章 8051/52 单片机概论

    本章重点:

    本章主要介绍单片机系统的原理,让读者了解 8051/52 单片机系列的技术特征,熟练掌握 8051/52 单片机系列的组织结构、数据传输和存储等技术。

    1.1 何谓 8051/52 单片机

    在介绍单片机(single chip microcomputer)前,先来看一个微型计算机系统的基本结构,如图 1.1 所示。微型计算机系统的组成主要单元如下:

    1)中央处理器; 2)存储器(ROM 和 RAM,数据存储和程序存储); 3)输入输出单元; 4)时钟电路; 5)外围设备。

    中央处理器

    (CPU)

    时钟产生器(clock generator)

    存储器

    (ROM和RAM)

    输入输出单元

    外围设备

    图 1.1 微型计算机系统结构

    图中,每一个方框图中的部件都是独立的单元,而且是由许多 IC 组成的,每个单元之间是通过导线(也称为总线)相互连接起来的。而单片机就是把微型计算机系统的

    所有单元全部放到一块集成的电路芯片(chip)上,所以就称为单片(单芯片)机,而且有些单片机中除了上述部件外,还集成了其他部件,如 A/D、D/A 等。下面,针对目前单片机应用行业出现的一些基本概念、习惯术语称呼、各单片机类型的技术特征及其

    发展趋势给予解释。

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·2·

    (1)何谓单片机? 在回答这个问题之前,先来看看计算机的分类,如图 1.2 所示。 单片机就是单片微型计算机,简称单片机。它在一块芯片上集成了中央处理器

    (CPU)、只读存储器(ROM)、输入/输出接口、可编程定时器/计数器等,有的单片机芯片甚至还包含 AD 转换器。一块单片机芯片,就相当于一台微型计算机。

    图 1.2 计算机的分类

    总的来说,单片机可用以下公式表示: 单片机=CPU+ROM+RAM+I/O+特定的功能部件(外围功能电路)

    (2)一般单片机有 40 个引脚,但也有 10 个或 20 个引脚,这是为什么? 因为不同单片机的功能有强有弱,例如,市场上有的组合音响一套才卖几百块钱,

    而一台好的功放机要卖好几千。另外,这种芯片的生产量很大,技术也很成熟,所以价

    格也就低了。 (3)单片机的功能不强,为什么会被广泛地应用? 在实际工作中,并不是任何需要计算机的场合都要求计算机有很高的性能,应用的

    关键是看是否够用,是否有很好的性价比。所以,8051 单片机因其驱动和控制简单直接,易扩展,简单易学,且成本低,而被广泛应用于自动控制等领域。它经常以最小系统

    或单片机扩展系统形式出现在家用电器、智能仪表、工业过程控制中以及航空、汽车

    等领域。 (4)MCS-51 单片机和 8051、8031、89C51 等的关系如何? MCS-51 是指由美国 Intel 公司生产的一系列单片机的总称,这一系列单片机包括许

    多品种,如 8031、8051、8751、8032、8052、8752 等,8051 是最典型的产品,其他单片机都是在 8051 的基础上进行功能的增、减,改变而来的,所以,人们习惯用 8051 来称呼 MCS-51 系列单片机,而 8031 是前几年在我国最流行的单片机,所以很多场合会看到 8031 的名称。Intel 公司将 MCS-51 的核心技术授权给了很多其他公司,所以很多公司都可以生产以 8051 为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中 89C51 就是近几年在我国非常流行的单片机,它是由美国 ATMEL 公司开发生产的。

    (5)8051/52 单片机的发展经历了哪四个阶段? 第一阶段(1974 年~1976 年)初级阶段:仙童公司 F8(8 位 CPU,64KB);

  • 第一章 8051/52 单片机概论 ·3·

    第二阶段(1976 年~1978 年)低性能单片机:Intel 公司 MCS-48(8 位 CPU); 第三阶段(1978 年~1983 年)高性能单片机:Intel 公司 MCS-51、Motorola 6801、Z80; 第四阶段(1983 年~今)新一代单片机(单片微控制器):AT89C51(Atmel)。 (6)单片机的未来会朝什么趋势发展? 1)单片机字长由 4 位、8 位、16 位发展到 32 位。这几种字长的单片机,目前乃至

    今后都将同时存在于市场,用户可根据需要进行选择。 2)运行速度不断提高。单片机的使用最高频率由 6MHz、12 MHz、24 MHz、33 MHz

    发展到 40 MHz,甚至更高。 3)单片机片内的存储容量越来越大。片内程序存储器的编程越来越方便,有 ROM

    型(掩模型)、OTP 型(一次性编程)、EPROM(紫外线擦除编程)、EEPROM(电擦除编程)及 FLASH(闪速编程)。编程(烧录)方式也越来越方便,目前有脱机编程、在线系统编程(ISP)、在线应用编程(IAP)等。

    4)I/O 接口多功能化。单片机除集成了并行接口、串行接口外,还集成了 A/D 转换、D/A 转换、LED/LCD 显示驱动、DMA 控制、PWM(脉宽调制输出)、PLC(锁相环控制)、PCA(逻辑阵列)和 WDT(看门狗)等。

    5)功耗越来越低。采用 CHMOS 制作工艺,使单片机集 HMOS 的高速、高集成度和 CMOS 的低功耗技术为一体,功耗进一步降低,适应的电压范围更宽。

    1.2 MCS-51 系列单片机的特性

    MCS-51 系列包含多种单片机芯片,其规格如表 1.1 所示。由表中可知,不同编码之间只有在存储器大小及封装的引脚功能上有些不同,其指令集都是相同的,开发者可

    以根据存储器的大小及周边接口的需求选择最适用的单片机芯片。

    表 1.1 MCS-51 系列包含有多种单片机芯片性能

    型 号 8031 8051 8751 8032 8052 8752 8344 8044 8744

    内含程序存储器 0 4KB

    ROM

    4KB

    EPROM

    0 8KB

    ROM

    8KB

    EPROM

    0 4KB

    ROM

    4KB

    EPROM

    内含数据存储器 128 128 128 256 256 256 192 192 192

    输入/输出线 16 32 32 16 32 32 16 32 32

    定时器/计数器 2 2 2 3 3 3 2 2 2

    中断源 5 5 5 6 6 6 5 5 5

    串口 同步;异步;可编程规划

    HDLC/SDLC

    (SIU)

    特殊功能暂存器 21 21 21 26 26 26 35 35 35

    下面列举 MCS-51 系列单片机的主要功能: 1)8 位 CPU,适合自动控制等领域的应用; 2)具有单一位元的逻辑运算能力;

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·4·

    3)程序存储器(ROM)可以扩展到 64KB,所以,外部存储器寻址范围 ROM、RAM各为 64KB;

    4)数据存储器(RAM)可以扩展到 64KB; 5)两个 16 位的定时器/计数器; 6)32 根 I/O 线; 7)5 个中断源,两个中断优先级; 8)全双工串行口; 9)布尔处理器; 10)片内振荡源及时钟电路。

    1.3 MCS-51 系列的引脚配置及功能

    MCS-51 系列单片机采用 40 引脚双列直插式封装(DIP)形式。引脚排列及逻辑符号如图 1.3 所示。下面分别说明这些引脚的意义和功能。

    图 1.3 MCS-51/52 单片机引脚图

    其中,T2、T2EX功能只有在 8032、8052、8752、89C52 等单片机芯片中才有;Vpp、PROG只适用于 8751/52 及 89C51/52。

    各引脚的功能如下: Vcc: 1)位于第 40 引脚; 2)接+5V 电源。 Vss: 1)位于第 20 引脚;

  • 第一章 8051/52 单片机概论 ·5·

    2)接电源地。

    XTAL1 及 XTAL2: 1)位于第 19 引脚及 18 引脚; 2)两引脚之间接一个石英晶体(crystal),内部振荡器即可产生单晶片工作所需的

    时钟信号,参考电路如图 1.4 所示; 3)常用的石英晶体有 3.58MHz、6MHz、11.059MHz、12MHz 等,不可超过 12MHz。

    XTAL1

    XTAL2

    MCS-51

    Vss

    20pF

    20pF

    19

    20

    18

    图 1.4 振荡电路

    RESET: 1)位于第 9 引脚; 2)只要在该引脚上输入超过 24 个振荡周期(两个机器周期)的高电平,就会使单

    片机复位; 3)如图 1.5 所示,可以在 RESET 引脚接上一个 RC 电路,当电源开启时可以产生

    开机重置功能。一般会在电容器两端并接一个常开按钮,以便接下按钮时可强迫系统

    重置。

    图 1.5 MCS-51 复位电路

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·6·

    4)当 8051/52 被重置后,程序就从地址 0000H 处开始执行,而特殊功能寄存器 (SFR)也设定为起始状态,如表 1.2 所示。

    表 1.2 SFR 各寄存器重置后的初始值

    寄存器名称 以二进制表示其值

    *ACC 00000000

    *B 00000000

    *PSW 00000000

    SP 00000111

    DPTR:

    DPH

    DPL

    00000000

    00000000

    *P0 11111111

    *P1 11111111

    *P2 11111111

    *P3 11111111

    *IP 8051 ×××00000

    8052 ××000000

    *IE 8051 0××0000

    8052 0×000000

    TMOD 00000000

    *TCON 00000000

    *+T2CON 00000000

    TH0 00000000

    TL0 00000000

    TH1 00000000

    TL1 00000000

    +TH2 00000000

    +TL2 00000000

    +RCAP2H 00000000

    +RCAP2L 00000000

    *SCON 00000000

    SBUF 未定

    PCON

    HMOS 0×××××××

    CHMOS 0×××0000

    注:“×”=未定

    “*”=可位元定址

    “+”=只是 8052 才有

    EA/Vpp: 1)位于第 31 引脚; 2)当 EA =LOW 时,内部程序存储器无效,CPU 只会执行外部程序存储器中的

  • 第一章 8051/52 单片机概论 ·7·

    程序; 3)当EA =HIGH 时,CPU 只执行内部程序存储器中的程序; 4)在 8031/32 中,由于片内没有程序存储器,所以此引脚需要接地; 5)此引脚的另一个功能是在烧入 8751/52 及 89C51/52 时,当作输入电压(Vpp)的

    输入引脚。 P0.0~P0.7: 1)位于第 32~39 引脚; 2)8 位多功能分时复用的 I/O 口,简称 P0; 3)每一个引脚都可以当作输入或输出口使用,且可被单独定址; 4)当用于输出信息时,引脚处需要外接一个提升电阻,如图 1.6 所示。

    图 1.6 P0 外接提升电阻

    5)若某引脚欲当作输入引脚使用时,必须先将“1”写入此引脚; 6)当 CPU 存取外部扩充程序存储器时,可直接当作地址总线/数据总线的低 8

    位线使用。 P1.0~P1.7: 1)位于第 1~8 引脚; 2)8 位准双向口,简称 P1; 3)每一个引脚都可以当作输入或输出口使用,且可被单独定址; 4)内部具有提升电阻(约 30kΩ),可以驱动 4 个 LS TTL 负载; 5)若某引脚欲当作输入引脚使用时,必须先将“1”写入此引脚; 6)在 8032/8052/8752/89C52 等单片机中,P1.0 及 P1.1 引脚具有下列功能。 ①T2(P1.0),定时/计数器 2 的外部脉冲信号输入引脚; ②T2EX(P1.1),定时/计数器 2 的捕获/重载触发输入引脚。 P2.0~P2.7: 1)位于第 21~28 引脚; 2)8 位输入/输出口,简称 P2; 3)每一个引脚都可以当作输入或输出口使用,且可被单独定址; 4)内部具有提升电阻(约 30kΩ),可以驱动 4 个 LS TTL 负载; 5)若某引脚欲当作输入引脚使用时,必须先将“1”写入此引脚; 6)当外部存储器地址为 16 位时,其地址的高位由 P2 输出。

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·8·

    P3.0~P3.7: 1)位于第 10~17 引脚; 2)8 位输入/输出口,简称 P2; 3)每一个引脚都可以当作输入或输出口使用,且可被单独定址; 4)内部具有提升电阻(约 30kΩ),可以驱动 4 个 LS TTL 负载; 5)若某引脚欲当作输入引脚使用时,必须先将“1”写入此引脚; 6)P3 各引脚具有以下第二功能。 ① RXD(P3.0),串行输入引脚; ② TXD(P3.1),串行输出引脚; ③ INT0(P3.2),外部中断 0 输入引脚; ④ INT1(P3.3),外部中断 1 输入引脚; ⑤ T0(P3.4),定时器 0 外部输入引脚; ⑥ T1(P3.5),定时器 1 外部输入引脚; ⑦ WR (P3.6),外部扩展程序存储器的写入控制信号; ⑧ RD (P3.7),外部扩展程序存储器的读出控制信号。 注意:MCS-51 会根据软件的设定,自动区别各引脚的功能。 PSEN : 1)位于第 29 引脚,为外部程序存储器读取选通引脚(program strobe enable); 2)当 CPU 欲读取外部程序存储器的数据时,此引脚会自动产生负向脉冲信号(一

    个机器周期内产生两次)。该引脚可以驱动 8 个 LSTTL 负载。 ALE: 1)位于第 30 引脚,为地址锁存使能信号输出引脚(address latch enable); 2)当 CPU 访问外部扩展存储器时,可利用此引脚输出负向脉冲信号,将 P0 输

    出的低 8 位地址信号(A0~A7)锁入外接的锁存器中。该引脚可以驱动 8 个 LSTTL负载。

    1.4 存储器结构

    MCS-51 单片机的存储器组织结构与微机不同,一般微机通常是程序和数据共用一个存储空间,属于“冯·诺依曼(Von Neumann)”结构,而 MCS-51 单片机则是把程序存储空间和数据存储空间严格区分开来,属于“哈佛(Harvard)”结构。

    在 MCS-51 单片机系列中,除了 8031/32 没有内部程序存储器(ROM)外,其余的单片机都有程序存储器(包括内部和外部)和数据存储器(包括内部和外部),二者是

    完全分开独立选址的,其结构如图 1.7 所示。 (1)MCS-51 存储器的特点 MCS-51 的存储器组织在物理结构上分为 4 个存储空间:片内程序存储器、片外程

    序存储器、片内数据存储器和片外数据存储器。从用户使用的角度,即从逻辑上考虑,

    则有 3 个存储空间:片内外统一编址的 64KB 程序存储器地址空间(0000H~FFFFH)、

  • 第一章 8051/52 单片机概论 ·9·

    256KB 的片内数据存储器地址空间(00H~FFH)及片外数据存储器地址空间(0000H~FFFFH)。

    特 殊 功 能 寄 存 器

    (21个SFR)

    通用 RAM区

    位寻址区

    00H

    1FH

    20H

    2FH

    30H

    7FH

    80H

    FFH F0H E0H D0H B8H B0H A8H A0H 98H 90H 88H 80H

    特殊功能寄存器中位寻址

    外部

    ROM (64KB)

    内部

    ROM(4KB)(EA=1)

    外部 ROM

    (4KB) (EA=0) 0000H 0000H

    0FFFH 0FFFH

    1000H

    FFFFH

    外 部 RAM

    (64KB)

    0000H

    FFFFH

    (a)内部数据存储器 (b)外部数据存储器 (c)内、外程序存储器

    工作寄

    存器区

    图 1.7 8051 单片机存储器结构

    (2)如何访问与操作 MCS-51 存储器的信息 CPU 在访问 3 个不同的逻辑空间时,通过采用不同形式的指令(访问程序存储器使

    用 MOVC 指令,访问片内数据存储器使用 MOV 指令,访问片外数据存储器使用 MOVX指令)来产生相应的存储器选通信号。

    1.4.1 程序存储器

    程序存储器是存放程序代码的地方,CPU 会主动到这块存储器中取出所要执行的指令码,由于它采用了只读(ROM)的电路结构,因此只能读取信息而不能执行写入的动作。图 1.8 是程序存储器的示意图,它最大可以扩充到 64KB。当 EA=1 时,CPU 会到内部程序存储器中读取指令,如果位址超过 4KB(8051)或 8KB(8052)时,则 CPU会到外部程序存储器中提取指令码;当 EA=0 时,内部程序存储器无效,此时所有的程序指令均从外部程序存储器中读取。由于 8031/8032 内部没有程序存储器,因此使用时必须将EA 脚接地,并从外部扩充程序存储器读取指令。

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·10·

    外部

    可扩充60KB

    内部4KB

    外部

    可扩充56KB

    内部8KB

    外部

    可扩充64KB

    FFFFHFFFFH FFFFH

    1000H

    2000H

    1FFFH

    0000H 0000H0000H

    0FFFH

    (a) EA =1 时 (b) EA =1 时 (c) EA =0 时

    8051/8751 单片机 8052/8752 单片机 使用外部程序存储器

    图 1.8 MCS-51/52 系列单片机程序存储器的结构

    如图 1.9 所示是扩充外部程序存储器时的连线示意图。其中,P0 口作为一个低 8 位地址/8 位数据总线的分时复用口,P2 口作为高 8 位地址口,以便使外接 ROM 芯片有16 根地址线。

    图 1.9 8051 单片机扩充外部程序存储器的示意图

    在程序存储器中有些特殊的地址,其作用分别说明如下。 1)地址 0000H:当 8051/52 被复位(Reset)时,CPU 从地址 0000H 处开始读取指

    令并加以执行,因此主程序代码一定要从此地址开始存放。 2)地址 0003H:外部中断 0( INT0 )的中断向量地址。当 CPU 接受 INT0的中断请求

  • 第一章 8051/52 单片机概论 ·11·

    时,将跳到此地址处执行中断服务程序。 3)地址 000BH:计数器 0(TIMER0)的中断向量地址。当 CPU 接受 TIMER0 因

    溢出位而产生的中断请求时,将跳到此地址处执行中断服务程序。 4)地址 0013H:外部中断 1( INT1)的中断向量地址。当 CPU 接受 INT1的中断

    请求时,CPU 将跳到此地址处执行中断服务程序。 5)地址 001BH:计数器 1(TIMER1)的中断向量地址。当 CPU 接受 TIMER1 因

    溢出位而产生的中断请求时,将跳到此地址处执行中断服务程序。 6)地址 0023H:串行口的中断向量地址。当串行口输出或接收数据完毕时,会产

    生中断请求,此时 CPU 将跳到此地址处执行中断服务程序。 7)地址 002BH:8052 单片机的计时器 2(TIMER2)的中断向量地址。当 CPU 接

    受 TIMER2 因溢出位而产生的中断请求时,CPU 将跳到此地址处执行中断服务程序。 表 1.3 是 MCS-51 的中断向量地址,通过观察,可以发现每两个中断向量之间均隔

    8 个位元组。如果用户所设计的中断服务程序代码的总长度不超过 8 个位元组,则只需要将其放在两个中断向量的存储空间内即可。但如果中断服务程序超过 8 个位元组,而且下一个中断向量也被设为使能,则需要以无条件跳转指令(JMP)作为程序的开头,以便跳转过下端的中断向量地址,其程序编写格式如图 1.10 所示。

    表 1.3 中断向量位置

    中断源 向量地址 优先权层次

    IE0 0003H

    TF0 000BH

    IE1 0013H

    TF1 001BH

    RI&TI 0023H

    TF2&EXF2 002BH

    最高

    最低

    图 1.10 中断程序范例

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·12·

    1.4.2 数据存储器

    数据存储器是程序运算过程中暂时存放数据的地方,因其采用随机存取(RAM)的电路结构,所以存储器里的数据会随电源的关闭而消失。从图 1.7 中可以清楚地看到数据存储器分为内部数据存储器和外部数据存储器,两者是完全不同的。存取数据所用的

    指令也不相同,存取内部数据存储器中的数据时,需要使用 MOV 指令组;存取外部数据存储器中的数据时,需要使用 MOVX 指令组。下面分别加以介绍。

    1. 内部数据存储器

    MCS-51 系列的内部数据存储器结构如图 1.11 所示,可划分成较低的 128 个位元组(地址为 00H~7FH)、较高的 128 个位元组(地址位 80H~FFH)和特殊功能寄存器(SFR,地址为 80H~FFH)等 3 个区块,其中较高的 128 位元组的数据存储器仅在8032/8052/8752/89C52 中存在,在 8031/8051/8751/89C51 中不存在。

    内部数据存储器的寻址方式如下: (1)8051 1)地址 00H~7FH 的区域:可以用直接或间接寻址方式存取数据; 2)地址 80H~FFH 的区域:为特殊功能寄存器,只能用直接寻址方式存取数据。 (2)8052 1)地址 00H~7FH 的区域:可以用直接或间接寻址方式存取数据; 2)地址 80H~FFH 的数据存储器:只能用间接寻址方式存取数据; 3)地址 80H~FFH 的特殊功能寄存器:只能用直接寻址方式存取数据。 由上面的叙述可以看出,在 8052 中较高的 128 位元组的数据存储器与特殊功能寄

    间接读取位元组

    (仅8052存在)

    直接或间接读取

    位元组

    特殊功能寄存器

    (SFR)直接读取位元组

    FFH

    80H7FH

    00H 图 1.11 内部数据存储器的结构图

    存器的地址相同,但就半导体的物理空间而言,是不同的。当发送间接指令(例如 MOV @Ri,A 或 MOV A,@Ri)时,指的是要存取高 128 位元组的数据;当发送直接存取指令(MOV P1,A)时,便是对特殊寄存器所存储的数据进行读取。

    下面针对上述 3 个内部数据存储器区块的功能加以说明。 (1)内部数据存储器低 128 位元组 8051/8052 将这个数据存储器模块划分成 3 个区域,它们各有不同的用处,地址为

  • 第一章 8051/52 单片机概论 ·13·

    00H~7FH,如图 1.12 所示。

    图 1.12 低 128 位元组的数据存储器的配置

    1)通用寄存器区:00H~1FH 共 32 个单元为通用寄存器区,分 4 组,每组有 8 个8 位的寄存器 R0~R7,如图 1.12 所示。

    任意时刻 CPU 只能选用 4 个寄存器组中的一组作为当前工作寄存器组。因此,4组寄存器都用 R0~R7 表示,不会发生冲突。未被选中的寄存器区的各单元,可以作为一般的数据缓冲器使用。寄存器组的切换,可以改变程序状态字组(PSW)中的位元 3(RS0)和位元 4(RS1)的设置,如图 1.13 所示。

    注意:在单片机系统复位时,堆栈指针(SP)会指在位址 07H 处,所以一旦堆栈动作开始进行时(如使用 PUSH、CALL 等指令),数据将从位址 08H 处开始存放。因此,在程序中若需要使用多个寄存器组时,必须在程序的开头处将堆栈指针 SP 的值指到 RAM 中的较高位址区,例如可以用 MOV SP,#70H 指令将 SP 指到位址 70H 处。

    2)位寻址区:内部 RAM 的 20H~2FH 为位寻址区域。这 16 个单元(共 16×8=128位)的每一位都有一个地址,称为位地址。它们占据位地址空间的 00H~7FH,地址分配如图 1.12 所示。为了避免位元地址与位元组混淆,也可以采用位元参考法来定义这些位元,例如位元地址 00H 在 20H 位元组中的第 0 位元,因此也可以写这个位元为 20H.0。类似,在程序中的表示方法如下:

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·14·

    SETB 02H SETB 20H.2 CLR 04H CLR 20H.4 CLR 08H CLR 21H.0 3)用户 RAM 区:30H~7FH 共 80 个位元组为真正的数据缓冲区,可以用来暂存

    用户数据或当作堆栈使用。 在微机中,堆栈是在内存 RAM 中开辟的一个特定的存储区,专门用来暂时存放数

    据或断点地址,并按照“先进后出,后进先出”的原则进行操作。 单片机中的堆栈,是在片内 RAM 低 128 位元组中开辟一个专用区(一般选择 30H~

    7FH 作为堆栈区)。堆栈区大小依据用户所写程序而定,例如用户的程序需要 32 个位元组的堆栈区,用户可以规划出 60H~7FH 作为堆栈区,只要将堆栈指针 SP 指到 5FH 即可。因为堆栈是将指针 SP 加 1 后,再把数据存放入 SP 所指的位址中,因此 SP 开始先指 5FH,实际上是从位址 60H 处开始使用堆栈,其指令是“MOV SP,#5FH”。至于堆栈以外的区域可供使用者自行运用。

    (2)片内数据存储器高 128 位元组 1 ) MCS-51 片内数据存储器高 128 位元组的地址为 80H ~ FFH ,只有

    8032/8052/8752/89C52 才有这 128 个位元组(读者可以对照图 1.11 的结构来理解),它通常作为数据的存放区,并只能以间接寻址方法存取,如:

    MOV R1,#90H;将数值 90H存入 R1寄存器 MOV @R1,A;将累加器 A的值存入地址为 90H的位元组中

    2)特殊功能寄存器(special function register):特殊功能寄存器简称 SFR,共 21 个(52 系列有 26 个),它们分散地分布在片内 RAM 地址为 80H~FFH 的区域,且每一个SFR 都有一个字节地址,它扮演着非常重要的角色,凡是使用计数器、定时器、中断、串口等功能时,都必须设定 SFR 中各相关控制寄存器后才能工作。每一个 SFR 都定义了一个符号名,其地址配置如图 1.13 所示,其中有许多未用到的位址(即空白部分),是预留给将来增强功能的其他版本的 8051 来使用,因此不要对其做存取的操作,即使对其进行操作也是没有意义的。

    有一些特殊功能寄存器可以位寻址,位寻址寄存器从 80H 开始,大多数可位寻址SFR 的每一位都有一个位名,如图 1.14 所示。在书写程序时尽量使用其寄存器名字,例如 I/O 口 P0 的位址是 80H,要写数据到 P0 时可以用“MOV P0,A”指令,这种方式要比用“MOV 80H,A”清楚易懂。

    当 8051/52 被复位后,SFR 中的每个寄存器都会被设定成一个初始值,如表 1.2 所示。 下面分别说明 SFR 中寄存器的特性及用法。 (1)累加器 ACC 累加器 ACC 是 8 位寄存器,它是一个很重要的寄存器,大部分运算都需要通过该

    累加器,而且运算结果也存放在该累加器中,数据传送、跳转判断也都需要使用该累加

    器。在指令系统中,累加器 ACC 的助记符常记为 A,以后叙述时也将 ACC 简述为 A。 (2)累加器 B 累加器 B 主要用在乘法和除法运算时。当不做乘除运算时,也可以当作一般用途的

    寄存器来使用。在乘法运算中它用来存放乘数及运算结果的高位元组;在除法运算时用

  • 第一章 8051/52 单片机概论 ·15·

    来存放除数及运算结果的余数。

    F8

    T2CON*

    PSW

    ACC

    B

    87

    8F

    97

    9F

    A7

    AF

    B7

    BF

    C7

    CF

    D7

    DF

    E7

    EF

    F7

    FF

    80

    88

    90

    98

    A0

    A8

    B0

    B8

    C0

    C8

    D0

    D8

    E0

    E8

    F0

    DPHDPLSP

    TMOD

    SUBF

    P0

    TCONP1

    P2

    SCON

    IE

    P3

    IP

    TH2*TL2*RCAP2L*

    TH1TH0TL1TL0

    PCON

    RCAP2H*

    此列可以位寻址

    注:*表示8052中才有的功能。

    图 1.13 SFR 位址配置图

    图 1.14 SFR 中可位寻址的地址表结构

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·16·

    (3)PSW(程序状态字)寄存器 PSW 是 8 位寄存器,用于寄存程序运行状态信息。其中有些位(如 Cy、AC、OV、

    P 等)的状态是根据程序执行结果由硬件自动设置,而有些位(如 RS1、RS0 等)的状态则由软件设置。程序状态寄存器中各位的状态可以用特定的指令来测试,也可以读出。

    PSW 寄存器地址为 D0H。 PSW 寄存器格式如图 1.15 所示。

    D0H PSWD7H D0HD1HD2HD3HD4HD6H D5H

    CY POVRS1RS0FOAC ~

    图 1.15 PSW 寄存器的格式

    PSW 寄存器中各位符号的定义与功能如表 1.4 所示。

    表 1.4 PSW 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    CY PSW.7 进位标志,在指令中用 C 表示,用途如下:○1 做加法运算时,最高位 D7 若有进位则

    C=1,若无则 C=0;○2 做减法运算时,最高位 D7 若有借位则 C=1,若无则 C=0;

    ○3 在进行位操作时,CY 是布尔处理机的累加器,指令助记符用 C 表示

    辅助(半)进位标志,用途如下:○1 做加法运算时,若两数的 bit3 相加后产生进位,

    则 AC=1,否则 AC=0;○2 做减法运算时,若两数的 bit3 不够减而需要向 bit4 借位时,

    则 AC=1,否则 AC=0;○3 通常使用在 BCD 的运算中

    AC PSW.6

    FO PSW.5 用户标志位。可由用户设定作为软件标志

    RS1

    RS0

    PSW.4

    PSW.3

    工作寄存器组选择标志位 1

    工作寄存器组选择标志位 0

    RS1 RS0 寄存器组 R0~R7 所对应的 RAM 位置

    0 0 R0 00H~07H

    0 1 R1 08H~0FH

    1 0 R2 10H~17H

    1 1 R3 18H~1FH

    OV PSW.2 溢出标志位。若具有正负号的两个数值做加减法运算后,其结果不在+127~-128 范

    围内,便发生溢出,此时 OV=1,否则 OV=0

    ~ PSW.1 保留未使用

    P PSW.0 奇偶标志位。在每个指令周期,会由硬件加以设定或清除,以便指出累加器 A 中等于

    1 的个数是否为奇数。若为奇数则 P=1,否则 P=0

    (4)SP 寄存器(堆栈指针) 堆栈指针 SP 是一个 8 位寄存器(用它存放堆栈地址),因此堆栈的深度最多只有

    256KB。当程序执行 CALL 或 PUSH 指令时,SP 会自动加 1,然后把相关的数据存入堆栈区中;当程序执行 RET、RETI 或 POP 指令时,堆栈区中的数据被弹出,SP 会自动减 1。因此,SP 总是指向栈顶。一般来说,用户可以设定 SP 值,将堆栈区规划在数据

  • 第一章 8051/52 单片机概论 ·17·

    存储器的任何地方。但当系统复位时,SP 会自动定为 07H,这将使第一个压栈的数据从 08H 处开始存入堆栈,即栈区为从 07H 单元开始的连续存储单元。由于 08H~1FH单元为工作寄存器区 1~3,20H~2FH 为位寻址区,在程序设计中很可能要用到这些单元,所以用户在编程时最好把 SP 的值改为 30H 或更大值,以免栈区与要使用的工作寄存器区或位寻址区发生冲突,造成数据混乱。栈区的大小可用“深度”表示,用户在设

    定堆栈时应该考虑到堆栈的深度,以便满足子程序嵌套时的要求。 (5)数据指针 DPTR 数据指针 DPTR 是一个 16 位的特殊寄存器(由 2 个 8 位寄存器组成),编程时,DPTR

    既可以作为一个 16 位寄存器使用,也可以作为独立的 8 位寄存器分开使用,此时用 DPH表示 DPTR 的高字节,用 DPL 表示 DPTR 的低字节。

    一般编程时,常用DPTR来存放外部RAM单元(或外部I/O接口)的 16 位地址,作为间接寄存器使用,它可指向外数据存储器(MOVX A,@DPTA) 或程序存储器(MOVC A,@A+DPTA),寻址范围为 64KB(216)。

    (6)P0、P1、P2、P3 寄存器 P0~P3 是 8051/8052 与外接电路沟通的窗口,也就是接口,它可以存储外接输入的

    数据,也可以锁存输出数据。其中 P0 没有输出提升电阻,P1、P2、P3 都有输出提升电阻。有关 I/O 接口的详细介绍请参阅第四章。

    (7)SBUF(串行口数据缓冲寄存器) 串行口数据缓冲寄存器实际上是由两个独立的寄存器组成,一个 UART 是传送数据

    缓冲寄存器,另一个 UART 则是接收数据缓冲寄存器。当用户使用 “MOV SBUF,A” 指令把数据写入 SBUF 时,所指的是把数据写入传送缓冲寄存器中;若是以“MOV A, SBUF”指令读取 SBUF 的数据时,所指的是到接收缓冲寄存器中读取数据。有关串行口数据缓冲寄存器的详细介绍请参阅第六章。

    (8)定时/计数寄存器 在 8051 中有两组定时/计数用的寄存器对,分别是 TH0、TL0 及 TH1、TL1。而 8052

    则多了一组寄存器对,它们是 TH2、TL2。这三对寄存器构成 3 个 16 位的定时/计数器,分别是 TIMER0、TIMER1、TIMER2(只有 8052 有)。详细介绍请参阅第五章。

    (9)捕捉寄存器 RCAP2H、RCAP2L 是一对寄存器,构成捕捉寄存器。当 8052 的 TIMER2 工作在

    捕捉模式,而 T2EX(P1.1)引脚上的输入信号由高电平变为低电平时,TH2、TL2 寄存器的内容被移入 RCAP2H 和 RCAP2L 中,就好像是将 TIMER2 的内容捕捉进 RCAP 寄存器。因此称为捕捉寄存器。TIMER2 也可以设为自动模式,此时,RCAP2H 及 RCAP2L就是保存 TH2、TL2 的载入值的地方。

    (10)控制寄存器 IP、IE 寄存器可以控制 MCS-51 的中断系统,TMOD、TCON 寄存器控制 TIMER0、

    TIMER1 的动作,T2CON 寄存器控制 TIMER2 的动作,SCON 寄存器控制 UART 的工作模式,PCON 则可管理电源的使用情况。下面将这些控制寄存器通过表格形式介绍给

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·18·

    读者,以便读者迅速掌握。 TCON 寄存器:定时/计数控制寄存器,可位寻址(位地址为 88H~8FH)。 地址:88H。 TCON 寄存器的格式如图 1.16 所示。

    TF1 IT0IE0IT1TR0TR1 TF0 IE1 图 1.16 TCON 寄存器的格式

    TCON 寄存器中各位符号的定义与功能如表 1.5 所示。

    表 1.5 TCON 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    TF1 TCON.7 Timer1 的溢出标志位。当 Timer1 计数到产生溢出位时,TF1 会被硬件设定为 1,当 CPU 执

    行中断服务程序时,硬件会自动将其清除为 0

    TR1 TCON.6 Timer1 的启动控制位元。由软件控制 Timer1 的启动与关闭(TR1=1 时,Timer1 启动;TR1=0

    时,Timer1 关闭)

    TF0 TCON.5 Timer0 的溢出标志位。当 Timer0 计数到产生溢出位时,TF0 会被硬件设定为 1,当 CPU 执

    行中断服务程序时,硬件会自动将其清除为 0

    TR0 TCON.4 Timer0 的启动控制位元。由软件控制 Timer0 的启动与关闭(TR0=1 时,Timer0 启动;TR0=0

    时,Timer0 关闭)

    IE1 TCON.3 INT1 的中断标志位。当外部中断( INT1 )被检测到时,IE1 会被硬件设定为 1,当 CPU 执行

    相对应的中断服务程序时,硬件会自动将其清除为 0

    IT1 TCON.2 INT1 的外部中断触发方式控制位。由软件置位/清 0 来选择外部中断 1 的跳变/电平触发中断

    请求

    IE0 TCON.1 INT0 的中断标志位。当外部中断( INT0 )被检测到时,IE0 会被硬件设定为 1,当 CPU 执行

    相对应的中断服务程序时,硬件会自动将其清除为 0

    IT0 TCON.0 INT0 的外部中断触发方式控制位。由软件置位/清 0 来选择外部中断 0 的跳变/电平触发中断

    请求

    TMOD 寄存器:定时/计数控制寄存器,不可位寻址。 地址:89H。 TMOD 寄存器的格式如图 1.17 所示。

    图 1.17 TMOD 寄存器的格式

    TMOD 寄存器中各位符号的定义与功能如表 1.6 所示。

    T2CON 寄存器:定时/计数控制寄存器,可位寻址(位地址为 C8H~CFH)。 地址:C8H。

  • 第一章 8051/52 单片机概论 ·19·

    表 1.6 TMOD 寄存器中各位符号的定义与功能

    符 号 说 明

    ① GATE=1:当 TCON 寄存器中 TRX 位被设定为 1,且 INTX 引脚为高电位时,TimerX 才会动作(注:X 表示 0 或 1);② GATE=0:当 TCON 寄存器中 TRX 位被设定为 1 时,TimerX 就会动作

    GATE

    ① C / T =1:此时工作在计数器模式,计数方波由 T0 或 T1 引脚输入;② C / T =0:此时工作在定时器模式,定时方波频率为震荡频率(Fosc)的 1/12

    C / T

    M1,M2

    工作模式选择位

    M1 M0 模式 说明

    0 0 0 13 位计数/定时

    0 1 1 16 位计数/定时

    1 0 2 8 位自动重载计数/定时

    1 1 3

    ① Timer0:TL0 为 8 位计数/定时器,由 Timer0

    的控制位元控制;TH0 为 8 位计数/定时器,由

    Timer1 的控制位元控制;② Timer1:停止工作

    T2CON 寄存器的格式如图 1.18 所示。

    图 1.18 T2CON 寄存器的格式

    T2CON 寄存器中各位符号的定义与功能如表 1.7 所示。

    表 1.7 T2CON 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    TF2 T2CON.7 Timer2 的溢出标志位。当 Timer2 计数到产生溢出位时,TF2 会被硬件设定为 1,

    当 CPU 执行中断服务程序时,硬件不会自动将其清除为 0,必须由软件来清除

    EXF2 T2CON.6

    Timer2 的外部标志位。当 T2EX(P1.1)引脚输入负跳变且 EXEN2=1 时,会执行

    “捕捉”或“自动重载”动作,此时 EXF2 会被设定为 1。当 Timer2 的中断处于使

    能,且 EXF2=1 时,CPU 执行 Timer2 的中断服务程序,EXF2 必须由软件来清除

    RCLK T2CON.5

    串行口的接收时钟选择位元。当 RCLK=1 时,串行口使用 Timer2 的溢出脉冲作

    为工作在模式 1 和 3 时的接收时钟信号;当 RCLK=0 时,串行口使用 Timer1 的

    溢出脉冲信号作为接收时钟信号

    TCLK T2CON.4

    串行口的发送时钟选择位元。当 TCLK=1 时,串行口使用 Timer2 的溢出脉冲作为

    工作在模式 1 和 3 时的发送时钟信号;当 TCLK=0 时,串行口使用 Timer1 的溢出

    脉冲信号作为发送时钟信号

    EXEN2 T2CON.3

    Timer2 的外部使能控制标志位。当 EXEN2=1 时,若 Timer2 并未作为串行口的时

    钟产生器,则在 T2EX(P1.1)引脚输入负跳变时,会使 Timer2 产生“捕捉”或“自

    动重载”动作;当 EXEN2=0 时,Timer2 会忽略 T2EX(P1.1)上的任何信号

    TR2 T2CON.2 Timer2 启动控制位元。由软件控制 Timer2 的启动与关闭,当 TR2=1 时,启动;

    当 TR2=0 时,关闭

    C/ T2 T2CON.1 计数器或定时器选择位。当 C/ T2 =1 时,为外部计数器(负跳变动作);当 C/ T2=0 时,为定时器

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·20·

    续表 符 号 位 址 说 明

    “捕捉”或“自动重载”选择位元。当 CP/ RL2 =1 时,若 EXEN2=1 且 T2EX 引脚输入负跳变时,Timer2 会产生“捕捉”动作。当 CP/ RL2 =0 时,若有“溢出发生”或者“EXEN2=1 且 T2EX 引脚输入负跳变”时,Timer2 会有“自动重载”动

    作。此外,当 RCLK=1 或 TCLK=1 时,此位元失去作用,此时只要 Timer2 发生

    溢出,Timer2 就会执行“自动重载”动作

    CP/ RL2

    T2CON.0

    SCON 寄存器:串行口控制寄存器,可位寻址(位地址为 98H~9FH)。 地址:98H。 SCON 寄存器的格式如图 1.19 所示。

    SM 0 R1T1RB8TB 8RENSM 1 SM 2

    图 1.19 SCON 寄存器的格式

    SCON 寄存器中各位符号的定义与功能如表 1.8 所示。

    表 1.8 SCON 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    SM0

    SM1

    SCON.7

    SCON.6

    串行口工作模式选择位 0

    串行口工作模式选择位 1

    SM0 SM1 模式 功能 波特率

    0 0 0 移位寄存器 fosc /12

    0 1 1 8 位 UATR(每帧发送 10 位) 可用软件设置

    1 0 2 9 位 UATR(每帧发送 11 位) fosc /32 或 fosc /64

    1 1 3 9 位 UATR(每帧发送 11 位) 可用软件设置

    注:fosc 为震荡器频率

    UATR 为非同步接收/发射器

    ①在模式 0 时,SM2 必须清为 0;②在模式 1 时,若 SM2=1,则当接收到不正确的停止位元

    时,串行接收中断标志 RI 的值为 0,即不产生串行接收中断,此种情况表示传送端与接收端

    的波特率差异太大;在模式 2 及模式 3 时,若 SM2=1,则允许多控制器之间通信,此时若接

    收到的第 9 个数据位(RB8)是 1,则会将 RI 设定为 1,即会产生串行接收中断

    SM2 SCON.5

    REN SCON.4 串行接收允许位,由软件控制,当 REN 设为 1 时,方可接收数据

    TB8 SCON.3 在模式 2 及模式 3 时,TB8 被当作第 9 个数据位传送出去,可由软件加以设定或清除

    ①在模式 0 时,不使用此位;②在模式 1 时,若 SM2=1,则接收停止位会存入 RB8;③在模

    式 2 及模式 3 时,接收第 9 个数据位存入 RB8 RB8 SCON.2

    TI SCON.1 传送中断标志。①在模式 0 时,当传送出第 8 位数据后,硬件会将 TI 设定为 1,但必须由软

    件清除;②其他模式,当开始传送停止位时,硬件会将 TI 设定为 1,但必须由软件清除

    RI SCON.0 接收中断标志。①在模式 0 时,当接收完第 8 位数据后,硬件会将 RI 设定为 1,但必须由软

    件清除;②其他模式,当停止位元接收到一半时,硬件会将 RI 设定为 1,但必须由软件清除

    IE 寄存器:中断使能控制寄存器,可位寻址(位地址为 A8H~AFH)。 地址:A8H。

  • 第一章 8051/52 单片机概论 ·21·

    IE 寄存器的格式如图 1.20 所示。

    图 1.20 IE 寄存器的格式

    IE 寄存器中各位符号的定义与功能如表 1.9 所示。

    表 1.9 IE 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    EA =0,CPU 不接收任何中断请求,即所有中断都被关闭; EA =1,每个中断源由各自的使能位来控制。当使能位设定为 1 时,该中断被打开;反之,被关闭

    EA IE.7

    ~ IE.6 保留未用

    ET2 IE.5 Timer2 的中断使能位。当 ET2=1 时,该中断被打开;当 ET2=0 时,该中断被关闭

    ES IE.4 串行口的中断使能位。当 ES=1 时,该中断被打开;当 ES=0 时,该中断被关闭

    ET1 IE.3 Timer1 的中断使能位。当 ET1=1 时,该中断被打开;当 ET1=0 时,该中断被关闭

    EX1 IE.2 外部中断 1( INT1 )的中断使能位。当 EX1=1 时,该中断被打开;当 EX1=0 时,该中断被关闭

    ET0 IE.1 Timer0 的中断使能位。当 ET0=1 时,该中断被打开;当 ET0=0 时,该中断被关闭

    EX0 IE.0 外部中断 0( INT0 )的中断使能位。当 EX0=1 时,该中断被打开;当 EX0=0 时,该中断被关闭

    IP 寄存器:中断优先权控制寄存器,可位寻址(位地址为 B8H~BFH)。 地址:B8H。 IP 寄存器的格式如图 1.21 所示。

    图 1.21 IP 寄存器的格式

    IP 寄存器中各位符号的定义与功能如表 1.10 所示。

    表 1.10 IP 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    ~ IP.7 保留未用

    ~ IP.6 保留未用

    PT2 IP.5 定义 Timer2 的中断优先权层次。当 PT2=1 时为最高优先权,当 PT2=0 时为最低优先权

    PS IP.4 定义串行口的中断优先权层次。当 PS=1 时为最高优先权,当 PS=0 时为最低优先权

    PT1 IP.3 定义 Timer1 的中断优先权层次。当 PT1=1 时为最高优先权,当 PT1=0 时为最低优先权

    PX1 IP.2 定义外部中断 1( INT1 )的中断优先权层次。当 PX1=1 时为最高优先权,当 PX1=0 时为最

    低优先权

    PT0 IP.1 定义 Timer0 的中断优先权层次。当 PT0=1 时为最高优先权,当 PT0=0 时为最低优先权

    PX0 IP.0 定义外部中断 0 INT0 的中断优先权层次。当 PX0=1 时为最高优先权,当 PX0=0 时为最低

    优先权

    PCON 寄存器:电源控制寄存器,不可位寻址。

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·22·

    地址:87H。 PCON 寄存器的格式如图 1.22 所示。

    图 1.22 PCON 寄存器的格式

    PCON 寄存器中各位符号的定义与功能如表 1.11 所示。

    表 1.11 PCON 寄存器中各位符号的定义与功能

    符 号 位 址 说 明

    SMOD PCON.7 双倍波特率控制位元。当串行口工作于模式 1、2、3,且使用 Timer1 作为波特率产

    生器时,若 SMOD=1,则波特率为 SMOD=0 时的两倍

    ~ PCON.6 保留未用

    ~ PCON.5 保留未用

    ~ PCON.4 保留未用

    GF1 PCON .3 一般用途的标志位

    GF0 PCON.2 一般用途的标志位

    PD PCON.1 电源功率下降位。若令 PD=1,则会使 CHMOS 版本的 MCS-51(例如 80C51BH)

    进入功率下降模式

    IDL PCON.0 待机模式位。若令 IDL=1,则会使 CHMOS 版本的 MCS-51(例如 80C51BH)进入

    待机模式

    2. 外部数据存储器

    MCS-51 系列的外部数据存储器(RAM)最大可以扩充到 64KB,在这 64KB 的地址空间中,除了可以放置 RAM 外,也可以利用 memory map I/O 的方式将一些标准 I/O芯片(例如 8155 等)的地址码一起放入外部数据存储器地址空间里。

    外部数据存储器的存取操作可利用 MOVX 指令来完成,其地址码长度可以是 8 位,也可以是 16 位。长度为 8 位的地址码,首先存储在 R0 或 R1 中,然后再用间接寻址方式读取,例如,用“MOVX A,@Ri”或“MOVX @Ri,A”指令读取数据。长度为16 位的地址码,首先存储在数据指针寄存器 DPTR 中,然后再用间接寻址方式读取,例如,用“MOVX A,@DPTR”或“MOVX @DPTR,A”指令读取数据。64KB 的地址空间需要 16 根地址线和 8 根数据线。

    1.5 省电工作模式

    在实际应用中,电源功率的消耗是一个非常重要的因素。如果使用的是 CHMOS 型的 MCS-51 单片机,则功率的消耗可以减少到最小。设计者可以通过设定 PCON 寄存器中的相关位,使其运行在空闲工作(IDLE)模式或者掉电工作模式。但需要注意,PCON寄存器中的 SMOD、GF1、GF0、PD、IDL 仅存在于 CHMOS 型的 MCS-51 单片机。在HMOS 型的 MCS-51 单片机中 PCON 寄存器仅包含 SMOD 位元。

  • 第一章 8051/52 单片机概论 ·23·

    1.5.1 空闲工作模式

    当 CPU 执行完置 IDL=1(PCON.0)的指令后,系统进入空闲工作模式,这时,内部时钟不供给 CPU,而只供给中断控制、串行口、定时器部分。CPU 的内部状态维持,即包括堆栈指针 SP、程序计数器 PC、程序状态字 PSW、累加器 ACC 和其他所有的寄存器的内容保持不变,端口状态也保持不变。ALE 和 PSEN 保持逻辑高电平。由于PCON 寄存器没有位寻址功能,因此,可以利用“ORL PCON,#01H”指令将 IDL 位元设定为 1,使其进入空闲工作模式。

    进入空闲工作模式后,有两种方法可以使系统退出空闲模式。一种是任何的中断请

    求被响应都可以使硬件将 PCON.0 清 0 而终止空闲工作模式。当执行完中断服务程序返回时,从空闲工作模式指令的下一条指令开始继续执行程序。

    另外,PCON 寄存器中的 GF1、GF0 标志位可以用来指示中断是否在正常情况下或在空闲模式下。例如,在执行空闲模式的指令前,先置标志位 GF1(或 GF0),当空闲工作模式被中断终止时,在中断服务程序中可检测到标志位,以判断出系统是在什么情

    况下发生中断,如果 GF1(或 GF0)为 1,则是在空闲模式下进入中断。 另一种退出空闲工作模式的方法是硬件复位(reset)。由于在空闲工作模式下震荡器仍

    然工作,因此硬件复位仅需 2 个机器周期便可完成。从 RST 引脚输入的复位信号直接将PCON.0 清 0,进而退出空闲工作模式,CPU 则从进入空闲模式的下一条指令重新执行程序。如图 1.23 所示,在内部系统复位开始,还可以有 2~3 个指令周期,在这一段时间里,系统硬件禁止访问内部 RAM 区,但允许访问端口。但是,为了防止对端口的操作出现错误,在空闲工作模式指令的下一条指令中,不应该为写端口或写外部 RAM 的指令。

    图 1.23 空闲工作模式或掉电工作模式控制电路

    1.5.2 掉电工作模式

    当 CPU 执行完置 PD=1(PCON.1)的指令后,系统进入掉电工作模式,在这种情

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·24·

    况下,内部振荡器停止工作。由于没有震荡时钟,因此,所有的功能部件都停止工作。

    但内部 RAM 区和特殊功能寄存器的内容被保留,而端口的输出状态值都保存在对应的SFR 中,ALE 和 PSEN 保持逻辑低电平。

    退出掉电工作模式的唯一方法是硬件复位。复位后将所有特殊功能寄存器的内容初

    始化,但不改变内部 RAM 区的数据。 在掉电工作模式下,Vcc 可以降低到 2V,但在进入掉电工作模式之前,Vcc 不能降

    低。而在准备退出掉电模式之前,Vcc 必须恢复正常的工作电压值,并保持一段时间(约10 ms),使振荡器重新启动并稳定后方可退出掉电工作模式。

  • 第二章 8051/52 指令系统及说明

    本章重点:

    本章主要介绍单片机怎样寻找操作数和操作数地址,让读者了

    解 8051/52 单片机系列指令系统的分类,熟练掌握 8051/52 单片机系列的寻址方式以及 8051/52 单片机系列汇编语言的指令格式。

    在第一章中,对于 8051/52 单片机的组织结构有了基本的认识,但要发挥 8051/52 单片

    机的强大功能除了熟悉硬件结构外,对于其汇编语言的指令更要有彻底的了解,只有软硬

    件相互配合,才能完成单片机的应用,本章将详细介绍 8051/52 单片机系列的每一个指令。

    2.1 8051/52 单片机汇编语言的指令格式

    8051/52 单片机系列的指令格式与一般汇编语言的指令格式类似,由代表指令助记符和 0~3 个运算单元组成,如图 2.1 所示。

    1.0 个运算单元:NOP

    2.1 个运算单元:CLR A

    3.2 个运算单元:MOV A, R1

    4.3 个运算单元:CJNE A, #38H, LOOP

    助记符

    第一运算单元

    第二运算单元

    第三运算单元

    图 2.1 8051/52 单片机系列的指令格式

    2.2 8051/52 单片机的指令寻址方式

    所谓寻址方式是指 CPU 寻找运算单元的方法。归纳起来,8051/52 单片机系列共有五种寻址方式,具体如下:

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·26·

    2.2.1 直接寻址

    所谓直接寻址(direct addressing)是将运算单元所在的位置直接在指令中指示出来。如: MOV A, 38H ;将位置在 38H的内容移入累加器中

    具体过程如图 2.2 所示。

    4FH 4FH

    内部 RAM

    38H

    A

    图 2.2 直接寻址的过程

    在 8051/52 单片机系列中只有内部寄存器与特殊功能寄存器可以被直接寻址。

    2.2.2 间接寻址

    所谓间接寻址(indirect addressing)是指不直接在指令中指定运算单元的位置,而是将运算的位置放在另一个寄存器中,此寄存器便是运算单元位置的指针(pointer)。在 8051/52 单片机系列中具有位置指针功能的寄存器有 R0、R1、SP、DPTR 四个,使用时必须在寄存器前加上前置符号@。R0、R1 两个寄存器的功能相同,均为 8 位元,因此,间接寻址指令可用来寻址内部存储器和外部扩展存储器中的前 256 个字节(00H~FFH)。假设 R0 内容为 50H,以下便是间接寻址的范例:

    MOV A ,@R0 ;将位置为 50H的内部 RAM的内容移入 A中 MOVX A ,@R0 ;将位置为 50H的外部 RAM的内容移入 A中

    具体过程如图 2.3 所示。

    30H

    A

    30H 50H 50H

    R0

    内部或外部 RAM

    图 2.3 间接寻址的过程

    SP 寄存器是堆栈指针,它的功能是作为数据存入堆栈区或从堆栈区取出数据时的指示器。假设 SP 的内容为 30H,则下列指令便是将累加器的内容移入位置为 31H(SP会先加 1)的内部 RAM 中。

    PUSH A ;将累加器 A中的数据移入堆栈中

    具体过程如图 2.4 所示。 DPTR 寄存器是一个 16 位元的指针寄存器,因此可以寻址的范围达 65536 字节

    (0000H~FFFFH),可用来寻址外部数据存储器和外部程序存储器。假设 DPTR 的内容

  • 第二章 8051/52 指令系统及说明 ·27·

    为 2000H,则下列指令可以将位置为 2000H 的外部数据的内容移入累加器中。

    66H

    A

    66H 31H 31H

    SP

    内部 ARM

    图 2.4 SP 寄存器的寻址过程

    MOVX A, @DPTR

    具体过程如图 2.5 所示。

    80H

    A

    80H 2000H 2000H

    DPTR

    外部 ARM

    图 2.5 DPTR 寄存器的寻址过程

    2.2.3 寄存器寻址

    8051/52 单片机系列有 4 个通用寄存器区,每个通用寄存器区中均有 8 个寄存器,编码为 R0~R7。假如在指令中运算单元指定为 R0~R7,就称为寄存器寻址(register addressing)。如:

    MOV A , R3 ;将 R3的内容移入 A中 具体过程如图 2.6 所示。

    R0

    寄存器区

    R7

    50H

    R6

    R5

    R4

    R3

    R2

    R1

    50H

    A

    内部 RAM

    图 2.6 寄存器寻址的过程

    学出版社

    职教技术出版中心

    www.abook.cn

  • MCS-51/52 单片机原理与应用 ·28·

    2.2.4 立即寻址

    运算单元的数据在指令中直接给出,但在数据前面必须有前置符号#。如: MOV R0, #66H ;将常数 66H移入 R0中

    2.2.5 变址寻址方式

    所谓变址寻址方式是将基址寄存器的内容,再加上累加器 A 的内容所得的值作为运算单元所在的地址。8051/52 单片机系列的基址寄存器是 DPTR 或 PC(程序计数器)。值得注意的是,只有在读取程序存储器的内容时才能使用变址寻址方式。假设基址寄存

    器 DPTR 的内容为 2000H,而累加器 A 的内容为 06H,则下列指令可以将地址为 2006H的程序存储器的内容移入累加器 A 中。

    MOVC A, @A+DPTR

    具体过程如图 2.7 所示。

    80H

    A

    80H 2006H 2000H

    DPTR

    程序存储器

    + 06H

    A

    2000H + 06H=2006H

    图 2.7 变址寻址方式的过程

    2.3 8051/52 单片机的指令集

    MCS-51 系列指令依照指令的功能,可以分成以下五大类,共 111 条: 1)算术运算指令(24 条); 2)数据传送指令(28 条); 3)逻辑运算指令(25 条); 4)位操作指令(也称布尔代数运算指令)(17 条); 5)控制转移指令(也称程序分支指令)(17 条)。 表 2.1 至表 2.6 列出了每个指令的动作、所占存储器的字节数、执行时间(也称机

    器周期数)及详细说明的页码。

    表 2.1 8015/8052 系列单片机汇编语言符号说明

    符 号 说 明

    Rn 代表目前所选择的寄存器组中的 R0~R7 寄存器

    8 位元的位址码,可以代表内部 RAM 中较低的 128 个位元组的位址(0~127)或特殊功能寄存器(128~

    255) direct

    @Ri 通过 R0 或 R1 作间接寻址寄存器所寻址到的存储器 RAM 的位址(0~255)

  • 第二章 8051/52 指令系统及说明 ·29·

    续表 符 号 说 明

    #data 包含在指令中的 8 位元常数

    #data 16 包含在指令中的 16 位元常数

    addr 16 16 位目标地址。使用在 LCALL 和 LJMP 指令中,可以跳跃到 64KB 程序存储器中的任何位址

    Addr 11 11 位目标地址。使用在 ACALL 和 AJMP 指令中,可以跳跃到从下一个指令的第一个位元组算起的 2KB

    位元组的范围内

    Rel 带有正负号的 8 位元偏移值。适用于 SJMP 和所有条件式跳跃指令,其跳跃范围是从下一个指令的第一

    个位置算起,往前 128 个位元组(-128)�