第1章 单片机的基本知识 1
1.1 单片机的基本概念 1
1.2 单片机的发展历史 2
1.3 单片机的特点及应用 3
1.3.1 单片机的特点 3
1.3.2 MCS—51系列单片机的特点 3
1.3.3 单片机的应用 4
1.4 常用单片机系列介绍 4
习题1 5
第2章 MCS—51系列单片机的组成结构 6
2.1 89系列单片机概述 6
2.1.1 89系列单片机的特点 6
2.1.2 89系列单片机的结构简介 6
2.1.3 不同档次的89系列单片机 7
2.2 AT89C52单片机的结构框图 9
2.2.1 AT89C52单片机的基本结构框图 9
2.2.2 AT89C52单片机的内部结构框图 10
2.2.3 AT89C52单片机的封装、引脚及其片外总线结构 11
2.3 AT89C52单片机存储器的组织形式 13
2.3.1 程序存储器 14
2.3.2 数据存储器 15
2.3.3 地址分配及寻址区 18
2.3.4 特殊功能寄存器SFR 21
2.4 AT89C52单片机的复位和省电方式 23
2.4.1 复位 23
2.4.2 省电方式 25
习题2 26
第3章 MCS—51系列单片机的指令系统 27
3.1 基本概念 27
3.1.1 有关指令的几个概念 27
3.1.2 MCS—51汇编指令格式 27
3.1.3 指令中的常用符号 28
3.2 寻址方式 28
3.3 指令系统的分类 30
3.3.1 数据传送类指令 30
3.3.2 算术运算类指令 34
3.3.3 逻辑运算类指令 36
3.3.4 控制转移类指令 37
3.3.5 布尔变量操作类指令 42
3.4 MCS—51汇编语言伪指令 46
3.5 程序设计方法 48
3.5.1 顺序程序设计 49
3.5.2 分支程序设计 49
3.5.3 循环程序设计 52
3.5.4 查表程序设计 53
3.5.5 子程序设计 55
习题3 57
第4章 MCS—51单片机的I/O应用 59
4.1 I/O端口的输入/输出特性 59
4.1.1 P1口 59
4.1.2 P3口 61
4.1.3 P0口 62
4.1.4 P2口 64
4.2 I/O端口的应用 65
4.2.1 I/O端口简单控制程序 65
4.2.2 显示器件与单片机的接口 67
4.2.3 键盘与单片机的接口 71
4.3 简单I/O口的扩展 77
习题4 81
第5章 MCS—51单片机的系统资源扩展 82
5.1 认识系统总线 82
5.1.1 总线的概念 82
5.1.2 地址总线(AB) 83
5.1.3 数据总线(DB) 84
5.1.4 控制总线(CB) 84
5.2 AT89C52最小应用系统 84
5.3 MCS—51单片机的系统扩展能力 85
5.4 程序存储器的扩展 85
5.4.1 外部程序存储器简介 86
5.4.2 典型的外部程序存储器的连接 86
5.5 外部数据存储器的扩展 89
5.5.1 典型的外部数据存储器的连接 90
5.5.2 兼有片外ROM和片外RAM的扩展电路 92
5.6 I/O口扩展 93
5.6.1 单片机I/O口扩展性能 93
5.6.2 I/O口扩展用芯片及方法 94
5.6.3 8255可编程并行I/O口扩展 94
5.6.4 8155可编程并行I/O口扩展 99
习题5 103
第6章 MCS—51的定时/计数器应用 104
6.1 基本概念 104
6.1.1 计数与定时 104
6.1.2 单片机的定时/计数器介绍 104
6.2 AT89C52的定时/计数器概述 105
6.2.1 定时/计数器的结构 105
6.2.2 定时/计数器的工作模式 106
6.3 定时/计数器的特殊功能控制寄存器 106
6.3.1 定时/计数器(T0、T1)的方式控制寄存器 106
6.3.2 定时/计数器(T0、T1)的控制寄存器 107
6.3.3 定时/计数器T2的特殊功能寄存器 107
6.3.4 定时/计数器T2的控制寄存器 108
6.4 定时/计数器的各种工作模式及应用 108
6.4.1 定时/计数器T0和T1 108
6.4.2 门控位GATE的应用 118
6.4.3 定时/计数器T2 118
习题6 127
第7章 MCS—51单片机的中断系统 129
7.1 中断的概念 129
7.1.1 中断 129
7.1.2 MCS—51单片机的中断源 129
7.1.3 中断嵌套与优先级 130
7.2 采用中断控制技术的作用 131
7.2.1 速度匹配 131
7.2.2 故障处理 131
7.2.3 实时处理 131
7.3 MCS—51中断系统结构原理 131
7.4 中断控制 132
7.4.1 中断请求标志寄存器 132
7.4.2 中断允许控制寄存器 133
7.4.3 中断优先级控制寄存器 134
7.5 中断处理 136
7.5.1 响应中断的条件 136
7.5.2 中断响应所需的时间 136
7.5.3 MCS—51中断请求标志位的清除方式 136
7.5.4 中断处理的过程 137
7.5.5 中断矢量 138
7.6 中断服务程序与子程序 140
7.7 外部中断的编程应用 141
7.7.1 外部中断0的编程及应用 141
7.7.2 外部中断1的编程及应用 142
7.8 外部中断源的扩展 144
7.8.1 利用查询加中断的方式进行扩展 144
7.8.2 利用AT89C52的三个定时/计数器进行扩展 146
习题7 146
第8章 串行接口与应用 147
8.1 串行通信的基本知识 148
8.2 MCS—51单片机串行口的结构与工作方式 150
8.2.1 串行口的结构 150
8.2.2 串行口控制寄存器SCON和电源控制寄存器PCON 150
8.2.3 波特率设计 151
8.3 串行口通信应用 152
8.3.1 同步移位方式(方式0) 152
8.3.2 10位异步方式(方式1) 154
8.3.3 11位异步方式(方式2和方式3) 160
习题8 169
第9章 I2C总线ADC和DAC的应用 170
9.1 I2C总线简介及应用 170
9.1.1 I2C总线简介 170
9.1.2 I2C总线的时序 172
9.1.3 AT24C系列串行E2PROM 174
9.2 D/A转换器件及应用 177
9.2.1 D/A转换器简介 177
9.2.2 串行电压输出型D/A转换器 178
9.2.3 10位并行D/A转换器 179
9.2.4 8位D/A转换器 180
9.3 A/D转换器件及应用 182
9.3.1 A/D转换器简介 182
9.3.2 ADC0804的性能特点 184
9.3.3 V/F转换型A/D电路的应用 186
9.3.4 串行A/D器件TLC0831简介及应用 187
习题9 188
第10章 单片机应用系统设计 190
10.1 单片机应用系统的构成 190
10.2 单片机应用系统的设计原则 191
10.2.1 硬件设计 193
10.2.2 软件设计 194
10.2.3 硬件电路和印刷电路板的设计原则 196
10.2.4 单片机应用系统抗干扰措施 197
10.3 8回路电压巡控仪的设计实例 199
10.4 数控直流稳压电源 205
习题10 208
第11章 MCS—51程序开发工具KEIL 210
11.1 DOS环境下MCS—51汇编语言程序开发 210
11.1.1 汇编环境 210
11.1.2 汇编过程 210
11.2 Windows下的MCS—51汇编设计 211
11.2.1 KEIL51开发平台的安装 211
11.2.2 KEIL51开发平台的使用 212
11.3 KEIL中的MCS—51汇编语法 213
11.3.1 一个程序模块的框架 213
11.3.2 KEIL汇编中关于段名的定义 214
11.4 KEIL C51程序开发 215
11.4.1 建立工程 215
11.4.2 从C程序中产生汇编程序 216
11.4.3 在C程序中嵌入汇编程序 216
11.4.4 C程序产生的汇编源程序说明 217
11.4.5 C程序的中断服务程序 218
11.5 C51编程中的一些说明 218
11.5.1 函数重入 218
11.5.2 多模块编程时头文件的定义 219
11.5.3 静态变量的用法 219
11.5.4 C51中扩展的变量类型 220
11.6 目标系统配置 220
11.7 MON51监控程序调试方案 221
11.7.1 MON51的硬件要求 221
11.7.2 MON51代码的产生 222
11.7.3 对工程的修改和配置 222
11.7.4 对工程进行调试 222
11.8 ISD51内置系统调试器方案 223
11.8.1 ISD51的硬件要求 223
11.8.2 ISD51与用户程序集成 223
11.8.3 ISD51提供的调试接口子程序 223
11.8.4 配置μVision2 224
习题11 224
单片机模拟试题(一) 225
单片机模拟试题(二) 228
单片机模拟试题(三) 229
附录 MCS—51系列单片机指令速查表 233
附录一 数据传送类指令 233
附录二 算术运算类指令 234
附录三 逻辑运算类指令 234
附录四 控制转移类指令 235
附录五 布尔变量操作类指令 236