第1章 绪论 1
1.1 数制与编码的简单回顾 1
1.1.1 数制 1
目录 1
1.1.2 编码 2
1.1.3 计算机中带符号数的表示 4
1.2 电子计算机的发展概述 5
1.2.1 电子计算机的问世及其经典结构 5
1.2.2 微型计算机的组成及其应用形态 6
1.3 单片机的发展过程及产品近况 7
1.3.1 单片机的发展过程 7
1.3.2 单片机产品近况 8
1.4.2 单片机的应用领域 9
1.4 单片机的特点及应用领域 9
1.4.1 单片机的特点 9
1.5 单片机应用系统开发简述 10
1.5.1 单片机应用系统的开发 10
1.5.2 单片机应用系统的传统开发方式 11
1.5.3 单片机开发方式的进展 12
本章小结 12
思考题及习题 13
第2章 80C51的结构和原理 14
2.1 80C51系列概述 14
2.1.1 MCS-51系列 14
2.2.1 80C51的基本结构 15
2.2 80C51的基本结构与应用模式 15
2.1.2 80C51系列 15
2.2.2 80C51的应用模式 16
2.3 80C51典型产品资源配置与引脚封装 17
2.3.1 80C51典型产品资源配置 17
2.3.2 80C51单片机的封装和引脚 18
2.4 80C51的内部结构 19
2.4.1 80C51单片机的内部结构 19
2.4.2 80C51单片机的时钟与时序 21
2.4.3 80C51单片机的复位 24
2.5 80C51的存储器组织 25
2.5.1 80C51单片机的程序存储器配置 25
2.5.2 80C51单片机的数据存储器配置 26
2.5.3 80C51单片机的特殊功能寄存器 28
2.6 80C51的并行口结构与操作 31
2.6.1 P0口、P2口的结构 31
2.6.2 P1口、P3口的结构 33
2.6.3 并行口的负载能力 35
本章小结 36
思考题及习题 36
第3章 80C51的指令系统 37
3.1 指令格式及常用符号 37
3.1.1 机器指令编码格式 37
3.1.2 符号指令格式 38
3.1.3 符号指令及其注释中常用的符号 39
3.2 80C51的寻址方式 39
3.2.1 寄存器寻址 40
3.2.3 寄存器间接寻址 41
3.2.2 直接寻址 41
3.2.4 立即寻址 42
3.2.5 变址寻址 42
3.2.6 相对寻址 43
3.2.7 位寻址 44
3.3 数据传送类指令 44
3.3.1 一般传送 44
3.3.2 特殊传送 47
3.4 算术运算类指令 50
3.4.1 加法 52
3.4.2 减法 54
3.4.3 乘法 54
3.5 逻辑运算与循环类指令 55
3.4.4 除法 55
3.5.1 逻辑与 56
3.5.2 逻辑或 57
3.5.3 逻辑异或 57
3.5.4 累加器清0和取反 57
3.5.5 累加器循环移位 57
3.6 控制转移类指令 58
3.6.1 无条件转移 59
3.6.2 条件转移 61
3.6.3 调用与返回 62
3.6.4 空操作 63
3.7 位操作类指令 63
3.7.2 位状态设置 65
3.7.3 位逻辑运算 65
3.7.1 位传送 65
3.7.4 位判跳(条件转移) 66
本章小结 66
思考题及习题 67
第4章 80C51的程序设计 69
4.1 程序编制的步骤与方法 69
4.1.1 程序编制的步骤 69
4.1.2 编制程序的方法和技巧 70
4.1.3 汇编语言的语句格式 71
4.2 源程序与伪指令 72
4.2.1 源程序的编辑与汇编 72
4.2.2 伪指令 73
4.3.1 顺序程序 76
4.3 基本程序结构 76
4.3.2 分支程序 78
4.3.3 循环程序 79
4.3.4 子程序及其调用 81
4.4 常用程序举例 84
4.4.1 算术运算程序 84
4.4.2 码型转换程序 86
本章小结 89
思考题及习题 89
第5章 80C51的中断系统及定时/计数器 91
5.1 80C51单片机的中断系统 91
5.1.1 80C51中断系统的结构 91
5.1.2 80C51的中断源 92
5.1.3 80C51中断的控制 94
5.2.1 中断响应条件和时间 95
5.2 80C51单片机中断处理过程 95
5.2.2 中断响应过程 97
5.2.3 中断返回 97
5.2.4 中断程序举例 98
5.3 80C51的定时/计数器 100
5.3.1 定时/计数器的结构和工作原理 101
5.3.2 定时/计数器的控制 102
5.3.3 定时/计数器的工作方式 103
5.3.4 定时/计数器用于外部中断扩展 106
5.3.5 定时/计数器应用举例 106
本章小结 108
思考题及习题 109
6.1 计算机串行通信基础 111
第6章 80C51的串行口 111
6.1.1 串行通信的基本概念 112
6.1.2 串行通信接口标准 116
6.2 80C51单片机的串行口 120
6.2.1 80C51串行口的结构 121
6.2.2 80C51串行口的控制寄存器 121
6.2.3 80C51串行口的工作方式 122
6.3 单片机串行口应用举例 127
6.3.1 单片机与单片机的通信 127
6.3.2 单片机与PC机的通信 136
本章小结 138
思考题及习题 138
7.1.1 程序存储器的扩展 139
7.1 存储器的扩展 139
第7章 80C51的系统扩展 139
7.1.2 数据存储器的扩展 143
7.2 I/O及其控制方式 146
7.2.1 I/O接口的功能 146
7.2.2 单片机与I/O设备的数据传送方式 147
7.3 并行接口的扩展 148
7.3.1 并行I/O口的简单扩展 148
7.3.2 可编程接口8155的扩展 149
7.4 8279接口芯片 155
7.4.1 8279的结构 155
7.4.2 8279的引脚定义 156
7.4.3 8279的操作命令 157
7.5.1 显示器及其接口 160
7.4.4 8279的状态字 160
7.5 显示器及键盘接口 160
7.5.2 键盘及其接口 164
7.5.3 键盘和显示器接口示例 168
本章小结 172
思考题及习题 173
第8章 80C51的测控接口 174
8.1 D/A转换器及其与单片机的接口 174
8.1.1 D/A转换器的原理及主要技术指标 174
8.1.2 DAC0832芯片及其与单片机接口 176
8.2 A/D转换器及其与单片机接口 180
8.2.1 A/D转换器的原理及主要技术指标 180
8.2.2 ADC0809芯片及其与单片机的接口 183
8.2.3 AD574A芯片及其与单片机的接口 186
8.2.4 MC14433芯片及其与单片机的接口 190
8.3 开关量接口 194
8.3.1 开关量输入接口 194
8.3.2 开关量输出接口 196
本章小结 199
思考题及习题 199
第9章 80C51的C语言程序设计 201
9.1 单片机的C语言 201
9.1.1 C51程序开发概述 201
9.1.2 C51程序结构 202
9.2.1 C51的数据类型 203
9.2 C51的数据类型与运算 203
9.2.2 C51数据的存储器类型 204
9.2.3 80C51硬件结构的C51定义 205
9.2.4 C51的运算符和表达式 206
9.3 C51流程控制语句 208
9.3.1 C51选择语句 208
9.3.2 C51循环语句 209
9.4 C51的指针类型 211
9.4.1 一般指针 211
9.4.2 基于存储器的指针 212
9.5 C51的函数 212
9.5.1 C51函数的定义 212
9.6 C51编程实例 213
9.6.1 80C51内部资源的编程 213
9.5.2 C51函数的调用与参数传递 213
9.5.3 C51的库函数 213
9.6.2 80C51扩展资源的编程 215
本章小结 218
思考题及习题 218
第10章 80C51应用系统设计方法 219
10.1 单片机应用系统设计过程 219
10.1.1 系统设计的基本要求 219
10.1.2 系统设计的步骤 220
10.2 提高系统可靠性的一般方法 221
10.2.1 电源干扰及其抑制 221
10.2.2 地线干扰及其抑制 223
10.2.3 其他提高系统可靠性的方法 223
10.3.1 模拟输入通道的组成 225
10.3 数据采集系统的设计 225
10.3.2 设计示例 226
10.4 智能二线制温度变送器设计实例 227
10.4.1 智能温度变送器简介 227
10.4.2 硬件设计 228
10.4.3 软件设计 233
本章小结 237
思考题及习题 238
附录A AT89C系列单片机简介 239
附录B 80C51单片机指令速查表 253
附录C C51相关资源 256
附录D ASCII码表 266
附录E 常用芯片引脚 267
参考文献 268