第1章 单片机基础知识 1
1.1 单片机概述 1
1.1.1 单片机的组成 1
1.1.2 单片机的特点 2
1.1.3 单片机系统 2
1.1.4 单片机程序设计语言 3
1.2 单片机的历史和发展 4
1.2.1 单片机的发展历史 4
1.2.2 单片机的发展趋势 4
1.3 典型单片机简介 5
1.3.1 MCS-51系列单片机 5
1.3.2 AT89系列单片机 6
1.3.3 PIC系列单片机 7
1.3.4 MSP430系列单片机 8
1.4 单片机的应用 8
1.4.1 单片机的应用特点 9
1.4.2 单片机的应用领域 9
思考与练习 10
第2章 单片机基本结构和工作原理 11
2.1 单片机的组成和内部结构 11
2.1.1 单片机的组成 11
2.1.2 单片机的内部逻辑结构 12
2.1.3 CPU的内部结构 13
2.1.4 单片机的其他结构模块 14
2.2 单片机的外部引脚及功能 14
2.2.1 I/O引脚 15
2.2.2 控制引脚 15
2.2.3 电源与晶振引脚 16
2.3 单片机的存储器结构 16
2.3.1 程序存储器 16
2.3.2 数据存储器 18
2.3.3 特殊功能寄存器 20
2.4 单片机的I/O电路 23
2.4.1 P0口 23
2.4.2 P1口 24
2.4.3 P2口 25
2.4.4 P3口 26
2.5 单片机的辅助电路 27
2.5.1 时钟电路 27
2.5.2 复位电路和复位状态 28
2.5.3 单片机最小系统 30
2.6 单片机的工作时序和工作方式 31
2.6.1 时序的基本概念 31
2.6.2 单片机的工作时序 31
2.6.3 单片机的工作方式 33
思考与练习 34
第3章 单片机指令系统 35
3.1 指令系统概述 35
3.1.1 指令的表达形式 35
3.1.2 指令中的常用符号 37
3.2 单片机的寻址方式 38
3.2.1 立即寻址 38
3.2.2 直接寻址 39
3.2.3 寄存器寻址 40
3.2.4 寄存器间接寻址 41
3.2.5 变址寻址 41
3.2.6 相对寻址 42
3.2.7 位寻址 43
3.3 单片机的指令系统 44
3.3.1 数据传送类指令 45
3.3.2 算术运算类指令 52
3.3.3 逻辑运算类指令 57
3.3.4 控制转移类指令 61
3.3.5 位操作类指令 68
思考与练习 71
第4章 单片机汇编语言程序设计 74
4.1 汇编语言程序的设计基础 74
4.1.1 汇编语言的语句格式 74
4.1.2 伪指令 74
4.1.3 汇编语言程序的结构 76
4.1.4 汇编语言程序的编辑与汇编 78
4.1.5 汇编语言程序的设计方法 78
4.2 汇编语言程序的基本结构形式 79
4.2.1 顺序程序 80
4.2.2 分支程序 81
4.2.3 循环程序 86
4.2.4 子程序 89
4.3 常用程序设计举例 91
4.3.1 数制转换子程序 91
4.3.2 延时子程序 94
4.3.3 均值滤波子程序 94
4.3.4 数据极值查找子程序 96
4.3.5 算术运算子程序 98
思考与练习 100
第5章 单片机中断和定时器/计数器 102
5.1 单片机的中断系统 102
5.1.1 中断系统的基本概念和基本结构 102
5.1.2 中断系统的控制与实现 104
5.1.3 中断系统的处理过程 109
5.1.4 中断系统的应用 114
5.2 单片机的定时器/计数器 120
5.2.1 定时器/计数器的基本结构和工作原理 120
5.2.2 定时器/计数器的控制与状态 121
5.2.3 定时器/计数器的工作方式 123
5.2.4 定时器/计数器的初值计算和初始化 126
5.2.5 定时器/计数器的应用 126
思考与练习 137
第6章 单片机串行通信接口 138
6.1 串行通信的基本概念 138
6.1.1 串行通信的分类 138
6.1.2 串行通信的数据传输方式 140
6.2 串行口的内部结构和工作原理 141
6.2.1 串行口的内部结构 141
6.2.2 串行口的工作原理 142
6.2.3 串行口的控制与状态 142
6.2.4 串行口的工作方式 144
6.3 串行通信的应用 145
6.3.1 串行口波特率的确定和初始化 145
6.3.2 串行口用于扩展并行I/O口 148
6.3.3 双机通信 149
6.3.4 多机通信 155
6.3.5 单片机与PC之间的通信 158
思考与练习 164
第7章 单片机并行扩展技术 165
7.1 单片机的最小系统 165
7.1.1 80C51/89C51最小应用系统 165
7.1.2 8031最小应用系统 165
7.2 总线扩展及编址方法 166
7.2.1 单片机的外总线结构 166
7.2.2 单片机的扩展能力 167
7.2.3 地址译码方法 167
7.3 存储器的扩展 170
7.3.1 EPROM程序存储器的扩展 170
7.3.2 E2PROM程序存储器的扩展 172
7.3.3 数据存储器及其扩展 173
7.4 并行I/O口的应用 176
7.4.1 I/O口的简单扩展 177
7.4.2 LED数码管显示接口 178
7.4.3 键盘接口 184
7.5 A/D、D/A转换器及应用 192
7.5.1 A/D转换器 192
7.5.2 D/A转换器 199
思考与练习 204
第8章 单片机串行扩展技术 206
8.1 串行总线概述 206
8.2 I2C总线接口及其扩展 206
8.2.1 I2C总线的基础知识 206
8.2.2 I2C总线的数据传输时序 207
8.2.3 I2C总线的时序模拟 209
8.2.4 串行程序存储器AT24C04 210
8.3 SPI总线接口及其扩展 216
8.3.1 SPI总线的基础知识 216
8.3.2 SPI总线的数据传输时序 217
8.3.3 E2PROM芯片X25045 218
8.3.4 A/D转换器芯片TLC549 223
思考与练习 225
第9章 单片机开发入门知识 226
9.1 单片机应用系统开发技术 226
9.1.1 单片机应用系统的开发过程 226
9.1.2 单片机开发调试工具 228
9.2 Keil集成开发平台 232
9.2.1 应用程序的创建 232
9.2.2 应用程序的编辑、编译和链接 237
9.2.3 应用程序的仿真和调试 238
9.2.4 应用程序调试的常用窗口 241
9.2.5 调试实例 243
9.3 实际应用案例 245
9.3.1 汽车驾驶操纵信号灯控制系统 245
9.3.2 高精度模拟信号的采集和显示 249
思考与练习 255
附录A ASCII表 256
附录B MCS-51指令表 260
参考文献 264