第1章 STC单片机绪论 1
1.1单片机基础 1
1.1.1单片机发展历史 1
1.1.2单片机概念 2
1.1.3单片机与嵌入式系统 4
1.1.4单片机编程语言 5
1.2 STC单片机简介 8
1.2.1 STC单片机发展历史 8
1.2.2 STC单片机IAP和ISP 9
1.2.3 STC单片机命名规则 10
1.2.4 STC单片机封装类型 11
1.3 STC单片机开发流程 13
1.3.1硬件设计流程 14
1.3.2软件设计流程 15
1.4 STC单片机结构及功能 17
1.5 STC单片机引脚信号 19
第2章 数值表示及转换 26
2.1常用码制 26
2.1.1二进制码制 26
2.1.2十进制码制 26
2.1.3八进制码制 26
2.1.4十六进制码制 27
2.1.5 BCD码 28
2.2正数表示方法 28
2.2.1正整数的表示 28
2.2.2正小数的表示 29
2.3正数码制转换 30
2.3.1十进制整数转换成其他进制数 30
2.3.2十进制小数转换成二进制数 31
2.4负数表示方法 32
2.5负数补码的计算 33
2.5.1负整数补码的计算 33
2.5.2负小数补码的计算 34
2.6定点数表示 35
2.7浮点数表示 36
第3章 STC单片机CPU子系统 38
3.1 STC单片机CPU内核功能单元 38
3.1.1控制器 40
3.1.2运算器 45
3.1.3特殊功能寄存器 47
3.2 STC单片机存储器结构和地址空间 56
3.2.1程序Flash存储器 56
3.2.2数据Flash存储器 57
3.2.3内部数据RAM存储器 60
3.2.4外部数据存储器 63
3.3 STC单片机中断系统原理及功能 65
3.3.1中断原理 65
3.3.2中断系统结构 67
3.3.3中断优先级处理 72
3.3.4中断优先级控制寄存器 73
3.3.5中断向量表 74
第4章 STC单片机CPU指令系统 78
4.1 STC单片机CPU寻址模式 78
4.1.1立即数寻址模式 79
4.1.2直接寻址模式 79
4.1.3间接寻址模式 79
4.1.4寄存器寻址模式 80
4.1.5相对寻址模式 80
4.1.6变址寻址模式 80
4.1.7位寻址模式 81
4.2 STC单片机CPU指令集 81
4.2.1算术指令 82
4.2.2逻辑指令 91
4.2.3数据传送指令 99
4.2.4布尔指令 108
4.2.5程序分支指令 114
第5章 STC单片机汇编语言编程模型 123
5.1汇编语言程序结构 123
5.2汇编代码中段的分配 124
5.2.1 CODE段 124
5.2.2 BIT段 125
5.2.3 IDATA段 125
5.2.4 DATA段 126
5.2.5 XDATA段 126
5.3汇编语言符号及规则 127
5.3.1符号的命名规则 127
5.3.2符号的作用 127
5.4汇编语言操作数描述 128
5.4.1数字 128
5.4.2字符 128
5.4.3字符串 128
5.4.4位置计数器 129
5.4.5操作符 129
5.4.6表达式 130
5.5汇编语言控制描述 130
5.5.1地址控制 131
5.5.2条件汇编 131
5.5.3存储器初始化 132
5.5.4分配存储器空间 132
5.5.5过程声明 132
5.5.6程序链接 133
5.5.7段控制 134
5.5.8杂项 135
5.6 Keil μVision集成开发环境简介 135
5.6.1软件功能 135
5.6.2软件的下载 136
5.6.3软件的安装 138
5.6.4软件的启动 139
5.7 Keil μVision5汇编语言设计流程 140
5.7.1建立新的设计工程 140
5.7.2添加新的汇编语言文件 141
5.7.3建立设计 142
5.7.4分析.m51文件 143
5.7.5分析.lst文件 145
5.7.6分析.hex文件 146
5.7.7程序软件仿真 146
5.7.8 STC硬件平台说明 154
5.7.9程序硬件仿真 158
5.8单片机端口控制汇编语言程序设计 160
5.8.1设计原理 160
5.8.2建立新的工程 161
5.8.3添加汇编语言程序 162
5.8.4建立设计 163
5.8.5下载设计 163
5.9单片机中断汇编语言程序设计 164
5.9.1设计原理 164
5.9.2建立新的工程 165
5.9.3添加汇编语言文件 166
5.9.4分析.lst文件 167
5.9.5建立设计 168
5.9.6下载设计 168
5.9.7硬件仿真 169
第6章 STC单片机C语言编程模型 171
6.1 C语言发展历史 171
6.2 C语言的优势 172
6.3设计第一个C程序 173
6.3.1建立新的设计工程 173
6.3.2添加新的C语言文件 174
6.3.3 C语言程序结构 175
6.3.4设计建立 176
6.3.5设计运行和分析 178
6.4常量和变量 181
6.4.1常量 181
6.4.2变量 182
6.5数据类型 183
6.5.1标准C语言所支持的类型 183
6.5.2单片机扩充的类型 190
6.5.3自定义数据类型 194
6.5.4变量及存储模式 195
6.6运算符 197
6.6.1赋值运算符 197
6.6.2算术运算符 198
6.6.3递增和递减运算符 199
6.6.4关系运算符 200
6.6.5逻辑运算符 201
6.6.6位运算符 202
6.6.7复合赋值运算符 203
6.6.8逗号运算符 204
6.6.9条件运算符 205
6.6.10强制类型转换符 206
6.6.11 sizeof运算符 206
6.7描述语句 207
6.7.1输入/输出语句 207
6.7.2表达式语句 213
6.7.3条件语句 213
6.7.4开关语句 215
6.7.5循环语句 216
6.7.6返回语句 220
6.8数组 220
6.8.1一维数组的表示方法 220
6.8.2多维数组的表示方法 223
6.8.3索引数组元素的方法 226
6.8.4动态输入数组元素的方法 227
6.8.5数组运算算法 231
6.9指针 233
6.9.1指针的基本概念 233
6.9.2指向指针的指针 241
6.9.3指针变量输入 245
6.10函数 247
6.10.1函数声明 247
6.10.2函数调用 248
6.10.3函数变量的存储方式 248
6.10.4函数参数和局部变量的存储器模式 250
6.10.5基本数据类型传递参数 250
6.10.6数组类型传递参数 255
6.10.7指针类型传递参数 258
6.11预编译指令 261
6.11.1宏定义 261
6.11.2文件包含 262
6.11.3条件编译 264
6.11.4其他预处理指令 266
6.12复杂数据结构 266
6.12.1结构 266
6.12.2联合 271
6.12.3枚举 272
6.13 C程序中使用汇编语言 274
6.13.1内嵌汇编语言 274
6.13.2调用汇编程序 277
6.14 C语言端口控制实现 281
6.15 C语言中断程序实现 283
6.15.1 C语言中断程序实现原理 283
6.15.2外部中断电路原理 283
6.15.3 C语言中断具体实现过程 283
第7章 STC单片机时钟、复位和电源模式原理及实现 286
7.1 STC单片机时钟 286
7.2 STC单片机复位 287
7.2.1外部RST引脚复位 287
7.2.2软件复位 288
7.2.3掉电/上电复位 289
7.2.4 MAX810专用复位电路复位 289
7.2.5内部低压检测复位 289
7.2.6看门狗复位 291
7.2.7程序地址非法复位 293
7.3 STC单片机电源模式 293
7.3.1低速模式 293
7.3.2空闲模式 294
7.3.3掉电模式 294
第8章 STC单片机计数器和定时器原理及实现 298
8.1计数器/定时器模块简介 298
8.2计数器/定时器寄存器组 299
8.2.1定时器/计数器0/1控制寄存器TCON 299
8.2.2定时器/计数器工作模式寄存器TMOD 300
8.2.3辅助寄存器AUXR 302
8.2.4 T0~T2时钟输出寄存器和外部中断允许INT_CLKO(AUXR2) 303
8.2.5定时器T0和T1中断允许控制寄存器IE 305
8.2.6定时器T0和T1中断优先级控制寄存器IP 306
8.2.7定时器T4和定时器T3控制寄存器T4T3M 306
8.2.8定时器T2、T3和T4的中断控制寄存器IE2 308
8.3计数器/定时器工作模式原理和实现 309
8.3.1定时器/计数器0工作模式 309
8.3.2定时器/计数器1工作模式 314
8.3.3定时器/计数器2工作模式 315
8.3.4定时器/计数器3工作模式 316
8.3.5定时器/计数器4工作模式 318
第9章 STC单片机CCP/PCA/PWM模块原理及实现 319
9.1 CCP/PCA/PWM结构 319
9.2 CCP/PCA/PWM寄存器组 321
9.2.1 PCA工作模式寄存器 321
9.2.2 PCA控制寄存器 322
9.2.3 PCA比较捕获寄存器 322
9.2.4 PCA的16位计数器 325
9.2.5 PCA捕获/比较寄存器 325
9.2.6 PCA模块PWM寄存器 326
9.2.7 PCA模块引脚切换寄存器 328
9.3 CCP/PCA/PWM工作模式 329
9.3.1捕获模式 329
9.3.2 16位软件定时器模式 331
9.3.3高速脉冲输出模式 332
9.3.4脉冲宽度调制模式 334
第10章 STC单片机串行异步收发器原理及实现 340
10.1 RS-232标准简介 340
10.1.1 RS-232传输特点 340
10.1.2 RS-232数据传输格式 341
10.1.3 RS-232电气标准 342
10.1.4 RS-232参数设置 343
10.1.5 RS-232连接器 344
10.2 STC单片机串口模块简介 345
10.2.1串口模块结构 345
10.2.2串口引脚 345
10.3串口1寄存器及工作模式 346
10.3.1串口1寄存器组 346
10.3.2串口1工作模式 350
10.3.3串口1通信实例1 352
10.3.4串口1通信实例2 356
10.4串口2寄存器及工作模式 363
10.4.1串口2寄存器组 363
10.4.2串口2工作模式 366
10.5串口3寄存器及工作模式 367
10.5.1串口3寄存器组 367
10.5.2串口3工作模式 369
10.6串口4寄存器及工作模式 369
10.6.1串口4寄存器组 369
10.6.2串口4工作模式 371
10.7串行通信综合实现 372
10.7.1红外收发器的电路原理 372
10.7.2红外通信波形捕获 373
10.7.3红外通信协议 374
10.7.4红外检测原理 376
10.7.5串口通信原理 378
10.7.6设计实现 378
第11章 STC单片机SPI原理及实现 383
11.1 SPI模块结构及功能 383
11.1.1 SPI传输特点 383
11.1.2 SPI模块功能 383
11.1.3 SPI接口信号 384
11.1.4 SPI接口的数据通信方式 385
11.1.5 SPI模块内部结构 386
11.2 SPI模块寄存器组 387
11.2.1 SPI控制寄存器 387
11.2.2 SPI状态寄存器 388
11.2.3 SPI数据寄存器 389
11.2.4中断允许寄存器 389
11.2.5中断优先级寄存器 389
11.2.6控制SPI引脚位置寄存器 390
11.3 SPI模块配置及时序 390
11.3.1 SPI配置模式 390
11.3.2主/从模式的注意事项 391
11.3.3通过SS修改模式 392
11.3.4写冲突 392
11.3.5数据模式时序 392
11.4 SPI模块设计实例 394
11.4.1系统控制电路原理 394
11.4.2 7段数码管原理 396
11.4.3 74HC595原理 397
11.4.4系统软件控制流程 399
11.4.5程序具体实现 399
第12章 STC单片机ADC原理及实现 403
12.1模数转换器原理 403
12.1.1模数转换器的参数 403
12.1.2模数转换器的类型 404
12.2 STC单片机内ADC的结构原理 407
12.2.1 STC单片机内ADC的结构 407
12.2.2 ADC转换结果的计算方法 408
12.3 STC单片机内ADC寄存器组 408
12.3.1 P1口模拟功能控制寄存器 408
12.3.2 ADC控制寄存器 409
12.3.3时钟分频寄存器 410
12.3.4 ADC结果高位寄存器 411
12.3.5 ADC结果低位寄存器 411
12.3.6中断使能寄存器 411
12.3.7中断优先级寄存器 411
12.4 ADC应用实现1 412
12.4.1直流分压电路原理 412
12.4.2软件设计流程 413
12.4.3具体实现过程 414
12.5 ADC应用实现2 416
12.5.1硬件电路设计 416
12.5.2 1602字符LCD原理 417
12.5.3软件设计流程 421
12.5.4具体实现过程 421
12.6 ADC应用实现3 425
12.6.1硬件电路设计 426
12.6.2 12864图形点阵LCD原理 427
12.6.3软件设计流程 433
12.6.4 ADC外部输入信号要求 436
12.6.5具体实现过程 436
12.7 ADC应用实现4 442
第13章 STC单片机增强型PWM发生器原理及实现 448
13.1增强型PWM发生器简介 448
13.2增强型PWM发生器相关寄存器组 448
13.2.1端口配置寄存器 449
13.2.2 PWM配置寄存器 449
13.2.3 PWM控制寄存器 450
13.2.4 PWM中断标志寄存器 451
13.2.5 PWM外部异常控制寄存器 452
13.2.6 PWM计数器 453
13.2.7 PWM时钟选择寄存器 453
13.2.8 PWM2翻转计数器 454
13.2.9 PWM2控制寄存器 455
13.2.10 PWM3翻转计数器 455
13.2.11 PWM3控制寄存器 456
13.2.12 PWM4翻转计数器 457
13.2.13 PWM4控制寄存器 458
13.2.14 PWM5翻转计数器 458
13.2.15 PWM5控制寄存器 459
13.2.16 PWM6翻转计数器 460
13.2.17 PWM6控制寄存器 461
13.2.18 PWM7翻转计数器 461
13.2.19 PWM7控制寄存器 462
13.2.20 PWM中断优先级控制寄存器 463
13.3增强型PWM发生器实现1 463
13.4增强型PWM发生器实现2 465
第14章 STC单片机比较器原理及实现 468
14.1 STC单片机比较器结构 468
14.2 STC单片机比较器寄存器组 469
14.2.1比较器控制寄存器1 469
14.2.2比较器控制寄存器2 470
14.3 STC单片机比较器应用 471
第15章 RTX51操作系统原理及实现 474
15.1操作系统的必要性 474
15.1.1单任务程序 474
15.1.2轮询程序 475
15.2操作系统基本知识 475
15.2.1操作系统的作用 475
15.2.2操作系统的功能 476
15.3 RTX51操作系统的任务 478
15.3.1定义任务 478
15.3.2管理任务 479
15.3.3切换任务 479
15.4 RTX51操作系统内核函数 479
15.5 RTX51操作系统实现 484
15.5.1 RTX51操作系统实现1 484
15.5.2 RTX51操作系统实现2 486
15.5.3 RTX51操作系统实现3 488