第1章 概述 1
1.1 C8051F系列单片机简介 1
1.1.1 C8051F系列单片机的诞生 1
1.1.2 C8051F系列单片机的组成 2
1.1.3 C8051F系列单片机的特点 3
1.2 C8051F系列单片机分类 4
1.2.1 通用型 4
1.2.2 超微型 6
1.2.3 CAN型 7
1.2.4 精确AD型 7
1.2.5 USB型 9
1.2.6 高速型 10
第2章 C8051F单片机结构及原理 13
2.1 C8051F的CIP-51内核 13
2.1.1 CIP-51内核的组成及结构 13
2.1.2 CIP-51内核的特点 13
2.1.3 CIP-51内核的基本部件 14
2.2 C8051F单片机的结构与原理 15
2.2.1 C8051F02x单片机的组成与结构 15
2.2.2 引脚定义及功能 18
2.2.3 C8051F单片机的工作原理 23
2.2.4 C8051F单片机的电特性 24
2.3 存储器 26
2.3.1 存储器结构和地址空间 26
2.3.2 程序存储器 27
2.3.3 数据存储器 35
2.3.4 专用寄存器SFR 37
2.4 时钟管理系统 44
2.4.1 CPU时序及有关概念 44
2.4.2 振荡器和时钟电路 45
2.4.3 内部振荡器 46
2.4.4 外部振荡器 47
2.5 复位电路和复位源 50
2.5.1 复位电路 50
2.5.2 复位源寄存器 51
2.5.3 上电复位 53
2.5.4 掉电复位 54
2.5.5 外部复位 54
2.5.6 软件强制复位 54
2.5.7 时钟失效检测器复位 54
2.5.8 比较器0复位 55
2.5.9 外部CNVSTR引脚复位 58
2.5.10 看门狗定时器(WDT)复位 58
2.6 C8051F系列单片机的低功耗方式 60
2.6.1 电源管理方式简介 60
2.6.2 电源控制寄存器PCON 60
2.6.3 待机方式 62
2.6.4 停机方式 62
2.6.5 降低频率和电压的方法 63
思考与练习 64
第3章 指令系统与程序设计 65
3.1 指令系统简介 65
3.2 寻址方式 66
3.2.1 符号约定 66
3.2.2 寻址方式说明 67
3.3 指令系统分类介绍 71
3.3.1 数据传送类指令 71
3.3.2 算术运算类指令 76
3.3.3 逻辑操作类指令 79
3.3.4 控制转移类指令 81
3.3.5 位操作类指令 85
3.4 汇编语言程序 87
3.4.1 程序设计语言 87
3.4.2 汇编语言规范 88
3.4.3 汇编语言的一般编写格式 93
3.4.4 汇编语言程序设计举例 94
3.5 C语言程序 96
3.5.1 C语言的主要优点 96
3.5.2 C语言使用的工具 96
3.5.3 C51与C语言的主要不同点 97
3.5.4 C51编程实例 100
思考与练习 103
第4章 输入输出端口 105
4.1 输入输出端口的基本结构与原理 105
4.1.1 输入输出端口的基本结构 105
4.1.2 低输入输出端口功能与原理 106
4.1.3 输入输出引脚的电气特性 108
4.2 低端口的配置寄存器 108
4.2.1 输入输出端口功能选择寄存器 108
4.2.2 输入输出端口输出方式寄存器 112
4.2.3 输入输出端口数据寄存器 113
4.2.4 中断标志寄存器P3IF 114
4.3 低端口的配置 115
4.3.1 低端口的引脚分配 115
4.3.2 配置端口引脚的输出方式 117
4.3.3 配置端口引脚为数字输入 117
4.3.4 配置端口1的引脚为模拟输入 118
4.3.5 外部存储器接口引脚分配 118
4.3.6 低端口配置与应用举例 118
4.4 高端口(P4~P7)的配置 122
4.4.1 高端口的特殊功能寄存器 123
4.4.2 高端口的配置 125
4.4.3 高端口应用举例 126
4.5 外部数据存储器接口 126
4.5.1 外部存储器接口的寄存器 126
4.5.2 配置外部存储器接口的方法 128
4.5.3 复用和非复用选择 128
4.5.4 存储器模式 129
4.5.5 XRAM的寻址方法 131
4.5.6 C8051F的时序 132
4.5.7 扩展并行RAM举例 136
4.6 其他型号的输入输出端口 141
4.6.1 输入输出端口的基本结构 141
4.6.2 端口的特殊功能寄存器 141
4.6.3 输入输出端口的配置 145
4.6.4 输入输出端口应用举例 146
思考与练习 148
第5章 定时/计数器 149
5.1 定时/计数器概述 149
5.1.1 定时/计数器的工作原理 149
5.1.2 定时器时钟控制寄存器 150
5.1.3 定时器的工作方式 151
5.2 定时/计数器T0、T1概述 151
5.2.1 定时/计数器T0、T1的结构与原理 151
5.2.2 定时/计数器的寄存器 152
5.2.3 定时/计数器的初始化 154
5.3 定时/计数器T0、T1的工作方式 155
5.3.1 方式0 155
5.3.2 方式1 156
5.3.3 方式2 156
5.3.4 方式3 156
5.3.5 定时/计数器初值的确定方法 158
5.3.6 定时器T0、T1应用举例 158
5.4 定时/计数器T2 159
5.4.1 T2的寄存器 160
5.4.2 T2的工作方式 161
5.4.3 应用例题 164
5.5 定时器T3 166
5.5.1 T3的工作原理 166
5.5.2 定时器3的特殊功能寄存器 166
5.5.3 定时器3的工作方式 168
5.6 定时器T4 168
5.6.1 T4的寄存器 168
5.6.2 T4的工作方式[2] 170
5.7 可编程计数器阵列 173
5.7.1 PCA计数/定时器的结构与原理 173
5.7.2 PCA的特殊工作寄存器 175
5.7.3 PCA捕捉/比较模块的工作方式 178
5.7.4 PCA的中断 183
5.7.5 PCA应用举例 183
思考与练习 187
第6章 中断系统 189
6.1 概述 189
6.1.1 中断的概念 189
6.1.2 引进中断技术的优点 189
6.1.3 中断源 190
6.1.4 中断系统的功能 190
6.2 C8051F单片机的中断系统 191
6.2.1 中断源及中断向量(中断入口) 191
6.2.2 中断控制寄存器 194
6.2.3 中断标志 197
6.2.4 中断优先级设定 199
6.3 中断处理过程 202
6.3.1 中断响应 202
6.3.2 中断处理 203
6.3.3 中断返回 204
6.3.4 中断响应时间 204
6.4 中断程序的设计与应用 204
6.4.1 中断程序的一般设计方法 204
6.4.2 中断程序应用举例 207
思考与练习 210
第7章 UART串行接口 211
7.1 串行通信概述 211
7.1.1 异步通信简介 211
7.1.2 串行通信方式 212
7.2 C8051F的UART串行口简介 213
7.2.1 串行口结构与工作原理 213
7.2.2 串行口控制寄存器 215
7.2.3 C8051F的帧格式 218
7.2.4 波特率的设置 218
7.3 串行通信工作方式 221
7.3.1 方式0 221
7.3.2 方式1 221
7.3.3 方式2和方式3 222
7.3.4 多机通信 222
7.3.5 增强型UART多机通信 224
7.3.6 错误检测 224
7.4 串行口应用举例 225
7.4.1 用串行口扩展输入/输出端口 225
7.4.2 用串行口进行异步通信 226
思考与练习 232
第8章 SPI串行接口 233
8.1 SPI串行接口简介 233
8.1.1 SPI串行接口的特点 233
8.1.2 SPI串行接口结构与工作原理 233
8.1.3 引脚信号说明 235
8.1.4 SPI串行接口特殊功能寄存器 236
8.2 SPI的串行通信 238
8.2.1 工作方式 238
8.2.2 串行时钟 240
8.2.3 SPI的系统配置 241
8.2.4 错误标志及处理 242
8.3 SPI串行接口应用举例 243
思考与练习 247
第9章 SMBus串行总线 248
9.1 SMBus串行通信概述 248
9.1.1 SMBus串行通信的特点 248
9.1.2 SMBus总线串行接口结构与工作原理 249
9.1.3 SMBus总线传输时序 251
9.1.4 SMBus传输协议 252
9.2 SMBus特殊功能寄存器[2] 253
9.2.1 控制寄存器SMB0CN 253
9.2.2 时钟速率寄存器SMB0CR 255
9.2.3 数据寄存器SMB0DAT 255
9.2.4 地址寄存器SMB0ADR 256
9.2.5 状态寄存器SMB0STA 256
9.3 SMBus串行通信方式[2] 258
9.3.1 主发送方式 258
9.3.2 主接收方式 259
9.3.3 从发送方式 259
9.3.4 从接收方式 260
9.4 SMBus总线应用举例 260
9.4.1 AT24CXX系列EEPROM简介 261
9.4.2 SMBus应用实例 264
思考与练习 272
第10章 C8051F的模/数与数/模转换器 273
10.1 模/数转换概述 273
10.1.1 模/数转换的主要技术指标 273
10.1.2 C8051F系列单片机模/数转换的主要特点和技术指标 274
10.1.3 模/数转换模块的结构与原理 275
10.2 模/数转换寄存器 278
10.2.1 10/12位的ADC0特殊功能寄存器 278
10.2.2 8位ADC的特殊功能寄存器 284
10.3 模/数转换的工作方式及应用 287
10.3.1 12/10位ADC的工作方式[2] 287
10.3.2 8位ADC1的工作方式 289
10.3.3 数据存放形式 289
10.3.4 ADC可编程越限检测器 290
10.3.5 ADC的建立时间[2] 293
10.3.6 模/数转换应用举例 293
10.4 数/模转换 298
10.4.1 数/模转换的主要技术指标 298
10.4.2 DAC的结构及原理 299
10.4.3 数/模转换的特殊功能寄存器 301
10.4.4 数/模转换的输出更新方式 302
10.4.5 数/模转换应用举例 303
10.5 电压基准 304
10.5.1 电压基准电路结构及原理[2] 304
10.5.2 电压基准的设置 306
10.5.3 ADC的外部电压基准设置 308
思考与练习 308
第11章 开发环境和开发方法简介 309
11.1 集成开发环境简介 309
11.1.1 SilabsIDE的主要优点 309
11.1.2 SilabsIDE的工作原理 310
11.1.3 C8051F的开发套件 311
11.1.4 开发环境的安装 312
11.2 Silabs IDE操作指南 313
11.2.1 Silabs IDE主界面 313
11.2.2 Silabs IDE操作步骤 314
11.2.3 Silabs IDE的特殊功能 319
11.3 Silabs IDE的配置向导 320
11.3.1 配置向导简介 320
11.3.2 配置向导的方法 321
11.4 调试应用实例 324
附录1 C8051F指令表 330
附录2 C8051F单片机选型表 335
参考文献 341