绪论 1
第1章 MCS-51单片机结构 5
1.1 MCS-51单片机内部结构 5
1.1.1 概述 5
1.1.2 CPU 6
1.2 存储器 6
1.2.1 程序存储器 6
1.2.2 外部数据存储器 7
1.2.3 内部数据存储器 7
1.3 特殊功能寄存器 9
1.4.1 时钟电路 11
1.4.2 基本时序单位 11
1.4 时钟电路与复位电路 11
1.4.3 复位电路 12
1.5 引脚功能 13
1.6 小结 14
思考题与习题一 15
第2章 MCS-51单片机的指令系统 16
2.1 寻址方式 16
2.1.1 立即寻址(#data) 16
2.1.2 直接寻址 17
2.1.3 寄存器寻址 17
2.1.4 寄存器间接寻址 17
2.1.5 变址寻址 18
2.1.6 相对寻址 18
2.2.1 传送类指令 19
2.2 数据传送与交换指令 19
2.1.7 位寻址 19
2.2.2 字节交换指令 21
2.3 算术运算和逻辑运算指令 22
2.3.1 以A为目的操作数的算术运算和逻辑运算指令 22
2.3.2 以dir为目的操作数逻辑指令 22
2.3.3 加1指令 22
2.3.4 减1指令 23
2.3.5 十进制调整指令 23
2.3.6 专对A的指令 24
2.3.7 乘、除法指令 24
2.4 控制转移指令 25
2.4.1 调子程序和返回类指令 25
2.4.2 转换指令 26
2.4.3 空操作指令 29
2.4.4 指令应用举例 29
2.5 位操作指令 30
2.6 伪指令 32
2.7 小结 33
思考题与习题二 33
第3章 单片机汇编语言程序设计 36
3.1 顺序程序设计 36
3.2 分支程序设计 37
3.3 循环程序设计 40
3.4 位操作程序设计 49
3.5 子程序 50
思考题与习题三 52
3.6 小结 52
第4章 单片机的C语言编程——Franklin C51 54
4.1 C51的程序结构 54
4.2 C51的数据类型 55
4.3 数据的存储类型和存储模式 57
4.3.1 数据的存储类型 57
4.3.2 存储器模式 57
4.3.3 变量说明举例 58
4.3.4 指针变量说明举例 58
4.4 C51对SFR、可寻址位、存储器和I/O口的定义 59
4.4.1 特殊功能寄存器SFR定义 59
4.4.2 对位变量的定义 59
4.5 C51的运算符 60
4.4.3 C51对存储器和外接I/O口的绝对地址访问 60
4.6 函数 61
4.6.1 函数的分类 61
4.6.2 函数的定义 61
4.6.3 函数的调用 62
4.6.4 对被调函数的说明 62
4.7 单片机的C语言编程实例 63
4.7.1 C语言程序的反汇编程序(源代码) 63
4.7.2 顺序程序的设计 64
4.7.3 循环程序的设计 65
4.7.4 分支程序的设计 66
4.8 汇编语言和C语言的混合编程 68
4.9 小结 71
思考题与习题四 72
第5章 输入、输出接口P0~P3 74
5.1 P0~P3端口的功能和内部结构 74
5.1.1 端口功能 74
5.1.2 端口的内部结构 74
5.2 编程举例 76
5.3 用并行口设计LED数码显示器和键盘电路 78
5.3.1 用并行口设计LED显示电路 79
5.3.2 用并行口设计键盘电路 82
5.4 小结 84
思考题与习题五 84
6.1.2 中断控制的有关寄存器 85
6.1.1 中断源 85
6.1 中断系统结构 85
第6章 MCS-51单片机的中断系统 85
6.2 中断响应过程 87
6.2.1 中断处理过程 87
6.2.2 中断请求的撤除 88
6.3 中断的汇编语言程序和C语言程序设计 88
6.3.1 汇编语言中断程序的设计 88
6.3.2 C51中断程序的设计 90
6.4 小结 92
思考题与习题六 93
第7章 定时计数器 94
7.1 定时计数器的结构和工作原理 94
7.2.2 定时器控制寄存器——TCON 95
7.2.1 定时器方式寄存器——TMOD 95
7.2 定时计数器的寄存器 95
7.3 定时计数器的工作方式 96
7.4 定时计数器的应用程序设计 97
7.4.1 定时器的计数初值C的计算和装入 97
7.4.2 定时器的初始化编程 97
7.4.3 应用编程举例 98
7.4.4 门控位的应用 102
7.5 定时/计数器2 104
7.5.1 定时/计数器2的外部引脚 104
7.5.2 定时/计数器2的寄存器 104
7.5.3 定时/计数器2的工作方式 105
7.6 小结 106
思考题与习题七 107
第8章 串行接口 108
8.1 概述 108
8.1.1 同步和异步方式 108
8.1.2 通信方向 109
8.1.3 串行通信接口的任务 109
8.1.4 波特率和发送接收时钟 110
8.1.5 通信线的连接 110
8.1.6 关于RS-232C 110
8.1.7 单片机串行通信电路 112
8.2 MCS-51单片机的串行口结构与工作原理 114
8.2.1 串行口结构 114
8.2.2 工作原理 114
8.3.1 串行口的控制寄存器SCON 115
8.3 串行口的控制寄存器 115
8.2.3 波特率的设定 115
8.3.2 电源控制寄存器PCON 116
8.4 串行口的工作方式 116
8.5 串行口的应用编程 117
8.5.1 查询方式 117
8.5.2 中断方式 118
8.6 单片机和PC机的串行通信 125
8.7 小结 129
思考题与习题八 129
第9章 单片机端口与存储器的扩展 131
9.1 单片机总线信号的定义 131
9.2.1 EPROM的扩展 132
9.2 程序存储器的扩展 132
9.2.2 EEPROM的扩展 133
9.3 数据存储器的扩展 134
9.4 串行EEPROM存储器扩展 136
9.4.1 基本原理 137
9.4.2 控制字节要求 137
9.4.3 确认要求 138
9.4.4 写操作 138
9.4.5 读操作 139
9.4.6 串行EEPROM和AT89C51接口 140
9.4.7 节省单片机接口的串行EEPROM 145
9.5 I/O接口的扩展 151
9.6 多个芯片扩展实例 151
9.7.1 多功能接口芯片8155 153
9.7 多功能芯片和新型存储器介绍 153
9.7.2 带有I/O口的EPROM 87C75PF 155
9.7.3 带地址锁存器的随机存储器IRAM、EPROM 157
9.7.4 快速擦写存储器(Flash Memory) 157
9.8 小结 157
思考题与习题九 158
第10章 单片机应用系统的接口技术 159
10.1 并行D/A转换器 159
10.1.1 DAC0832 159
10.1.2 DAC1210 161
10.2 串行D/A转换器 162
10.2.1 串行D/A转换器 162
10.2.2 数据格式 163
10.2.3 TLV5616和8XX51的接口与编程 164
10.3 并行A/D转换器 165
10.3.1 ADC0809 165
10.4 串行A/D转换器 168
10.4.1 接口的时序图 169
10.4.2 TLC2543的命令字 170
10.4.3 TLC2543与8XX51的SPI接口 171
10.5 显示器与键盘接口8279 172
10.5.1 8279芯片工作原理 172
10.5.2 8279命令字 174
10.5.3 8279的状态字 175
10.5.4 读入数据格式 175
10.5.5 8279的接口电路和编程 175
10.6.1 ICM7211的引脚 179
10.6 液晶显示器LCD的单片机的接口 179
10.6.2 ICM7211M级联应用举例 180
10.7 小结 182
思考题与习题十 183
第11章 单片机应用系统设计和调试 184
11.1 系统开发与开发工具 184
11.1.1 单片机应用系统的构成 184
11.1.2 应用系统的设计原则 185
11.1.3 单片机应用系统的开发工具 185
11.1.4 单片机应用系统的调试 186
11.2 功率扩展与隔离电路 187
11.3 单片机应用系统的抗干扰技术 189
11.3.2 硬件抗干扰 190
11.3.1 软件抗干扰 190
11.3.3 采用“看门狗”技术 191
11.4 单片机应用系统实例——电子显示屏 192
11.5 小结 196
思考题与习题十一 196
单片机实验指导 198
习题解答 211
附录A MCS-51指令表 233
附录B C51的库函数 238
附录C C51的编译控制指令 241
附录D 常用集成电路引脚图 243
参考文献 246