第1章 绪论 1
1.1 单片机的概念 1
1.1.1 微处理器的组成 1
1.1.2 存储器和I/O接口 3
1.2 MCS-51系列单片机及其他新型单片机 4
1.2.1 MCS-51系列单片机 4
1.2.2 AT89C51单片机 6
1.2.3 其他新型单片机 6
1.3 计算机基础知识 8
1.3.1 数制 8
1.3.2 计算机中常用的编码 10
1.3.3 计算机中有符号数的表示方法 11
第2章 89C51的结构和原理 14
2.1 89C51单片机的结构 14
2.1.1 89C51单片机的基本组成 14
2.1.2 89C51单片机的内部结构 15
2.2 89C51单片机引脚及功能 17
2.3 89C51单片机存储器配置 19
2.3.1 程序存储器地址空间 20
2.3.2 数据存储器 21
2.4 时钟电路与CPU时序 25
2.4.1 片内时钟信号的产生 25
2.4.2 CPU取指、执指时序 26
2.5 输入输出端口结构 27
2.5.1 P0口 28
2.5.2 P1口 29
2.5.3 P2口 30
2.5.4 P3口 31
2.5.5 端口负载能力和接口要求 31
2.6 复位及复位电路 32
2.6.1 复位操作 32
2.6.2 复位信号及其产生 33
2.6.3 复位电路 33
2.7 89C51单片机的工作方式 34
2.7.1 方式的设定 35
2.7.2 空闲(等待、待机)工作方式 35
2.7.3 掉电(停机)工作方式 36
第3章 89C51的指令系统 37
3.1 指令系统概述 37
3.1.1 指令和程序设计语言 37
3.1.2 89C51指令格式 37
3.1.3 89C51单片机指令系统分类 38
3.2 寻址方式 38
3.2.1 立即数寻址 39
3.2.2 寄存器寻址 39
3.2.3 寄存器间接寻址 39
3.2.4 直接寻址 39
3.2.5 基址加变址寻址 40
3.2.6 相对寻址 40
3.2.7 位寻址 40
3.3 89C51的指令系统 41
3.3.1 数据传送指令 42
3.3.2 算术运算指令 46
3.3.3 逻辑运算指令 49
3.3.4 控制转移指令 51
3.3.5 位操作指令 57
第4章 汇编语言程序设计 59
4.1 编程的步骤、方法和技巧 59
4.1.1 编程语言简介 59
4.1.2 汇编语言源程序的设计步骤 60
4.1.3 汇编语言的语句格式 61
4.1.4 编程的方法和技巧 62
4.2 汇编语言程序的基本结构 63
4.2.1 顺序结构 63
4.2.2 分支结构 64
4.2.3 循环程序设计 66
4.2.4 子程序 68
4.3 汇编语言源程序的编辑和汇编 70
4.3.1 源程序的编辑和汇编 71
4.3.2 伪指令 71
第5章 中断系统 75
5.1 中断的概念 75
5.1.1 中断系统的概念 75
5.1.2 单片机中断系统需要解决的问题 77
5.1.3 中断的主要功能 77
5.2 89C51的中断系统结构及中断控制 78
5.2.1 89C51中断源 78
5.2.2 中断控制 79
5.3 中断处理过程 83
5.3.1 中断响应 84
5.3.2 中断处理 86
5.3.3 中断返回 87
5.3.4 中断请求的撤销 88
5.3.5 中断服务程序的组成 89
5.4 外部中断扩展方法 90
5.4.1 利用定时器扩展外部中断源 90
5.4.2 中断加查询扩展外部中断源 91
5.5 中断程序举例 92
5.5.1 主程序 92
5.5.2 中断服务程序 92
第6章 定时器/计数器 95
6.1 定时器概述 95
6.2 定时器的控制 96
6.2.1 工作方式控制寄存器TMOD 96
6.2.2 控制寄存器TCON 97
6.3 定时器的4种模式及应用 98
6.3.1 4种工作模式 98
6.3.2 定时器/计数器编程 100
6.3.3 应用举例 104
第7章 89C51串行口及串行通信 110
7.1 串行通信的基本知识 110
7.1.1 串行通信的分类 110
7.1.2 串行通信的制式 112
7.2 89C51串行口及应用 113
7.2.1 串行口的结构 113
7.2.2 串行通信过程 114
7.2.3 串行口工作方式及帧格式 114
7.2.4 串行口控制 115
7.2.5 工作方式与波特率设置 116
7.2.6 串行口各工作方式的应用 117
7.3 RS-232C及串行通信硬件设计 122
7.4 89C51单片机的点对点通信 124
7.4.1 查询方式进行双机通信 125
7.4.2 中断方式进行双机通信 126
7.5 89C51与PC间的通信 128
7.5.1 PC通信软件设计 128
7.5.2 89C51通信软件设计 135
第8章 单片机系统扩展 140
8.1 单片机系统扩展及结构 140
8.1.1 单片机的扩展结构 140
8.1.2 单片机系统扩展的实现 141
8.2 程序存储器扩展 142
8.2.1 常用的程序存储器芯片 142
8.2.2 程序存储器扩展 145
8.3 数据存储器扩展 147
8.3.1 常用的静态数据存储芯片 147
8.3.2 数据存储器扩展 149
8.4 I/O端口的扩展 153
8.4.1 简单的I/O接口扩展 153
8.4.2 可编程I/O接口电路的扩展 154
第9章 应用系统配置及接口技术 161
9.1 人-机通道配置与接口技术 161
9.1.1 键盘接口 161
9.1.2 LED显示器接口 166
9.2 键盘/显示器组合接口电路 170
9.2.1 并行口控制的键盘/显示器组合接口电路 170
9.2.2 串口扩展键盘/显示器接口电路 172
9.3 A/D转换器及其接口技术 178
9.3.1 模数(A/D)转换器的概念 179
9.3.2 A/D转换芯片ADC0809 180
9.3.3 A/D转换芯片MC14433 182
9.4 D/A转换器及其接口技术 186
9.4.1 数模(D/A)转换器的概念 186
9.4.2 D/A转换芯片DAC0832 186
第10章 89C51的C程序设计 190
10.1 89C51的C编程概述 190
10.1.1 C语言在单片机系统开发中的特点 190
10.1.2 C语言在单片机中的开发环境 191
10.1.3 C语言程序开发的具体步骤 191
10.2 89C51程序的运算符、表达式及语法规则 194
10.2.1 运算符分类与优先级 194
10.2.2 各种运算符与表达式 194
10.2.3 89C51的语法规则 195
10.3 89C51程序设计 196
10.3.1 单片机上C语言编程的优化 196
10.3.2 89C51的C编程举例 200
第11章 89C51应用系统设计 204
11.1 单片机应用系统设计方法 204
11.1.1 系统设计的基本要求 205
11.1.2 总体方案设计 205
11.1.3 硬件设计 205
11.1.4 软件设计 206
11.1.5 应用系统调试 208
11.2 单片机应用系统可靠性设计 208
11.2.1 硬件可靠性设计 209
11.2.2 软件可靠性设计 214
11.2.3 系统自诊断技术 216
11.3 单片机实际应用系统设计 217
参考文献 225