第1章 单片机的基础知识 1
1.1 单片机的工作原理及工作过程 1
1.1.1 微型计算机的组成 1
1.1.2 微型计算机软件 5
1.1.3 单片机的工作原理及工作过程 8
1.2 单片机中的数制及码制 12
1.2.1 单片机中的数制 12
1.2.2 数制的转换方法 13
1.2.3 二进制运算 15
1.2.4 原码、补码及补码运算 17
1.2.5 BCD(Binary-Coded Decimal)码 21
1.2.6 ASCII(American National Standard Code for Information Interchange)码 22
1.3 单片机的发展简史 24
1.4 单片机的应用 24
1.4.1 单片机的特点 25
1.4.2 单片机的应用 26
思考与练习 27
第2章 MCS-51系列单片机的结构 29
2.1 MCS-51系列单片机的结构 29
2.1.1 MCS-51单片机的结构 29
2.1.2 MCS-51系列单片机引脚功能 32
2.1.3 MCS-51系列单片机制造工艺和发展趋势 34
2.2 单片机工作原理 34
2.2.1 CPU的工作原理 34
2.2.2 单片机执行程序的过程 36
2.2.3 单片机工作时序 37
2.3 MCS-51系列单片机存储器 39
2.3.1 程序存储器 40
2.3.2 数据存储器 41
2.4 MCS-51系列单片机I/O端口 45
2.4.1 P0口 46
2.4.2 P1口 47
2.4.3 P2口 47
2.4.4 P3口 47
2.5 MCS-51系列单片机的工作方式 48
2.5.1 复位方式 49
2.5.2 程序执行方式 49
2.5.3 低功耗工作方式 50
思考与练习 51
第3章 MCS-51系列单片机的指令系统 52
3.1 寻址方式 52
3.1.1 寄存器寻址 52
3.1.2 立即寻址 52
3.1.3 直接寻址 53
3.1.4 寄存器间接寻址 53
3.1.5 相对寻址 54
3.1.6 变址寻址 54
3.1.7 位寻址 55
3.2 指令系统 56
3.2.1 指令格式 56
3.2.2 指令的三种表达形式 56
3.2.3 指令的字节数 57
3.2.4 指令的分类及符号说明 58
3.2.5 数据传送指令 60
3.2.6 算逻运算和移位指令 65
3.2.7 控制转移和位操作指令 74
3.2.8 伪指令 83
思考与练习 85
第4章 MCS-51系列单片机的程序设计 87
4.1 交叉汇编语言MASM51 87
4.1.1 程序的编辑与汇编 87
4.1.2 交叉汇编及交叉汇编语言MASM51 87
4.2 程序设计方法及技巧 89
4.2.1 顺序程序设计 89
4.2.2 分支程序设计 89
4.2.3 循环程序设计 91
4.2.4 查表程序设计 93
4.2.5 子程序设计 95
思考与练习 119
第5章 MCS-51单片机的功能部件 120
5.1 中断系统 120
5.1.1 中断的概念 120
5.1.2 MCS-51单片机的中断系统 120
5.1.3 中断源 121
5.1.4 中断优先级 122
5.1.5 中断屏蔽和中断响应的条件、过程 122
5.1.6 外部中断及中断请求的撤除 123
5.1.7 中断系统应用 124
5.2 定时/计数器 127
5.2.1 定时/计数器的结构及工作原理 127
5.2.2 定时/计数器的方式和控制寄存器 128
5.2.3 定时/计数器的工作方式 129
5.2.4 定时/计数器应用 131
5.3 串行接口 135
5.3.1 串行通信的基本知识 135
5.3.2 MCS-51单片机的串行接口 140
5.3.3 串行通信应用举例 145
思考与练习 149
第6章 MCS-51系列单片机接口技术 151
6.1 外部总线的扩展 151
6.1.1 MCS-51系列单片机外总线结构 151
6.1.2 MCS-51系列单片机总线的驱动 152
6.2 程序存储器的扩展 153
6.2.1 程序存储器的扩展方法及时序 153
6.2.2 地址锁存器 155
6.2.3 EPROM芯片接口 156
6.2.4 E2PROM芯片接口 160
6.3 外部数据存储器的扩展 165
6.3.1 外部数据存储器的扩展方法及时序 165
6.3.2 静态RAM芯片接口 166
6.3.3 兼有EPROM和RAM存储器的接口 169
6.3.4 数据存储器的掉电保护 169
6.4 并行输入输出接口的扩展 171
6.4.1 I/O接口编址方式 172
6.4.2 用TTL芯片扩展I/O接口 172
6.4.3 用可编程芯片扩展并行I/O接口 176
6.5 A/D和D/A接口技术 191
6.5.1 D/A转换器与MCS-51系列单片机接口技术 191
6.5.2 A/D转换器与MCS-51系列单片机接口技术 203
6.5.3 采样保持器及多路开关 217
6.6 I2C总线器件的接口 220
6.6.1 概述 220
6.6.2 I2C总线器件与8031的接口 229
思考与练习 234
第7章 MCS-51应用系统的研制和调试 235
7.1 MCS-51应用系统研制方法 235
7.1.1 确定任务 235
7.1.2 总体设计 235
7.1.3 硬件设计方法 237
7.1.4 软件设计方法 239
7.2 MCS-51应用系统的调试方法 243
7.2.1 常见硬件故障分析 243
7.2.2 硬件调试方法 243
7.2.3 软件调试方法 244
7.3 键盘和显示接口技术 247
7.3.1 键盘接口技术 247
7.3.2 显示接口技术 252
7.4 步进电机的单片机控制 262
7.4.1 步进电机工作原理 262
7.4.2 步进电机驱动电路原理 262
7.4.3 步进电机控制原理及实例 263
7.5 单片机温度控制系统 269
7.5.1 硬件电路 269
7.5.2 温度控制的算法和程序 272
思考与练习 286
第8章 单片机的C语言应用程序设计 287
8.1 C语言与MCS-51 287
8.2 C51数据类型用在MCS-51中的存储方式 288
8.2.1 C51的数据类型 288
8.2.2 C51数据在MCS-51中的存储方式 288
8.3 C51数据的存储类型与MCS-51存储结构 290
8.4 MCS-51特殊功能寄存器(SPR)的C51定义 292
8.5 MCS-51并行接口的C51定义 293
8.6 位变量的C51定义 294
8.7 C51构造数据类型 295
8.7.1 基于存储器的指针 295
8.7.2 一般指针 296
8.8 模块程序开发过程 297
8.8.1 混合编程 297
8.8.2 覆盖和共享 300
8.8.3 库和连接器/定位器 301
8.8.4 程序优化 304
8.9 MCS-51内部资源使用的C语言编程 304
8.9.1 中断应用的C语言编程 304
8.9.2 定时器/计数器(T/C)应用的C语言编程 306
8.9.3 串行口使用的C语言编程 307
8.10 键盘和数码显示人机交互的C语言编程 310
8.10.1 行列式键盘与8031的接口 310
8.10.2 七段数码显示与8031的接口 312
思考与练习 314
第9章 具有MCS-51内核的单片机 316
9.1 ATMEL公司的主要AT89C系列 316
9.1.1 AT89C5X/LV5X FLASH系列 316
9.1.2 AT89CX051 ISP FLASH系列 325
9.1.3 AT90S1200单片机 327
9.2 PHILIPS公司的8XC51系列 327
9.2.1 P87LPC76X(51LPC)系列 328
9.2.2 80C51+内核的通用51系列 333
9.3 WINBOND公司的W77/88系列 334
9.3.1 WINBOND78系列 334
9.3.2 WINBOND77系列 338
附录一 MCS-51系列单片机指令表 341
附录二 电气设计常用网站 345
参考文献 346