第一章 概述 1
1.1 计算机的发展 1
1.2 单片机的发展 2
1.2.1 单片机的发展历史 2
1.2.2 单片机的发展趋势 3
1.3 单片机的特点及应用 4
1.3.1 单片机的组成及特点 4
1.3.2 单片机的分类 5
1.3.3 单片机的应用 6
第二章 计算机基础知识 7
2.1 数制与编码 7
2.1.1 数制 7
2.1.2 计算机中的编码 9
2.2 计算机的基本组成电路 11
2.2.1 常用逻辑电路 11
2.2.2 触发器 13
2.2.3 寄存器 14
2.2.4 常用数据锁存器/缓冲器/驱动器 15
2.3 存储器 19
2.3.1 名词介绍 19
2.3.2 存储器的分类 21
2.3.3 存储器的寻址原理 22
思考与练习 23
第三章 单片机的结构及原理 25
3.1 80C51单片机的结构 25
3.1.1 80C51单片机的组成及结构 25
3.1.2 80C51单片机的引脚定义及功能 27
3.2 单片机的工作原理 29
3.2.1 指令与程序概述 29
3.2.2 CPU的工作原理 29
3.2.3 单片机执行程序的过程 30
3.3 80C51的存储器 32
3.3.1 程序存储器 32
3.3.2 数据存储器 33
3.3.3 专用寄存器SFR 34
3.4 输入/输出端口结构 38
3.4.1 P0口 39
3.3.2 P1口 40
3.3.3 P2口 40
3.3.4 P3口 41
3.3.5 端口负载能力和接口要求 41
3.5 CPU时序及时钟电路 42
3.5.1 CPU时序及有关概念 42
3.5.2 80C51的指令时序 43
3.5.3 振荡器和时钟电路 44
3.6 复位电路 45
3.6.1 复位信号的产生 45
3.6.2 复位状态 46
3.6.3 外部复位电路设计 46
3.7 80C51低功耗方式 47
3.7.1 电源控制寄存器PCON 47
3.7.2 待机方式 48
3.7.3 掉电方式 48
思考与练习 49
第四章 80C51的指令系统 50
4.1 指令系统简介 50
4.2 寻址方式 51
4.2.1 符号注释 51
4.2.2 寻址方式 52
4.3 数据传送类指令 57
4.3.1 内部PAM数据传送指令 57
4.3.2 外部数据传送指令 59
4.3.3 查表指令 59
4.3.4 堆栈操作指令 60
4.3.5 交换指令 61
4.3.6 传送指令举行 62
4.4 算术运算类指令 62
4.4.1 加法指令 63
4.4.2 带进位加法指令 64
4.4.3 带借位减法指令 64
4.4.4 乘法指令 65
4.4.5 除法指令 65
4.4.6 加1指令 65
4.4.7 减1指令 66
4.4.8 十进制调整指令 66
4.4.9 算术运算指令举例 67
4.5 逻辑操作类指令 68
4.5.1 逻辑“与”指令 68
4.5.2 逻辑“或”指令 69
4.5.3 逻辑“异或”指令 69
4.5.4 循环移位指令 70
4.5.5 取反指令 70
4.5.6 清“0”指令 70
4.5.7 逻辑运算指令举例 70
4.6 控制转移类指令 71
4.6.1 无条件转移指令 71
4.6.2 条件转移指令 72
4.6.3 间接转移指令 73
4.6.4 调用子程序及返回指令 73
4.6.5 空操作指令 74
4.6.6 程序控制类指令举例 74
4.7 位操作类指令 75
4.7.1 位数据传送指令 75
4.7.2 位修正指令 76
4.7.3 位逻辑运算指令 76
4.7.4 判位转移指令 76
4.7.5 位操作类指令举例 77
思考与练习 77
第五章 汇编语言程序设计 81
5.1 概述 81
5.1.1 程序设计语言 81
5.1.2 汇编语言的规范 82
5.1.3 汇编语言程序设计步骤 84
5.2 顺序与循环程序设计 85
5.2.1 顺序程序设计 85
5.2.2 循环程序设计 87
5.3 分支程序设计 91
5.3.1 分支程序设计综述 91
5.3.2 无条件/条件转移程序 92
5.3.3 散转程序设计 93
5.4 查表程序设计 96
5.4.1 查表程序综述 96
5.4.2 规则变量的查表程序设计 97
5.4.3 非规则变量的查表程序设计 98
5.5 子程序设计 100
5.5.1 子程序结构与设计注意事项 100
5.5.2 子程序的调用与返回 100
5.5.3 子程序嵌套 101
5.5.4 子程序设计 102
5.6 综合编程举例 104
5.6.1 代码转换类程序 105
5.5.2 运算类程序 106
5.5.3 常用I/O端口程序 111
思考与练习 112
第六章 定时器/计数器 114
6.1 定时器/计数器概述 114
6.1.1 定时器/计数器的结构与原理 114
6.1.2 定时器/计数器方式寄存器TMOD 115
6.1.3 定时器/计数器控制寄存器TCON 116
6.1.4 定时器/计数器的初始化 117
6.2 定时器/计数器的4种工作方式 117
6.2.1 方式0 117
6.2.2 方式1 118
6.2.3 方式2 118
6.2.4 方式3 119
6.3 定时器应用举例 120
6.3.1 方式0、方式1的应用 120
6.3.2 方式2的应用 122
6.3.3 门控位的应用 123
思考与练习 124
第七章 串行接口 126
7.1 串行通信概述 126
7.1.1 同步通信和异步通信方式 126
7.1.2 串行通信的数据传送速率 127
7.1.3 串行通信的制式 127
7.1.4 信号的调制与解调 128
7.1.5 通信协议 128
7.2 80C51串行口简介 128
7.2.1 串行口结构与工作原理 128
7.2.2 80C51的帧格式 129
7.2.3 串行口控制寄存器SCON 130
7.2.4 专用寄存器PCON 131
7.3 波特率的设计 131
7.3.1 方式0和方式2的波特率 131
7.3.2 方式1和方式3的波特率 131
7.4 串行通信工作方式 132
7.4.1 方式0 133
7.4.2 方式1 133
7.4.3 方式2 134
7.4.4 方式3 134
7.4.5 多机通信 134
7.5 串行口应用举例 136
7.5.1 用串行口扩展I/O口 136
7.5.2 用串行口进行异步通信 137
思考与练习 141
第八章 中断系统 142
8.1 概述 142
8.1.1 中断的概念 142
8.1.2 引进中断技术的优点 142
8.1.3 中断源 143
8.1.4 中断系统的功能 143
8.2 80C51的中断系统 144
8.2.1 中断源及中断入口 145
8.2.2 中断请求标志 146
8.2.3 中断允许控制 147
8.2.4 中断优先级设定 147
8.3 中断处理过程 148
8.3.1 中断响应 149
8.3.2 中断处理 149
8.3.3 中断返回 150
8.3.4 中断请求的撤除 150
8.3.5 中断响应时间 151
8.4 扩充外部中断源 152
8.4.1 利用定时器扩充法 152
8.4.2 中断和查询结合法 152
8.5 中断系统的应用 153
思考与练习 165
第九章 单片机系统扩展 167
9.1 存储器的扩展 167
9.1.1 存储器寻址 167
9.1.2 程序存储器扩展概述 169
9.1.3 程序存储器的扩展 169
9.1.4 数据存储器的扩展 171
9.1.5 程序存储空间和数据存储空间的混合 173
9.2 并行I/O接口的扩展 173
9.2.1 简单的I/O扩展 174
9.2.2 可编程接口电路的扩展 175
9.3 串行总线接口扩展 185
9.3.1 I2C总线 185
9.3.2 SPI串行总线 187
思考与练习 189
第十章 接口技术 190
10.1 键盘接口 190
10.1.1 键盘工作原理 190
10.1.2 独立式按键 191
10.1.3 行列式键盘 193
10.2 显示器接口 197
10.2.1 LED显示器的结构与原理 197
10.2.2 静态显示接口 198
10.2.3 LED动态显示接口 200
10.3 单片机应用系统中的键盘、显示接口电路 202
10.3.1 并行口扩展的键盘、显示接口电路 202
10.3.2 串行口扩展的键盘、显示接口电路 202
10.4 数/模转换接口 206
10.4.1 DAC电路原理 206
10.4.2 D/A转换器的主要技术指标 207
10.4.3 典型D/A转换器及接口 208
10.5 模/数转换接口 212
10.5.1 模/数转换的主要技术指标 213
10.5.2 逐次逼近式A/D转换器 214
思考与练习 217
第十一章 单片机应用系统的设计与开发 219
11.1 应用系统研制过程 219
11.1.1 总体设计 219
11.1.2 硬件设计 220
11.1.3 软件设计 222
11.2 开发工具和开发方法 223
11.2.1 单片机开发系统的功能 224
11.2.2 单片机应用系统的调试 226
11.3 应用系统实例 228
思考与练习 240
附录 241
附录一 80C51指令表 241
附录二 二进制逻辑单元图形符号对照表 246