第1章 绪论 1
1.1 单片机的概念 1
1.1.1 微处理器的组成 1
1.1.2 存储器和I/O接口 4
1.2 MCS-51系列单片机及其他类型单片机 4
1.2.1 MCS-51系列单片机 5
1.2.2 AT89C5 1、AT89S51单片机 6
1.2.3 其他类型单片机 7
1.3 计算机基础知识 10
1.3.1 数制 10
1.3.2 计算机中常用的编码 11
1.3.3 计算机中有符号数的表示方法 13
习题 14
第2章 89C51的结构和原理 15
2.1 89C51单片机的结构 15
2.1.1 89C51单片机的基本组成 15
2.1.2 89C51单片机的内部结构 16
2.2 89C51单片机引脚及功能 18
2.3 89C51单片机存储器配置 21
2.3.1 程序存储器地址空间 21
2.3.2 数据存储器(片内、片外)空间 23
2.4 时钟电路与CPU时序 26
2.4.1 片内时钟信号的产生 27
2.4.2 CPU取指、执指时序 28
2.5 输入输出端口结构 29
2.5.1 P0口 29
2.5.2 P1口 31
2.5.3 P2口 31
2.5.4 P3口 33
2.5.5 端口负载能力和接口要求 33
2.6 复位及复位电路 34
2.6.1 复位操作 34
2.6.2 复位信号及其产生 34
2.6.3 复位电路 35
2.7 89C51单片机的低功耗工作方式 36
2.7.1 方式的设定 36
2.7.2 空闲(等待、待机)工作方式 37
2.7.3 掉电(停机)工作方式 37
习题 38
第3章 89C51的指令系统 39
3.1 指令系统概述 39
3.1.1 指令和程序设计语言 39
3.1.2 89C51指令格式 39
3.1.3 89C51单片机指令系统分类 40
3.2 寻址方式 41
3.2.1 立即数寻址 41
3.2.2 寄存器寻址 41
3.2.3 寄存器间接寻址 41
3.2.4 直接寻址 42
3.2.5 基址加变址寻址 42
3.2.6 相对寻址 42
3.2.7 位寻址 43
3.2.8 寻址方式与寻址空间 43
3.2.9 指令中常用的符号 43
3.3 89C51的指令系统 44
3.3.1 数据传送指令 44
3.3.2 算术运算指令 48
3.3.3 逻辑运算指令 52
3.3.4 控制转移指令 54
3.3.5 位操作指令 60
习题 61
第4章 汇编语言程序设计 64
4.1 编程的步骤、方法和技巧 64
4.1.1 汇编语言源程序的设计步骤 64
4.1.2 汇编语言的语句格式 65
4.1.3 伪指令 66
4.1.4 编程的方法和技巧 69
4.2 汇编语言程序的基本结构 70
4.2.1 顺序结构 70
4.2.2 分支结构 71
4.2.3 循环程序设计 73
4.2.4 子程序 76
4.3 汇编语言源程序的编辑和汇编 78
4.3.1 源程序的编辑和汇编 79
4.3.2 KeilμVision2的使用 80
习题 83
第5章 中断系统 84
5.1 中断的概念 84
5.1.1 中断系统概述 84
5.1.2 单片机中断系统需要解决的问题 86
5.1.3 中断的主要功能 86
5.2 89C51的中断系统结构及中断控制 87
5.2.1 89C51中断源 87
5.2.2 中断控制 88
5.3 中断处理过程 92
5.3.1 中断响应 92
5.3.2 中断处理 95
5.3.3 中断返回 96
5.3.4 中断请求的撤销 96
5.3.5 中断服务程序的组成 98
5.4 外部中断扩展方法 99
5.4.1 利用定时器扩展外部中断源 99
5.4.2 中断加查询扩展外部中断源 100
5.5 中断程序举例 101
5.5.1 主程序 101
5.5.2 中断服务程序 101
习题 103
第6章 定时器/计数器 105
6.1 定时器概述 105
6.2 定时器的控制 106
6.2.1 工作方式控制寄存器TMOD 106
6.2.2 控制寄存器TCON 107
6.3 定时器的四种模式及应用 108
6.3.1 四种工作模式 108
6.3.2 定时器/计数器编程 111
6.3.3 应用举例 115
6.4 单片机定时误差的校正 121
6.4.1 定时误差产生的原因 121
6.4.2 定时误差的校正 121
习题 122
第7章 89C51串行口及串行通信 124
7.1 串行通信的基本知识 124
7.1.1 串行通信的分类 124
7.1.2 串行通信的制式 127
7.2 89C51串行口及应用 128
7.2.1 串行口的结构 128
7.2.2 串行通信过程 129
7.2.3 串行口工作方式及帧格式 129
7.2.4 串行口控制 130
7.2.5 工作方式与波特率设置 131
7.2.6 串行口各工作方式的应用 133
7.3 RS-232C及串行通信硬件设计 138
7.4 89C51单片机的点对点通信 140
7.4.1 查询方式进行双机通信 141
7.4.2 中断方式进行双机通信 142
7.5 89C51与PC间的通信 144
7.5.1 PC通信软件设计 145
7.5.2 89C51通信软件设计 152
习题 156
第8章 单片机系统扩展 157
8.1 单片机系统并行扩展及结构 157
8.1.1 单片机的并行扩展结构 157
8.1.2 单片机系统并行扩展的实现 158
8.2 程序存储器扩展 159
8.2.1 常用的程序存储器芯片 160
8.2.2 程序存储器扩展 162
8.3 数据存储器扩展 164
8.3.1 常用的数据存储器芯片 165
8.3.2 数据存储器扩展 166
8.4 I/O端口的扩展 170
8.4.1 简单的I/O 口扩展 170
8.4.2 可编程I/O接口电路的扩展 171
8.5 单片机系统的串行扩展及结构 177
8.5.1 SPI串行外设接口总线 178
8.5.2 I2C总线接口 183
8.5.3 单总线 183
习题 187
第9章 应用系统配置及接口技术 188
9.1 键盘接口 188
9.1.1 键盘接口需解决的问题 188
9.1.2 独立式按键 189
9.1.3 行列式按键 190
9.2 LED显示器接口 194
9.2.1 LED显示器结构与工作原理 194
9.2.2 LED静态显示方式 195
9.2.3 LED动态显示方式 197
9.3 键盘/显示器组合接口电路 198
9.3.1 并行口控制的键盘/显示器组合接口电路 198
9.3.2 串口扩展键盘/显示器接口电路 200
9.3.3 专用可编程键盘/显示器接口芯片8279 205
9.4 A/D转换器及其接口技术 210
9.4.1 模数(A/D)转换器的概念 210
9.4.2 A/D转换芯片ADC 0809 212
9.4.3 A/D转换芯片MC14433 214
9.4.4 单通道串行输出A/D芯片MAX187及接口 218
9.5 D/A转换器及其接口技术 220
9.5.1 数模(D/A)转换器的概念 220
9.5.2 D/A转换芯片DAC 0832 220
9.5.3 单通道串行D/A芯片MAX515 223
习题 224
第10章 89C51的C程序设计 226
10.1 89C51的C编程概述 226
10.1.1 C语言在单片机系统开发中的特点 226
10.1.2 C语言在单片机中的开发环境 227
10.1.3 C语言程序开发的具体步骤 227
10.2 C语言的运算符、表达式及语法规则 230
10.2.1 运算符分类与优先级 230
10.2.2 各种运算符与表达式 231
10.2.3 C51的语法规则 232
10.3 89C51程序设计 233
10.3.1 单片机上C语言编程的优化 233
10.3.2 89C5 1的C编程举例 237
习题 241
第11章 89C51应用系统设计 242
11.1 单片机应用系统设计方法 242
11.1.1 系统设计的基本要求 242
11.1.2 总体方案设计 243
11.1.3 硬件设计 244
11.1.4 软件设计 244
11.1.5 应用系统调试 246
11.2 单片机应用系统可靠性设计 247
11.2.1 硬件可靠性设计 248
11.2.2 软件可靠性设计 249
11.2.3 系统抗干扰技术 249
11.2.4 系统自诊断技术 255
11.3 单片机实际应用系统设计 257
参考文献 265