前言 1
第1章 单片计算机概述 1
1.1 单片机的特点 1
1.2 单片机的主要品质系列 2
1.3 单片机的硬件特性 4
1.4 单片机的应用 4
1.5 单片机的发展趋势 5
习题 5
第2章 MCS-51单片机的硬件结构 6
2.1 MCS-51的内部结构 6
2.2 MCS-51的主要性能特点 8
2.3 MCS-51引脚功能描述 9
2.4 存储器配置 12
2.4.1 MCS-51的空间配置 12
2.4.2 程序存储器 12
2.4.3 内部数据存储器(内部RAM) 13
2.4.4 专用寄存器——特殊功能寄存器(SFR) 14
2.4.5 位地址空间 17
2.4.6 外部数据存储器 17
2.5 振荡器、时钟电路和CPU时序 18
2.5.1 时钟的基本概念 18
2.5.2 典型指令的取指/执行时序 18
2.5.3 振荡源及控制器 19
2.6.1 P0口 20
2.6 I/O端口 20
2.6.2 P1口 22
2.6.3 P2口 22
2.6.4 P3口 23
2.6.5 各端口的一般使用方法 23
2.6.6 利用端口组成8031应用系统举例 24
习题 26
第3章 MCS-51汇编语言指令 27
3.1 寻址方式 27
3.1.1 立即寻址 27
3.1.4 寄存器间接寻址 28
3.1.5 基址寄存器加变址寄存器间接寻址(又叫变址寻址) 28
3.1.2 寄存器寻址 28
3.1.3 直接寻址 28
3.1.6 相对寻址 29
3.1.7 寻址方式小结 29
3.2 MCS-51汇编语言程序设计基础 29
3.2.1 MCS-51单片机的助记符语言 29
3.2.2 指令格式 31
3.2.3 指令分类 31
3.2.4 符号说明 31
3.2.6 51伪指令 32
3.2.5 MCS-51汇编语言程序设计的基本方法 32
3.2.7 程序结构 34
3.3 数据传送类指令 36
3.3.1 通用传送指令 38
3.3.2 外部数据存储器(或外扩I/O口)与A传送指令 41
3.3.3 程序存储器向累加器A传送指令 42
3.3.4 数据交换指令 43
3.3.5 栈操作指令 44
3.4 逻辑操作类指令 45
3.4.1 对累加器A进行的逻辑操作 46
3.4.2 双操作数指令 47
3.5 算术运算类指令 48
3.5.1 加减运算指令 49
3.5.2 乘除运算指令 51
3.5.3 增量、减量指令 53
3.5.4 二→十进制调整指令 54
3.6 位操作指令 55
3.6.1 位数据传送指令 57
3.6.2 位状态控制指令 57
3.6.3 位逻辑操作指令 58
3.6.4 位条件转移指令 59
3.7 控制转移类指令 62
3.7.1 程序转移指令 62
3.7.2 子程序调用和返回指令 68
3.8.1 码制转换 70
3.8 程序设计举例 70
3.8.2 程序散转 73
3.8.3 数据运算 75
3.8.4 参数传递 80
习题 82
第4章 中断 84
4.1 51单片机的中断系统及其管理 84
4.1.1 中断源 84
4.1.2 中断的开放、禁止及优先级 86
4.2.2 中断响应的过程 88
4.2 单片机响应中断的条件及响应过程 88
4.2.1 响应条件 88
4.3 关于外部中断 89
4.3.1 外部中断的触发方式 89
4.3.2 外部中断的响应时间 89
4.4 中断程序的编制举例 90
习题 92
第5章 定时/计数器 93
5.1 定时/计数器的结构及工作原理 93
5.2 定时/计数器方式和控制寄存器 94
5.2.1 定时器工作方式控制寄存器TMOD的格式 94
5.2.2 定时器控制寄存器TCON的格式 95
5.3 定时/计数器的工作方式 96
5.3.1 方式0 96
5.3.2 方式1 96
5.3.3 方式2 97
5.3.4 方式3 97
5.4 定时/计数器的编程举例 98
5.5 运行中读定时/计数器值 100
5.6 定时/计数器2 101
5.6.1 定时/计数器方式 101
5.6.2 波特率发生器方式 102
习题 103
5.6.3 定时/计数器2控制寄存器T2CON 103
第6章 MCS-51单片机的串行口及应用 105
6.1 MCS-51单片机串行通信工作方式 105
6.1.1 串行口控制寄存器 106
6.1.2 串行口的工作方式 107
6.1.3 串行通信波特率 110
6.2 多机通信 110
6.3 应用举例 112
习题 115
第7章 单片机接口技术 116
7.1 系统扩展概述 116
7.2.1 程序存储器扩展 117
7.2 存储器扩展 117
7.2.2 数据存储器的扩展 119
7.2.3 数据存储器与程序存储器的统一编址 121
7.2.4 串行存储器扩展 122
7.3 I/O口扩展 123
7.3.1 简单I/O口扩展 124
7.3.2 8255A可编程并行I/O扩展接口 124
7.3.3 8155/8156可编程并行I/O扩展接口 130
7.3.4 通过串行口扩展并行I/O口 133
7.4 8253及其与单片机接口 134
7.4.1 8253的功能及外引脚 134
7.4.2 8253的工作方式 135
7.4.3 8253的操作 137
7.4.4 8253与单片机的接口 137
7.5 键盘及其接口 138
7.5.1 键盘抖动及其消除方法 138
7.5.2 独立式键盘 139
7.5.3 矩阵式键盘 140
7.5.4 8279键盘、显示接口芯片及其应用 143
7.6 显示接口电路 149
7.6.1 七段LED显示器 149
7.6.2 LED显示器的显示方式 150
7.6.3 LED显示器与单片机接口 151
7.6.4 LED的驱动电路 153
7.6.5 8279显示电路 154
7.7 A/D、D/A转换器及其接口电路 155
7.7.1 A/D转换器简介 155
7.7.2 8位A/D转换器与单片机的接口 156
7.7.3 12位A/D转换器AD574A与单片机的接口 159
7.7.4 串行A/D转换器及其接口 161
7.7.5 D/A转换器及其接口电路 164
习题 165
8.1 C51语言简介 166
第8章 C51语言程序设计 166
8.2 C51语言语法简介 168
8.2.1 数据与数据类型 168
8.2.2 C51数据的存储类型与8051存储器结构定义 169
8.2.3 特殊功能寄存器及C51定义 170
8.2.4 C51的运算符及其表达式 171
8.2.5 C51的专用函数 172
8.2.6 C51的函数 173
8.2.7 C51的绝对地址访问 176
8.3 基本程序设计 176
8.3.1 顺序结构程序 176
8.3.2 分支结构程序 177
8.3.3 循环结构程序 178
8.3.4 函数调用 179
8.4 C51编程举例 179
8.4.1 键盘显示电路的软件设计 180
8.4.2 数据采集系统的软件设计 181
8.4.3 RS232通信软件的设计 182
习题 184
第9章 基于51内核的单片机 185
9.1 ATMEL公司的51系列单片机 185
9.1.1 AT89C51/LV51系列单片机 185
9.1.2 AT89C2051系列单片机 186
9.1.3 AT89S51系列单片机 187
9.2 Winbond公司的51系列单片机 191
9.2.1 W77E58单片机的主要性能特点 192
9.2.2 W77E58单片机的引脚功能描述 193
9.2.3 W77E58的特殊功能寄存器 194
9.3 51系列兼容单片机应用举例 200
9.3.1 双数据指针功能的应用 200
9.3.2 W77E58单片机的双串口功能的应用 201
9.3.3 W77E58单片机的看门狗定时器的应用 202
附录 204
附录A ASC Ⅱ码表 204
附录B 51单片机指令速查表 204
参考文献 209