《21天学通51单片机开发》[光盘镜像]
电驴资源
| 用户共享的电驴资源列表 | |
|---|---|
| 21天学通51单片机开发.isz | 830.12 MB |
| 830.12 MB | |
电驴资源简介
中文名: 21天学通51单片机开发资源格式: 光盘镜像发行时间: 2010年05月地区: 大陆对白语言: 普通话简介:
/thumb.jpg)
本书系统地介绍了51系列单片机的基本概念、程序设计语言及硬件编程,并给出了一些常用的典型案例。本书言简意赅、通俗易懂,知识点覆盖全面,详细讲述了每个指令及功能的编程指南和实例,使读者能够更好地掌握51系列单片机的知识。
本书分25章,全面详细地讲述了单片机的原理、程序设计方法、编程指南及应用案例。首先介绍了51系列单片机的概述及单片机的基本结构,接着介绍了单片机的程序设计语言,包括汇编语言和单片机c51语言,其中c51语言是重点内容。然后结合单片机的各个功能部件详细讲解了单片机的硬件编程方法。最后还给出了在各个领域中常用到的一些典型案例,供读者在学习和工作中参考。
本书知识点覆盖全面、结构安排紧凑、讲解详细、实例丰富。51系列单片机的初学者通过本书可以快速掌握单片机的程序设计技术。本书对具有一定开发经验的设计人员,也有很高的参考价值。
本书附赠dvd光盘1张,引用内容包括超大容量手把手教学视频、电子教案(ppt)、编程参考宝典电子书、源代码及各章习题答案。
目 录
第1章 51系列单片机概述 1
1.1 51系列单片机概述 1
1.1.1 单片机的发展历史 1
1.1.2 51系列单片机简介 2
1.1.3 51系列单片机的应用领域 2
1.1.4 51系列单片机的发展方向 3
1.2 典型引脚结构 3
1.2.1 电源引脚 4
1.2.2 时钟引脚 4
1.2.3 并行I/O引脚 5
1.2.4 复位引脚 8
1.2.5 ALE/ 引脚 9
1.2.6 引脚 9
1.2.7 /VPP引脚 9
1.3 51系列单片机内部结构 10
1.4 中央处理器结构 12
1.4.1 算术逻辑部件(ALU) 12
1.4.2 控制器 12
1.4.3 通用寄存器 12
1.4.4 专用寄存器 13
1.4.5 特殊功能寄存器 15
1.5 存储器结构 16
1.5.1 程序存储器 16
1.5.2 扩展外部程序存储器 17
1.5.3 数据存储器 17
1.5.4 扩展外部数据存储器 19
1.6 单片机指令时序 20
1.6.1 几个基本概念 20
1.6.2 指令执行的时序 21
1.6.3 访问外部ROM的操作时序 23
1.6.4 访问外部RAM的操作时序 24
1.7 掉电保护 24
1.8 低功耗模式 25
1.8.1 省电保持模式 25
1.8.2 休眠运行模式 25
1.9 小结 26
1.10 习题 26
第2章 搭建51单片机开发环境 28
2.1 搭建51单片机硬件开发系统 28
2.1.1 单片机选型 28
2.1.2 一个单片机最小开发系统 29
2.2 搭建Keil C51软件开发环境 30
2.2.1 Keil μVision3简介 30
2.2.2 Keil μVision3系统安装需求 31
2.2.3 Keil μVision3的安装 31
2.2.4 Keil μVision3集成开发环境总揽 32
2.2.5 Keil μVision3的菜单栏 33
2.2.6 Keil μVision3的工具栏 36
2.2.7 Keil μVision3的快捷键 39
2.3 小结 39
2.4 习题 40
第3章 单片机汇编语言 41
3.1 单片机汇编语言概述 41
3.1.1 单片机汇编语言简介 41
3.1.2 简单的单片机汇编语言程序 42
3.2 伪指令 42
3.2.1 起始伪指令ORG 42
3.2.2 结束伪指令END 43
3.2.3 等值伪指令EQU 43
3.2.4 地址赋值伪指令DATA 43
3.2.5 字节保存伪指令DB 43
3.2.6 字保存伪指令DW 44
3.2.7 空间预留伪指令DS 44
3.2.8 位变量伪指令BIT 44
3.3 单片机的指令 45
3.3.1 单片机指令系统简介 45
3.3.2 单片机指令格式 45
3.3.3 单片机指令的寻址方式 46
3.3.4 51系列单片机指令集 49
3.5 单片机汇编语言的程序结构 55
3.5.1 顺序结构 55
3.5.2 分支结构 56
3.5.3 循环结构 57
3.5.4 子程序结构 58
3.5.5 查表程序结构 59
3.6 Keil μVision3使用单片机汇编程序 60
3.6.1 创建项目 60
3.6.2 编辑源文件 62
3.6.3 编译项目 62
3.6.4 仿真调试 63
3.7 综合练习 63
3.8 小结 64
3.9 习题 65
第4章 单片机C51语言基础 67
4.1 单片机C51语言概述 67
4.1.1 单片机C51语言的主要特点 67
4.1.2 “Hello world”程序 67
4.1.3 良好的编程规范 68
4.2 标识符和关键字 69
4.2.1 标识符 69
4.2.2 关键字 69
4.3 数据类型 71
4.3.1 变量和常量 71
4.3.2 整型数据 72
4.3.3 字符型数据 73
4.3.4 浮点型数据 75
4.4 分隔符 76
4.5 const修饰符 76
4.6 变量作用域 77
4.6.1 一般规则 77
4.6.2 不同存储类型变量的作用域 78
4.7 运算符 80
4.7.1 算术运算符 80
4.7.2 逻辑运算符 82
4.7.3 关系运算符 83
4.7.4 位运算符 84
4.7.5 特殊运算符 87
4.7.6 运算符的优先级 91
4.7.7 运算符的结合性 91
4.8 表达式 91
4.8.1 算术表达式 92
4.8.2 赋值表达式 92
4.8.3 逗号表达式 93
4.8.4 关系和逻辑表达式 93
4.9 综合练习 94
4.10 小结 95
4.11 习题 95
第5章 C51的语句 97
5.1 声明语句 97
5.2 表达式语句 97
5.3 复合语句 98
5.4 循环语句 99
5.4.1 for语句 99
5.4.2 while语句 100
5.4.3 do-while语句 101
5.5 条件语句 102
5.5.1 单分支if语句 102
5.5.2 双分支if语句 103
5.5.3 多分支if语句 104
5.6 开关语句 105
5.7 跳转语句 106
5.7.1 goto语句 106
5.7.2 break语句 107
5.7.3 continue语句 108
5.8 函数调用语句 108
5.9 空语句 109
5.10 返回语句 109
5.11 综合练习 110
5.12 小结 111
5.13 习题 111
第6章 C51的数组 113
6.1 数组的声明和表示 113
6.2 初始化数组元素 115
6.2.1 在声明数组时初始化 115
6.2.2 动态初始化 116
6.3 一维数组 116
6.3.1 一维数组的内存分配 116
6.3.2 一维数组的引用 117
6.3.3 一维字符串数组 118
6.4 二维数组 119
6.4.1 二维数组的声明 119
6.4.2 二维数组的初始化 120
6.4.3 二维数组的内存分配 121
6.4.4 二维字符串数组 122
6.5 多维数组 123
6.6 综合练习 124
6.7 小结 125
6.8 习题 125
第7章 C51的指针 127
7.1 地址和指针概述 127
7.2 指针变量的声明 127
7.3 指针变量的赋值 128
7.3.1 在声明时赋值 128
7.3.2 动态赋值 128
7.3.3 指针变量之间传递 129
7.3.4 特殊的指针变量赋值——数组 129
7.3.5 特殊的指针变量赋值——字符串 129
7.3.6 特殊的指针变量赋值——函数入口 130
7.4 指针变量的运算符 130
7.4.1 取地址运算符 130
7.4.2 取值运算符* 130
7.4.3 指针变量的运算 131
7.5 特殊的指针类型——数组指针 132
7.5.1 指向一维数组的指针 133
7.5.2 指向二维数组的指针 134
7.5.3 指向一个由n个元素所组成的数组指针 135
7.5.4 指针和数组的关系总结 136
7.5.5 数组指针和指针数组 137
7.6 特殊的指针类型——字符指针 138
7.7 综合练习 139
7.8 小结 140
7.9 习题 140
第8章 C51的结构 142
8.1 结构的声明 142
8.1.1 定义结构 142
8.1.2 声明结构变量 143
8.2 结构变量的初始化 144
8.3 结构变量的使用 146
8.4 结构数组 147
8.4.1 定义结构数组 147
8.4.2 初始化结构数组 148
8.5 结构指针 149
8.5.1 定义结构指针 149
8.5.2 使用结构指针 150
8.5.3 指向结构数组的结构指针 151
8.6 嵌套结构 152
8.7 位结构 153
8.8 综合练习 154
8.9 小结 155
8.10 习题 156
第9章 C51的聚合类型 158
9.1 联合类型 158
9.1.1 联合的定义 158
9.1.2 联合变量的声明 158
9.1.3 联合变量成员的引用 160
9.1.4 联合变量数组 160
9.1.5 联合变量指针 161
9.1.6 联合和结构的嵌套与区别 162
9.2 枚举类型 163
9.2.1 定义枚举类型 164
9.2.2 声明枚举变量 164
9.2.3 枚举变量的赋值和引用 165
9.3 类型声明 166
9.4 位域 167
9.4.1 定义位域 168
9.4.2 声明位域变量 169
9.4.3 位域变量的引用 169
9.4.4 位域指针 170
9.5 综合练习 171
9.6 小结 172
9.7 习题 172
第10章 C51的函数 173
10.1 函数 173
10.1.1 函数概述 173
10.1.2 函数的分类 173
10.1.3 main函数 175
10.2 函数的声明 175
10.2.1 函数声明一 175
10.2.2 函数声明二 176
10.2.3 函数声明三 177
10.3 函数的参数和返回值 178
10.3.1 形参和实参 178
10.3.2 数组元素作为函数参数 179
10.3.3 数组名作为函数参数 180
10.3.4 二维数组作为函数参数 180
10.3.5 指针变量作为函数参数 181
10.3.6 函数的返回值 182
10.4 函数的调用 182
10.4.1 函数调用的方式 182
10.4.2 赋值调用 183
10.4.3 引用调用 183
10.4.4 递归调用 184
10.4.5 嵌套调用 185
10.5 作用域 186
10.5.1 函数的作用域 186
10.5.2 函数代码的作用域 187
10.5.3 函数内部变量的作用域 187
10.6 C51常用库函数 187
10.6.1 字符函数库 188
10.6.2 字符串函数库 200
10.6.3 输入/输出函数库 215
10.6.4 数学函数库 225
10.6.5 标准函数库 230
10.6.6 内部函数库 237
10.7 综合练习 240
10.8 小结 241
10.9 习题 241
第11章 C51的预处理 243
11.1 预处理命令概述 243
11.2 宏定义指令 244
11.2.1 #define指令 244
11.2.2 带参数的#define指令 245
11.2.3 #undef指令 246
11.3 文件包含指令 247
11.3.1 #include指令 247
11.3.2 常用的头文件 248
11.4 条件编译指令 249
11.4.1 双分支条件编译指令 249
11.4.2 多分支条件编译指令 250
11.4.3 宏名判断指令 250
11.5 其他预处理指令 251
11.5.1 #line指令 251
11.5.2 #error指令 252
11.5.3 #pragma指令 253
11.6 综合练习 253
11.7 小结 254
11.8 习题 254
第12章 C51的存储结构 256
12.1 单片机存储结构 256
12.1.1 51系列单片机的存储区域 256
12.1.2 片内低128字节RAM区 256
12.1.3 特殊功能寄存器区(SFR) 257
12.2 存储类型 257
12.2.1 data存储类型 257
12.2.2 bdata存储类型 258
12.2.3 idata存储类型 258
12.2.4 pdata存储类型 259
12.2.5 xdata存储类型 259
12.2.6 code存储类型 259
12.2.7 sfr存储类型 260
12.2.8 sfr16存储类型 260
12.2.9 sbit存储类型 260
12.2.10 bit型变量 261
12.3 存储模式 261
12.3.1 Small模式 262
12.3.2 Compact模式 262
12.3.3 Large模式 262
12.3.4 存储模式的选择 262
12.4 存储器指针 263
12.4.1 指针存储类型 263
12.4.2 存储器指针 264
12.5 综合练习 265
12.6 小结 266
12.7 习题 266
第13章 51系列单片机的定时器/计数器 268
13.1 单片机的定时器/计数器 268
13.1.1 定时器/计数器的概述 268
13.1.2 定时器/计数器的控制寄存器 269
13.1.3 定时器/计数器的初始化 272
13.2 定时器/计数器工作模式0及其程序设计 272
13.3 定时器/计数器工作模式1及其程序设计 274
13.4 定时器/计数器工作模式2及其程序设计 276
13.5 定时器/计数器工作模式3及其程序设计 277
13.6 综合练习 279
13.7 小结 281
13.8 习题 281
第14章 51系列单片机的中断系统 282
14.1 中断系统概述 282
14.1.1 中断概述 282
14.1.2 中断的典型概念 283
14.2 单片机中断的类型 284
14.2.1 外部中断源 284
14.2.2 定时中断源 284
14.2.3 串行中断源 284
14.3 中断系统的程序访问 285
14.3.1 中断标志控制寄存器TCON 285
14.3.2 中断标志控制寄存器SCON 286
14.3.3 中断允许标志寄存器IE 286
14.3.4 中断优先级标志寄存器IP 287
14.4 中断的响应过程 288
14.4.1 中断识别 288
14.4.2 中断响应 289
14.4.3 中断处理 290
14.4.4 中断撤离 290
14.5 外部中断源及其程序设计 290
14.6 定时中断源及其程序设计 291
14.7 串行中断源及其程序设计 292
14.8 综合练习 293
14.9 小结 294
14.10 习题 295
第15章 51系列单片机的串行接口 296
15.1 串行通信概述 296
15.1.1 串行通信与并行通信 296
15.1.2 异步串行通信与同步串行通信 297
15.1.3 异步串行通信的波特率 298
15.1.4 串行通信的数据传送方式 298
15.2 51系列单片机的串行接口 299
15.2.1 单片机串行接口的内部结构 299
15.2.2 串行接口控制寄存器SCON 300
15.2.3 波特率选择寄存器PCON 302
15.2.4 波特率的程序设计 303
15.3 串行接口工作模式0及其程序设计 305
15.4 串行接口工作模式1及其程序设计 306
15.5 串行接口工作模式2及其程序设计 308
15.6 串行接口工作模式3及其程序设计 309
15.7 综合练习 310
15.8 小结 311
15.9 习题 311
第16章 51系列单片机扩展键盘 313
16.1 键盘的种类 313
16.1.1 直接式按键键盘 313
16.1.2 阵列式按键键盘 314
16.2 键盘的基本原理 315
16.2.1 按键编码 315
16.2.2 按键确认 315
16.2.3 按键消抖 316
16.2.4 读取键值 318
16.2.5 避免重复响应 318
16.2.6 多按键响应 318
16.3 键盘程序设计 318
16.3.1 直接式按键键盘的查询方式 318
16.3.2 阵列式按键键盘的扫描方式 319
16.3.3 阵列式按键键盘的线反转方式 322
16.3.4 阵列式按键键盘的中断方式 324
16.4 单片机扩展键盘实例 326
16.4.1 电路原理图 326
16.4.2 程序设计 327
16.5 综合练习 329
16.6 小结 330
16.7 习题 331
第17章 51系列单片机的显示接口 332
17.1 LED数码管的基本原理 332
17.2 单个LED数码管的直接驱动实例 334
17.3 静态驱动多个LED数码管实例 336
17.4 使用LED驱动器驱动多个LED数码管实例 338
17.4.1 LED驱动器功能简介 338
17.4.2 LED驱动器的数据传输方式 339
17.4.3 LED驱动器的控制寄存器 339
17.4.4 使用LED驱动器的电路图 342
17.4.5 程序设计 343
17.5 综合练习 346
17.6 小结 346
17.7 习题 347
第18章 51系列单片机扩展I2C接口 348
18.1 I2C总线的工作原理 348
18.2 I2C总线的寻址方式 349
18.3 I2C总线的协议 349
18.3.1 起始信号 350
18.3.2 终止信号 350
18.3.3 应答信号 350
18.3.4 非应答信号 350
18.3.5 总线数据位 350
18.3.6 数据写入 351
18.3.7 数据读出 351
18.4 I2C总线接口的EEPROM 351
18.5 I2C总线扩展实例——硬件加密 352
18.6 综合练习 356
18.7 小结 358
18.8 习题 359
第19章 51系列单片机与PC的串行通信 360
19.1 串行通信接口概述 360
19.1.1 RS-232C串行通信接口标准 360
19.1.2 RS-449串行通信接口标准 363
19.1.3 RS-423A串行通信接口标准 364
19.1.4 RS-422A串行通信接口标准 364
19.1.5 RS-485串行通信接口标准 365
19.1.6 20mA电流环串行通信接口 365
19.2 串行通信接口芯片 366
19.3 单片机与PC的串行通信实例 367
19.3.1 电路图 367
19.3.2 程序设计 368
19.4 综合练习 370
19.5 小结 372
19.6 习题 372
第20章 51系列单片机的多任务操作系统 373
20.1 RTX-51实时多任务操作系统简介 373
20.1.1 多任务系统简介 373
20.1.2 RTX-51实时多任务系统 374
20.1.3 RTX-51实时多任务系统特点 374
20.2 RTX-51 Tiny的任务管理 375
20.3 RTX-51 Tiny的系统函数 376
20.3.1 信号发送函数isr_send_signal 376
20.3.2 信号标志清除函数os_clear_signal 377
20.3.3 任务启动函数os_create_task 377
20.3.4 任务删除函数os_delete_task 378
20.3.5 当前任务号函数os_running_task_id 378
20.3.6 信号发送函数os_send_signal 378
20.3.7 等待函数os_wait 379
20.3.8 等待函数os_wait1 380
20.3.9 等待函数os_wait2 380
20.4 RTX-51与单任务程序的比较 381
20.4.1 简单的单任务C51程序 381
20.4.2 多任务循环C51程序 382
20.4.3 多任务RTX-51程序 383
20.5 RTX-51循环任务调度程序设计 384
20.6 RTX-51事件任务调度程序设计 385
20.7 RTX-51信号任务调度程序设计 386
20.8 RTX-51优先级及抢先任务切换程序设计 387
20.9 综合练习 389
20.10 小结 389
20.11 习题 390
本书系统地介绍了51系列单片机的基本概念、程序设计语言及硬件编程,并给出了一些常用的典型案例。本书言简意赅、通俗易懂,知识点覆盖全面,详细讲述了每个指令及功能的编程指南和实例,使读者能够更好地掌握51系列单片机的知识。
本书分25章,全面详细地讲述了单片机的原理、程序设计方法、编程指南及应用案例。首先介绍了51系列单片机的概述及单片机的基本结构,接着介绍了单片机的程序设计语言,包括汇编语言和单片机c51语言,其中c51语言是重点内容。然后结合单片机的各个功能部件详细讲解了单片机的硬件编程方法。最后还给出了在各个领域中常用到的一些典型案例,供读者在学习和工作中参考。
本书知识点覆盖全面、结构安排紧凑、讲解详细、实例丰富。51系列单片机的初学者通过本书可以快速掌握单片机的程序设计技术。本书对具有一定开发经验的设计人员,也有很高的参考价值。
本书附赠dvd光盘1张,引用内容包括超大容量手把手教学视频、电子教案(ppt)、编程参考宝典电子书、源代码及各章习题答案。
目 录
第1章 51系列单片机概述 1
1.1 51系列单片机概述 1
1.1.1 单片机的发展历史 1
1.1.2 51系列单片机简介 2
1.1.3 51系列单片机的应用领域 2
1.1.4 51系列单片机的发展方向 3
1.2 典型引脚结构 3
1.2.1 电源引脚 4
1.2.2 时钟引脚 4
1.2.3 并行I/O引脚 5
1.2.4 复位引脚 8
1.2.5 ALE/ 引脚 9
1.2.6 引脚 9
1.2.7 /VPP引脚 9
1.3 51系列单片机内部结构 10
1.4 中央处理器结构 12
1.4.1 算术逻辑部件(ALU) 12
1.4.2 控制器 12
1.4.3 通用寄存器 12
1.4.4 专用寄存器 13
1.4.5 特殊功能寄存器 15
1.5 存储器结构 16
1.5.1 程序存储器 16
1.5.2 扩展外部程序存储器 17
1.5.3 数据存储器 17
1.5.4 扩展外部数据存储器 19
1.6 单片机指令时序 20
1.6.1 几个基本概念 20
1.6.2 指令执行的时序 21
1.6.3 访问外部ROM的操作时序 23
1.6.4 访问外部RAM的操作时序 24
1.7 掉电保护 24
1.8 低功耗模式 25
1.8.1 省电保持模式 25
1.8.2 休眠运行模式 25
1.9 小结 26
1.10 习题 26
第2章 搭建51单片机开发环境 28
2.1 搭建51单片机硬件开发系统 28
2.1.1 单片机选型 28
2.1.2 一个单片机最小开发系统 29
2.2 搭建Keil C51软件开发环境 30
2.2.1 Keil μVision3简介 30
2.2.2 Keil μVision3系统安装需求 31
2.2.3 Keil μVision3的安装 31
2.2.4 Keil μVision3集成开发环境总揽 32
2.2.5 Keil μVision3的菜单栏 33
2.2.6 Keil μVision3的工具栏 36
2.2.7 Keil μVision3的快捷键 39
2.3 小结 39
2.4 习题 40
第3章 单片机汇编语言 41
3.1 单片机汇编语言概述 41
3.1.1 单片机汇编语言简介 41
3.1.2 简单的单片机汇编语言程序 42
3.2 伪指令 42
3.2.1 起始伪指令ORG 42
3.2.2 结束伪指令END 43
3.2.3 等值伪指令EQU 43
3.2.4 地址赋值伪指令DATA 43
3.2.5 字节保存伪指令DB 43
3.2.6 字保存伪指令DW 44
3.2.7 空间预留伪指令DS 44
3.2.8 位变量伪指令BIT 44
3.3 单片机的指令 45
3.3.1 单片机指令系统简介 45
3.3.2 单片机指令格式 45
3.3.3 单片机指令的寻址方式 46
3.3.4 51系列单片机指令集 49
3.5 单片机汇编语言的程序结构 55
3.5.1 顺序结构 55
3.5.2 分支结构 56
3.5.3 循环结构 57
3.5.4 子程序结构 58
3.5.5 查表程序结构 59
3.6 Keil μVision3使用单片机汇编程序 60
3.6.1 创建项目 60
3.6.2 编辑源文件 62
3.6.3 编译项目 62
3.6.4 仿真调试 63
3.7 综合练习 63
3.8 小结 64
3.9 习题 65
第4章 单片机C51语言基础 67
4.1 单片机C51语言概述 67
4.1.1 单片机C51语言的主要特点 67
4.1.2 “Hello world”程序 67
4.1.3 良好的编程规范 68
4.2 标识符和关键字 69
4.2.1 标识符 69
4.2.2 关键字 69
4.3 数据类型 71
4.3.1 变量和常量 71
4.3.2 整型数据 72
4.3.3 字符型数据 73
4.3.4 浮点型数据 75
4.4 分隔符 76
4.5 const修饰符 76
4.6 变量作用域 77
4.6.1 一般规则 77
4.6.2 不同存储类型变量的作用域 78
4.7 运算符 80
4.7.1 算术运算符 80
4.7.2 逻辑运算符 82
4.7.3 关系运算符 83
4.7.4 位运算符 84
4.7.5 特殊运算符 87
4.7.6 运算符的优先级 91
4.7.7 运算符的结合性 91
4.8 表达式 91
4.8.1 算术表达式 92
4.8.2 赋值表达式 92
4.8.3 逗号表达式 93
4.8.4 关系和逻辑表达式 93
4.9 综合练习 94
4.10 小结 95
4.11 习题 95
第5章 C51的语句 97
5.1 声明语句 97
5.2 表达式语句 97
5.3 复合语句 98
5.4 循环语句 99
5.4.1 for语句 99
5.4.2 while语句 100
5.4.3 do-while语句 101
5.5 条件语句 102
5.5.1 单分支if语句 102
5.5.2 双分支if语句 103
5.5.3 多分支if语句 104
5.6 开关语句 105
5.7 跳转语句 106
5.7.1 goto语句 106
5.7.2 break语句 107
5.7.3 continue语句 108
5.8 函数调用语句 108
5.9 空语句 109
5.10 返回语句 109
5.11 综合练习 110
5.12 小结 111
5.13 习题 111
第6章 C51的数组 113
6.1 数组的声明和表示 113
6.2 初始化数组元素 115
6.2.1 在声明数组时初始化 115
6.2.2 动态初始化 116
6.3 一维数组 116
6.3.1 一维数组的内存分配 116
6.3.2 一维数组的引用 117
6.3.3 一维字符串数组 118
6.4 二维数组 119
6.4.1 二维数组的声明 119
6.4.2 二维数组的初始化 120
6.4.3 二维数组的内存分配 121
6.4.4 二维字符串数组 122
6.5 多维数组 123
6.6 综合练习 124
6.7 小结 125
6.8 习题 125
第7章 C51的指针 127
7.1 地址和指针概述 127
7.2 指针变量的声明 127
7.3 指针变量的赋值 128
7.3.1 在声明时赋值 128
7.3.2 动态赋值 128
7.3.3 指针变量之间传递 129
7.3.4 特殊的指针变量赋值——数组 129
7.3.5 特殊的指针变量赋值——字符串 129
7.3.6 特殊的指针变量赋值——函数入口 130
7.4 指针变量的运算符 130
7.4.1 取地址运算符 130
7.4.2 取值运算符* 130
7.4.3 指针变量的运算 131
7.5 特殊的指针类型——数组指针 132
7.5.1 指向一维数组的指针 133
7.5.2 指向二维数组的指针 134
7.5.3 指向一个由n个元素所组成的数组指针 135
7.5.4 指针和数组的关系总结 136
7.5.5 数组指针和指针数组 137
7.6 特殊的指针类型——字符指针 138
7.7 综合练习 139
7.8 小结 140
7.9 习题 140
第8章 C51的结构 142
8.1 结构的声明 142
8.1.1 定义结构 142
8.1.2 声明结构变量 143
8.2 结构变量的初始化 144
8.3 结构变量的使用 146
8.4 结构数组 147
8.4.1 定义结构数组 147
8.4.2 初始化结构数组 148
8.5 结构指针 149
8.5.1 定义结构指针 149
8.5.2 使用结构指针 150
8.5.3 指向结构数组的结构指针 151
8.6 嵌套结构 152
8.7 位结构 153
8.8 综合练习 154
8.9 小结 155
8.10 习题 156
第9章 C51的聚合类型 158
9.1 联合类型 158
9.1.1 联合的定义 158
9.1.2 联合变量的声明 158
9.1.3 联合变量成员的引用 160
9.1.4 联合变量数组 160
9.1.5 联合变量指针 161
9.1.6 联合和结构的嵌套与区别 162
9.2 枚举类型 163
9.2.1 定义枚举类型 164
9.2.2 声明枚举变量 164
9.2.3 枚举变量的赋值和引用 165
9.3 类型声明 166
9.4 位域 167
9.4.1 定义位域 168
9.4.2 声明位域变量 169
9.4.3 位域变量的引用 169
9.4.4 位域指针 170
9.5 综合练习 171
9.6 小结 172
9.7 习题 172
第10章 C51的函数 173
10.1 函数 173
10.1.1 函数概述 173
10.1.2 函数的分类 173
10.1.3 main函数 175
10.2 函数的声明 175
10.2.1 函数声明一 175
10.2.2 函数声明二 176
10.2.3 函数声明三 177
10.3 函数的参数和返回值 178
10.3.1 形参和实参 178
10.3.2 数组元素作为函数参数 179
10.3.3 数组名作为函数参数 180
10.3.4 二维数组作为函数参数 180
10.3.5 指针变量作为函数参数 181
10.3.6 函数的返回值 182
10.4 函数的调用 182
10.4.1 函数调用的方式 182
10.4.2 赋值调用 183
10.4.3 引用调用 183
10.4.4 递归调用 184
10.4.5 嵌套调用 185
10.5 作用域 186
10.5.1 函数的作用域 186
10.5.2 函数代码的作用域 187
10.5.3 函数内部变量的作用域 187
10.6 C51常用库函数 187
10.6.1 字符函数库 188
10.6.2 字符串函数库 200
10.6.3 输入/输出函数库 215
10.6.4 数学函数库 225
10.6.5 标准函数库 230
10.6.6 内部函数库 237
10.7 综合练习 240
10.8 小结 241
10.9 习题 241
第11章 C51的预处理 243
11.1 预处理命令概述 243
11.2 宏定义指令 244
11.2.1 #define指令 244
11.2.2 带参数的#define指令 245
11.2.3 #undef指令 246
11.3 文件包含指令 247
11.3.1 #include指令 247
11.3.2 常用的头文件 248
11.4 条件编译指令 249
11.4.1 双分支条件编译指令 249
11.4.2 多分支条件编译指令 250
11.4.3 宏名判断指令 250
11.5 其他预处理指令 251
11.5.1 #line指令 251
11.5.2 #error指令 252
11.5.3 #pragma指令 253
11.6 综合练习 253
11.7 小结 254
11.8 习题 254
第12章 C51的存储结构 256
12.1 单片机存储结构 256
12.1.1 51系列单片机的存储区域 256
12.1.2 片内低128字节RAM区 256
12.1.3 特殊功能寄存器区(SFR) 257
12.2 存储类型 257
12.2.1 data存储类型 257
12.2.2 bdata存储类型 258
12.2.3 idata存储类型 258
12.2.4 pdata存储类型 259
12.2.5 xdata存储类型 259
12.2.6 code存储类型 259
12.2.7 sfr存储类型 260
12.2.8 sfr16存储类型 260
12.2.9 sbit存储类型 260
12.2.10 bit型变量 261
12.3 存储模式 261
12.3.1 Small模式 262
12.3.2 Compact模式 262
12.3.3 Large模式 262
12.3.4 存储模式的选择 262
12.4 存储器指针 263
12.4.1 指针存储类型 263
12.4.2 存储器指针 264
12.5 综合练习 265
12.6 小结 266
12.7 习题 266
第13章 51系列单片机的定时器/计数器 268
13.1 单片机的定时器/计数器 268
13.1.1 定时器/计数器的概述 268
13.1.2 定时器/计数器的控制寄存器 269
13.1.3 定时器/计数器的初始化 272
13.2 定时器/计数器工作模式0及其程序设计 272
13.3 定时器/计数器工作模式1及其程序设计 274
13.4 定时器/计数器工作模式2及其程序设计 276
13.5 定时器/计数器工作模式3及其程序设计 277
13.6 综合练习 279
13.7 小结 281
13.8 习题 281
第14章 51系列单片机的中断系统 282
14.1 中断系统概述 282
14.1.1 中断概述 282
14.1.2 中断的典型概念 283
14.2 单片机中断的类型 284
14.2.1 外部中断源 284
14.2.2 定时中断源 284
14.2.3 串行中断源 284
14.3 中断系统的程序访问 285
14.3.1 中断标志控制寄存器TCON 285
14.3.2 中断标志控制寄存器SCON 286
14.3.3 中断允许标志寄存器IE 286
14.3.4 中断优先级标志寄存器IP 287
14.4 中断的响应过程 288
14.4.1 中断识别 288
14.4.2 中断响应 289
14.4.3 中断处理 290
14.4.4 中断撤离 290
14.5 外部中断源及其程序设计 290
14.6 定时中断源及其程序设计 291
14.7 串行中断源及其程序设计 292
14.8 综合练习 293
14.9 小结 294
14.10 习题 295
第15章 51系列单片机的串行接口 296
15.1 串行通信概述 296
15.1.1 串行通信与并行通信 296
15.1.2 异步串行通信与同步串行通信 297
15.1.3 异步串行通信的波特率 298
15.1.4 串行通信的数据传送方式 298
15.2 51系列单片机的串行接口 299
15.2.1 单片机串行接口的内部结构 299
15.2.2 串行接口控制寄存器SCON 300
15.2.3 波特率选择寄存器PCON 302
15.2.4 波特率的程序设计 303
15.3 串行接口工作模式0及其程序设计 305
15.4 串行接口工作模式1及其程序设计 306
15.5 串行接口工作模式2及其程序设计 308
15.6 串行接口工作模式3及其程序设计 309
15.7 综合练习 310
15.8 小结 311
15.9 习题 311
第16章 51系列单片机扩展键盘 313
16.1 键盘的种类 313
16.1.1 直接式按键键盘 313
16.1.2 阵列式按键键盘 314
16.2 键盘的基本原理 315
16.2.1 按键编码 315
16.2.2 按键确认 315
16.2.3 按键消抖 316
16.2.4 读取键值 318
16.2.5 避免重复响应 318
16.2.6 多按键响应 318
16.3 键盘程序设计 318
16.3.1 直接式按键键盘的查询方式 318
16.3.2 阵列式按键键盘的扫描方式 319
16.3.3 阵列式按键键盘的线反转方式 322
16.3.4 阵列式按键键盘的中断方式 324
16.4 单片机扩展键盘实例 326
16.4.1 电路原理图 326
16.4.2 程序设计 327
16.5 综合练习 329
16.6 小结 330
16.7 习题 331
第17章 51系列单片机的显示接口 332
17.1 LED数码管的基本原理 332
17.2 单个LED数码管的直接驱动实例 334
17.3 静态驱动多个LED数码管实例 336
17.4 使用LED驱动器驱动多个LED数码管实例 338
17.4.1 LED驱动器功能简介 338
17.4.2 LED驱动器的数据传输方式 339
17.4.3 LED驱动器的控制寄存器 339
17.4.4 使用LED驱动器的电路图 342
17.4.5 程序设计 343
17.5 综合练习 346
17.6 小结 346
17.7 习题 347
第18章 51系列单片机扩展I2C接口 348
18.1 I2C总线的工作原理 348
18.2 I2C总线的寻址方式 349
18.3 I2C总线的协议 349
18.3.1 起始信号 350
18.3.2 终止信号 350
18.3.3 应答信号 350
18.3.4 非应答信号 350
18.3.5 总线数据位 350
18.3.6 数据写入 351
18.3.7 数据读出 351
18.4 I2C总线接口的EEPROM 351
18.5 I2C总线扩展实例——硬件加密 352
18.6 综合练习 356
18.7 小结 358
18.8 习题 359
第19章 51系列单片机与PC的串行通信 360
19.1 串行通信接口概述 360
19.1.1 RS-232C串行通信接口标准 360
19.1.2 RS-449串行通信接口标准 363
19.1.3 RS-423A串行通信接口标准 364
19.1.4 RS-422A串行通信接口标准 364
19.1.5 RS-485串行通信接口标准 365
19.1.6 20mA电流环串行通信接口 365
19.2 串行通信接口芯片 366
19.3 单片机与PC的串行通信实例 367
19.3.1 电路图 367
19.3.2 程序设计 368
19.4 综合练习 370
19.5 小结 372
19.6 习题 372
第20章 51系列单片机的多任务操作系统 373
20.1 RTX-51实时多任务操作系统简介 373
20.1.1 多任务系统简介 373
20.1.2 RTX-51实时多任务系统 374
20.1.3 RTX-51实时多任务系统特点 374
20.2 RTX-51 Tiny的任务管理 375
20.3 RTX-51 Tiny的系统函数 376
20.3.1 信号发送函数isr_send_signal 376
20.3.2 信号标志清除函数os_clear_signal 377
20.3.3 任务启动函数os_create_task 377
20.3.4 任务删除函数os_delete_task 378
20.3.5 当前任务号函数os_running_task_id 378
20.3.6 信号发送函数os_send_signal 378
20.3.7 等待函数os_wait 379
20.3.8 等待函数os_wait1 380
20.3.9 等待函数os_wait2 380
20.4 RTX-51与单任务程序的比较 381
20.4.1 简单的单任务C51程序 381
20.4.2 多任务循环C51程序 382
20.4.3 多任务RTX-51程序 383
20.5 RTX-51循环任务调度程序设计 384
20.6 RTX-51事件任务调度程序设计 385
20.7 RTX-51信号任务调度程序设计 386
20.8 RTX-51优先级及抢先任务切换程序设计 387
20.9 综合练习 389
20.10 小结 389
20.11 习题 390
