第1章 概述 1
1.1 单片机的基本概念 1
1.2 单片机的发展概况 3
1.3 单片机的特点及应用 4
1.3.1 单片机的特点 4
1.3.2 单片机的应用 4
1.4 常用单片机系列介绍 5
1.4.1 MCS系列产品 5
1.4.2 MCS-51系列单片机的结构特点 7
第2章 MCS-51系列单片机的硬件结构 9
2.1 MCS-51系列单片机简介 9
2.2 MCS-51系列单片机内部结构与外部引脚说明 9
2.2.1 内部结构框图 9
2.2.2 外部引脚说明 10
2.3 微处理器 12
2.3.1 运算部件 13
2.3.2 控制部件及振荡器 14
2.3.3 CPU时序 14
2.4 存储器 16
2.4.1 程序存储器 16
2.4.2 数据存储器 17
2.5 并行输入/输出接口 21
2.5.1 P0口 21
2.5.2 P1口 22
2.5.3 P2口 23
2.5.4 P3口 23
2.6 定时器/计数器 24
2.6.1 定时器/计数器T0、T1的结构 24
2.6.2 定时器/计数器T0、T1的四种工作方式 26
2.7 串行输入/输出口 29
2.7.1 串行通信的基本概念 29
2.7.2 MCS-51单片机的串行口 31
2.8 MCS-51单片机的中断系统 36
2.8.1 中断的基本概念 36
2.8.2 中断源 36
2.8.3 中断控制 38
2.8.4 中断响应的条件、过程与时间 40
2.9 复位状态及复位电路 41
2.9.1 复位状态 41
2.9.2 复位电路 42
第3章 MCS-51单片机指令系统和汇编语言程序示例 44
3.1 MCS-51单片机指令系统概述 44
3.1.1 指令、指令系统的概念 44
3.1.2 MCS-51单片机指令系统及其指令格式 45
3.2 寻址方式 46
3.2.1 立即寻址 46
3.2.2 寄存器寻址 46
3.2.3 寄存器间接寻址 46
3.2.4 直接寻址 47
3.2.5 变址寻址 47
3.2.6 相对寻址 48
3.2.7 位寻址 48
3.3 数据传送类指令 48
3.3.1 访问片内数据存储器的一般数据传送指令 48
3.3.2 片内特殊传送指令 50
3.3.3 片外数据存储器数据传送指令 51
3.3.4 访问程序存储器的数据传送指令 52
3.4 算术运算类指令 53
3.4.1 加、减法指令 53
3.4.2 十进制调整指令 55
3.4.3 乘、除法指令 55
3.5 逻辑运算及移位指令 56
3.6 控制转移类指令 58
3.6.1 无条件转移指令 58
3.6.2 条件转移指令 60
3.7 子程序调用与返回指令 62
3.7.1 子程序调用指令 62
3.7.2 返回指令 63
3.7.3 空操作指令 63
3.8 位操作类指令 63
3.9 汇编程序格式与伪指令 65
3.10 汇编程序设计示例 67
3.10.1 算术、逻辑处理程序 67
3.10.2 数制转换程序 72
3.10.3 多分支转移(散转)程序 73
3.10.4 定时器/计数器应用程序 75
3.10.5 外部中断应用程序 77
3.10.6 串行口应用程序 78
第4章 MCS-51单片机系统功能的扩展 83
4.1 系统扩展概述 83
4.1.1 最小应用系统 83
4.1.2 单片机系统扩展的内容与方法 83
4.2 常用扩展器件简介 84
4.2.1 8D锁存器74LS373 85
4.2.2 74LS244和74LS245芯片 86
4.2.3 3-8译码器74LS138 87
4.3 存储器的扩展 87
4.3.1 存储器扩展概述 87
4.3.2 程序存储器的扩展 89
4.3.3 数据存储器的扩展 92
4.3.4 兼有片外程序存储器和片外数据存储器的扩展举例 94
4.4 I/O扩展 94
4.4.1 I/O口扩展概述 95
4.4.2 8255可编程并行I/O口扩展 96
4.4.3 8155可编程并行I/O口扩展 101
4.4.4 用TTL芯片扩展简单的I/O接口 106
4.4.5 用串行口扩展并行I/O口 109
第5章 MCS-51单片机的接口与应用 113
5.1 按键、键盘及其接口 113
5.1.1 键输入过程与软件结构 113
5.1.2 键盘接口和键输入软件中应解决的几个问题 114
5.1.3 独立式按键 115
5.1.4 行列式键盘 116
5.2 显示及显示器接口 121
5.2.1 LED显示器结构与原理 121
5.2.2 LED显示器与显示方式 122
5.2.3 LED显示器接口 123
5.2.4 键盘、显示器组合接口 126
5.3 A/D转换器接口 129
5.3.1 A/D转换器概述 129
5.3.2 A/D转换器ADC0809与单片机的接口 130
5.3.3 单片机与A/D转换器AD574的接口 133
5.4 D/A转换器接口 135
5.4.1 D/A转换器概述 135
5.4.2 8位D/A转换器与单片机的接口 137
5.4.3 高于8位D/A转换器与单片机的接口 142
5.5 行程开关、晶闸管、继电器与单片机的接口 145
5.5.1 光电耦合器件 145
5.5.2 行程开关、继电器触点与单片机的接口 146
5.5.3 晶闸管元件与单片机接口 146
5.5.4 继电器与单片机接口 147
第6章 单片机应用系统设计与开发 150
6.1 单片机应用系统结构与应用系统的设计内容 150
6.1.1 单片机应用系统的一般硬件组成 150
6.1.2 单片机应用系统的设计内容 153
6.2 单片机应用系统开发过程 153
6.2.1 系统需求与方案调研 155
6.2.2 可行性分析 155
6.2.3 系统方案设计 155
6.2.4 系统详细设计与制作 156
6.2.5 系统调试与修改 156
6.2.6 生成正式系统(或产品) 156
6.3 单片机应用系统的一般设计方法 156
6.3.1 确定系统的功能与性能 156
6.3.2 确定系统基本结构 157
6.3.3 单片机应用系统硬、软件的设计原则 158
6.3.4 硬件设计 159
6.3.5 软件设计 161
6.3.6 资源分配 161
6.4 单片机应用系统调试 162
6.4.1 单片机应用系统调试工具 162
6.4.2 单片机应用系统的一般调试方法 164
6.5 MCS-51单片机应用系统设计与调试实例 167
第7章 单片机的C语言应用程序设计 172
7.1 C语言与MCS-51 172
7.2 C51数据类型及在MCS-51中的存储方式 173
7.2.1 C51的数据类型 173
7.2.2 C51数据在MCS-51中的存储方式 173
7.3 C51数据的存储类型与MCS-51存储结构 175
7.4 MCS-51特殊功能寄存器(SFR)的C51定义 177
7.5 MCS-51并行接口的C51定义 178
7.6 位变量的C51定义 179
7.7 C51构造数据类型 180
7.8 模块化程序开发过程 182
7.8.1 混合编程 182
7.8.2 覆盖和共享 185
7.8.3 库和连接器/定位器 186
7.8.4 程序优化 188
7.9 MCS-51内部资源使用的C语言编程 189
7.9.1 中断应用的C语言编程 189
7.9.2 定时器/计数器(T/C)应用的C语言编程 191
7.9.3 串行口使用的C语言编程 194
7.10 MCS-51片外扩展的C语言编程 196
7.10.1 8255与8031接口C应用程序举例 196
7.10.2 MCS-51数据采集的C语言编程 199
7.10.3 MCS-51输出控制的C语言编程 201
7.11 频率量测量的C语言编程 205
7.11.1 测量频率法 205
7.11.2 频率脉冲的测量周期法 207
7.12 MCS-51机间通信的C语言编程 208
7.12.1 点对点的串行异步通信 208
7.12.2 多机通信 212
7.13 键盘和数码显示人机交互的C语言编程 220
7.13.1 行列式键盘与8031的接口 220
7.13.2 七段数码显示与8031的接口 222
附录A ASCII(美国标准信息交换码)表 227
附录B MCS-51系列单片机指令表 229
附录C Franklin C51上机指南 236
C.1 安装 236
C.2 编译器 236
C.2.1 编译器控制指令 236
C.2.2 预处理器 244
C.2.3 C库函数 244
C.3 连接器 247
C.3.1 L51的使用 247
C.3.2 连接器控制命令 247
C.4 汇编器 248
C.4.1 汇编控制 248
C.4.2 伪指令 249
C.5 实用程序 250
C.5.1 库管理器LIB51 250
C.5.2 目标—十六进制—符号转换器OHS51 251
C.5.3 其它 251