第1章 单片微型计算机概述及预备知识 1
1.1 单片机的发展历史和发展趋势 1
1.1.1 单片机的发展历史 1
1.1.2 单片机的发展趋势 2
1.2 计算机的数制和码制及数制之间的转换 3
1.2.1 计算机的数制 3
1.2.2 计算机的码制 5
1.2.3 各数制间的转换 6
1.3 计算机中数的表示方法 9
1.4.1 算术运算 12
1.4 微型计算机的二进制数运算 12
1.4.2 逻辑运算 14
1.5 常用的单片机产品 15
1.6 单片机的应用与选择 16
1.6.1 单片机的特点 16
1.6.2 单片机的应用领域 16
1.6.3 单片机应用系统的结构 17
习题 18
第2章 MCS-51系列单片机硬件结构 19
2.1 MCS-51单片机的逻辑结构及信号引脚 19
2.1.1 MCS-51单片机的结构框图 19
2.1.2 MCS-51单片机的外部引脚 22
2.2 MCS-51单片机的时钟电路与时序 23
2.2.1 时钟电路 24
2.2.2 指令周期、机器周期、节拍和状态 25
2.2.3 典型指令的时序 25
2.3 MCS-51单片机的工作方式 27
2.3.1 复位方式 27
2.3.2 程序执行方式 29
2.3.3 掉电保护方式 29
2.4 MCS-51单片机的内部存储器 30
2.4.1 MCS-51单片机系统的存储器结构特点 30
2.3.4 CHMOS工艺的MCS-51单片机的低功耗方式 30
2.4.2 程序存储器 31
2.4.3 数据存储器 31
2.4.4 特殊功能寄存器 33
2.4.5 位存储器 36
习题 36
第3章 MCS-51指令系统 37
3.1 汇编语言指令格式 37
3.1.1 汇编语言指令格式 37
3.1.2 汇编伪指令 38
3.2 MCS-51的寻址方式 41
3.3.1 数据传送类指令 45
3.3 MCS-51的指令系统 45
3.3.2 算术运算类指令 50
3.3.3 逻辑运算类指令 55
3.3.4 位操作类指令 57
3.3.5 控制转移类指令 59
习题 66
第4章 汇编语言程序设计 68
4.1 汇编语言程序设计方法 68
4.1.1 程序设计步骤 68
4.1.2 程序设计的基本方法 68
4.2.1 简单程序设计 69
4.2 简单和分支程序设计 69
4.2.2 分支程序设计 70
4.2.3 散转程序设计 73
4.3 循环和查表程序设计 74
4.3.1 循环程序设计 74
4.3.2 查表程序设计 78
4.4 子程序和运算程序设计 80
4.4.1 子程序设计 80
4.4.2 运算程序设计 83
4.4.3 代码转换程序 92
习题 95
5.1.1 MCS-51内部并行I/O口 96
第5章 MCS-51单片机的硬件资源及应用 96
5.1 MCS-51单片机的并行I/O口及其应用 96
5.1.2 MCS-51内部并行I/O口的应用 99
5.2 MCS-51中断系统 101
5.2.1 中断概述 101
5.2.2 MCS-51中断系统与控制 102
5.2.3 中断响应 105
5.2.4 中断请求的撤除 106
5.2.5 中断系统的初始化 108
5.2.6 MCS-51单片机的单步工作方式 108
5.2.7 外部中断源的扩展 109
5.3.1 定时方法概述 111
5.3 MCS-51单片机的定时器/计数器 111
5.3.2 定时器/计数器的定时和计数功能 112
5.3.3 定时器/计数器的控制寄存器 112
5.3.4 定时器/计数器的工作方式 113
5.4 MCS-51单片机的串行接口及其串行通信 119
5.4.1 串行通信基础 119
5.4.2 MCS-51单片机的串行口及其控制寄存器 123
5.4.3 MCS-51单片机串行通信工作方式 125
习题 139
6.1.1 总线并行扩展方法 141
6.1 MCS-51单片机总线并行扩展 141
第6章 MCS-51系列单片机的基本扩展技术 141
6.1.2 地址译码方法 143
6.1.3 总线驱动能力及扩展方法 145
6.2 MCS-51存储器的扩展 146
6.2.1 程序存储器的扩展 146
6.2.2 数据存储器的扩展 148
6.2.3 存储器综合扩展 149
6.3 MCS-51输入输出并行接口的扩展 149
6.3.1 采用8255A扩展并行I/O接口 150
6.3.2 采用8155扩展并行I/O接口 158
6.3.3 采用锁存器扩展并行I/O接口 162
6.3.4 用MCS-51的串行口扩展并行I/O接口 165
6.4 D/A转换器接口的扩展 167
6.4.1 梯形电阻式D/A转换器原理 167
6.4.2 D/A芯片DAC0832的扩展 168
6.4.3 D/A芯片AD7520的扩展 171
6.5 A/D转换器接口的扩展 172
6.5.1 双积分式A/D转换器原理 173
6.5.2 双积分式A/D MC14433的扩展 174
6.5.3 逐次逼近式A/D转换器原理 177
6.5.4 逐次逼近式A/D ADC0809的扩展 177
6.6.1 LED显示器及接口 180
6.6 显示及键盘接口 180
6.6.2 LCD显示器及接口 183
6.6.3 键盘及接口 190
6.7 专用键盘、显示接口芯片8279的扩展 195
6.8 微型打印机接口 204
习题 213
第7章 MCS-51单片机的C语言简介 214
7.1 MCS-51与C语言 214
7.2 C51数据类型与MCS-51的存储方式 215
7.3 C51数据的存储类型与MCS-51的存储关系 217
7.4 MCS-51特殊功能寄存器(SFR)及其C51定义方法 219
7.6 MCS-51位变量及其C51定义方法 221
7.5 MCS-51并行接口及其C51定义方法 221
7.7 C51构造数据类型 222
7.8 C51中断服务函数的定义方法 224
7.9 MCS-51汇编语言与C51的混合编程 225
7.10 C51编程实例 227
7.10.1 MCS-51中断应用C51编程实例 227
7.10.2 MCS-51定时器/计数器应用C51编程实例 229
7.10.3 MCS-51扩展并行口C51编程实例 230
7.10.4 MCS-51扩展串行口C51编程实例 231
7.10.5 MCS-51串行通信C51编程实例 233
7.10.6 MCS-51D/A接口及其驱动C51编程实例 237
习题 238
第8章 单片机应用系统的设计及应用举例 240
8.1 单片机应用条件 240
8.1.1 单片机可应用场合的确定 240
8.1.2 单片机应用层次的确定 240
8.1.3 单片机应用地位的确定 240
8.2 单片机应用系统设计要领 241
8.2.1 对象特性分析要领 241
8.2.2 硬件体系设计要领 241
8.3 应用系统的设计过程 242
8.3.1 应用系统的总体设计 242
8.2.4 软件设计及其优化要领 242
8.2.3 算法设计及其优化要领 242
8.3.2 应用系统的硬件设计 244
8.3.3 应用系统的软件设计 244
8.3.4 应用系统的可靠性设计 248
8.4 单片机应用系统调试 253
8.4.1 单片机应用系统调试工具 254
8.4.2 单片机应用系统的一般调试方法 255
8.5 单片机应用系统设计与调试实例 258
习题 262
9.1.1 AT89系列单片机 264
第9章 MCS-51兼容单片机简介 264
9.1 Atmel公司AT89、AT90和AT91系列单片机简介 264
9.1.2 AT90系列和AT91系列单片机 267
9.2 AT89C5X/LV5X单片机原理 267
9.2.1 AT89C5X/LV5X单片机内部资源及引脚排列 267
9.2.2 AT89C5X/LV5X的FLASH编程 268
9.3 AT89CX051单片机原理 273
9.3.1 AT89CX051单片机内部资源及其与AT89C51的比较 273
9.3.2 AT89C2051单片机的FLASH编程 274
9.4 Philps公司MCS-51兼容单片机简介 277
9.4.1 Philips公司单片机的分类 277
9.4.2 Philips公司单片机硬件特点简介 278
9.5 Dalls-Maxim公司MCS-51兼容单片机简介 279
9.5.1 Dallas公司的8位高速单片机 280
9.5.2 Dallas公司的安全单片机 282
附录A MCS-51指令表 283
附录B MCS-51指令助记符注释表 287
附录C 常用的缩写符号 289
附录D ASCII表 290
附录E C51的库函数 292
附录F 常用集成电路引脚图 295
参考文献 298