1.1 8051单片机的特点 1
第一章 单片机基础知识 1
1.2 8051的内结构 2
1.2.1 中央处理器 3
1.2.2 存储器组织 5
1.2.3 片内并行接口 8
1.2.4 8051的内部资源 9
1.2.5 8051的芯片引脚 10
1.2.6 单片机的工作方式 11
1.3 8051的系统扩展 13
1.3.1 外部总线的扩展 13
1.3.2 外部程序存储器的扩展 14
1.3.3 外部数据存储器的扩展 17
1.4.1 寻址方式 19
1.4 8051指令系统 19
1.4.2 指令说明 21
1.4.3 伪指令 26
1.4.4 指令系统表 28
1.5 实用程序设计 32
习题一 34
第二章 C与8051 37
2.1 8051的编程语言 37
2.2 Cx51编译器 38
2.3 KEIL 8051开发工具 39
2.4 KEIL Cx51编程实例 43
2.5 Cx51程序结构 48
习题二 49
3.1 数据与数据类型 50
第三章 Cx51数据与运算 50
3.2 常量与变量 51
3.3 Cx51数据的存储类型与8051存储器结构 53
3.4 8051特殊功能寄存器(SFR)及其Cx51定义 58
3.5 8051并行接口及其Cx51定义 60
3.6 位变量(BIT)及其Cx51定义 61
3.7 Cx51运算符、表达式及其规则 63
3.7.1 Cx51算术运算符及其表达式 63
3.7.2 Cx51关系运算符、表达式及优先级 64
3.7.3 Cx51逻辑运算符、表达式及优先级 65
3.7.4 Cx51位操作及其表达式 66
3.7.5 自增减运算符、复合运算符及其表达式 71
习题三 72
4.1.1 顺序结构及其流程图 74
4.1.2 选择结构及其流程图 74
4.1 C语言程序的基本结构及其流程图 74
第四章 Cx51流程控制语句 74
4.1.3 循环结构及其流程图 75
4.2 选择语句 77
4.2.1 选择语句if 77
4.2.2 switch/case语句 79
4.3 循环语句 80
4.3.1 while语句 81
4.3.2 do while语句 82
4.3.3 for循环语句 83
习题四 86
第五章 Cx51构造数据类型 87
5.1 数组 87
5.1.1 一维数组 87
5.1.2 二维数组 90
5.1.3 字符数组 91
5.1.4 查表 92
5.1.5 数组与存储空间 92
5.2 指针 93
5.2.1 指针的基本概念 93
5.2.2 数组指针和指向数组的指针变量 96
5.2.3 指向多维数组的指针和指针变量 100
5.2.4 关于KEIL Cx51的指针类型 101
5.3 结构 102
5.3.1 结构的定义和引用 103
5.3.2 结构数组 106
5.3.3 指向结构类型数据的指针 107
5.4 共用体 109
5.5 枚举 111
习题五 113
第六章 Cx51函数 114
6.1 函数的分类 115
6.2 函数的定义 115
6.3 函数的参数和函数值 117
6.4 函数的调用 119
6.4.1 函数调用的一般形式 119
6.4.2 函数调用的方式 119
6.4.3 对被调用函数的说明 120
6.4.4 函数的嵌套和递归调用 121
6.4.5 函数的递归调用 121
6.4.6 用函数指针变量调用函数 123
6.5 数组、指针作为函数的参数 125
6.5.1 用数组作为函数的参数 125
6.5.2 用指向函数的指针变量作为函数的参数 126
6.5.3 用指向结构的指针变量作为函数的参数 128
6.5.4 返回指针的函数 130
习题六 131
第七章 模块化程序设计 132
7.1 基本概念 132
7.1.1 程序的组成 132
7.1.2 常用术语 132
7.1.3 文件命名常规 134
7.2 模块化程序开发 135
7.2.1 采用模块编程的优点 135
7.2.2 模块化程序开发过程 135
7.3 汇编和编译 136
7.3.1 使用汇编语言的模块化设计 136
7.3.2 使用C语言的模块化设计 139
7.4 覆盖和共享 140
7.4.1 覆盖 140
7.4.2 共享 140
7.5 库和链接器/定位器 142
7.5.1 库 142
7.5.2 链接器/定位器 142
7.6 混合编程 147
7.6.1 混合编程介绍 147
7.6.2 参数传递 148
7.6.3 混合编程实例 152
7.6.4 根据硬件环境的配置 157
7.7 程序优化 157
习题七 158
8.1.1 中断源 159
第八章 8051内部资源的C编程 159
8.1 中断 159
8.1.2 中断的控制 160
8.1.3 中断响应 162
8.1.4 寄存器组切换 164
8.1.5 中断编程 165
8.2 定时器/计数器 167
8.2.1 与T/C有关的特殊功能寄存器 168
8.2.2 定时器/计数器的工作方式 169
8.2.3 定时器/计数器的初始化 170
8.2.4 定时器/计数器的应用实例 171
8.3 串行口 177
8.3.1 与串行口有关的SFR 177
8.3.2 串行口的工作方式 178
8.3.3 串行口初始化 179
8.3.4 串行口应用范例 180
习题八 187
第九章 8051扩展资源的C编程 188
9.1 可编程外围定时器8253 188
9.1.1 8253的结构和引脚 188
9.1.2 8253的工作方式和控制字 189
9.1.3 8253与8051的接口 191
9.2 可编程外围并行接口8255 193
9.2.1 8255的结构和引脚 193
9.2.2 8255的命令字和工作方式 194
9.2.3 8255与8051的接口 196
9.3 实时时钟/日历芯片146818 197
9.3.1 MC146818芯片的引脚 197
9.3.2 片内结构和寄存器 198
9.3.3 MC146818与8051的接口电路 200
9.4 可编程接口芯片8155 202
9.4.1 8155的结构和引脚 202
9.4.2 8155的命令字、状态字及工作方式 203
9.4.3 8155与8051的接口 205
习题九 206
第十章 8051输出控制的C编程 208
10.1 8位D/A芯片DAC0832 208
10.1.1 DAC0832的结构和引脚 208
10.1.2 8051与DAC0832的接口电路 209
10.2 12位D/A芯片AD7521 211
10.2.1 AD7521的引脚 212
10.2.2 AD7521与8051的接口 212
10.3.1 步进电机及其工作方式 213
10.3 步进电机控制 213
10.3.2 步进电机与单片机的接口 214
习题十 218
第十一章 8051数据采集的C编程 220
11.1 8位A/D芯片ADC0809 220
11.1.1 ADC0809的结构和引脚 220
11.1.2 ADC0809与8051的接口 221
11.2 12位A/D芯片AD574 223
11.2.1 AD574的结构和引脚 223
11.2.2 AD574与8051的接口 224
11.3 V/F变换芯片AD650 226
11.4 频率量的测量 229
11.4.1 测量频率法 229
11.4.2 频率脉冲的测量周期法 231
习题十一 233
第十二章 8051机间通信的C编程 234
12.1 点对点的串行异步通信 234
12.1.1 通信双方的硬件连接 234
12.1.2 通信双方的约定 234
12.1.3 点对点通信编程 235
12.2 多机通信 237
12.2.1 通信接口 237
12.2.2 通信协议 238
12.2.3 通信程序 238
习题十二 245
第十三章 8051人机交互的C编程 246
13.1 键盘和数码显示 246
13.1.1 行列式键盘与8051的接口 246
13.1.2 七段数码显示与8051的接口 248
13.2 可编程键盘/显示接口芯片8279 251
13.2.1 8279内部结构和引脚 251
13.2.2 8279的命令字和状态字 253
13.2.3 8279和8051的接口 255
13.3 语音芯片TSP5220 258
13.3.1 TSP5220片内结构和引脚 258
13.3.2 TSP5220的命令字和状态字 259
13.3.3 TSP5220语音合成器与单片机的接口 260
13.4 TPμp打印机 262
13.4.1 TPμp打印机的接口信号 262
13.4.2 字符代码和汉字 262
13.4.3 打印命令 265
13.4.4 TPμp-TF与8051的接口和编程 266
13.5.1 字符型LCD的结构和引脚 268
13.5 字符型LCD显示模块 268
13.5.2 显示板控制器的指令系统 270
13.5.3 LCD显示板与单片机的接口和编程 271
13.6 点阵型LCD显示模块 273
13.6.1 HD61830的特点和引脚 273
13.6.2 HD61830指令集 274
13.6.3 与内藏HD61830的液晶模块的接口和编程 276
习题十三 284
附录A μVision2集成开发环境使用 285
A.1 菜单栏命令 285
A.2 创建应用 290
A.2.1 创建项目 290
A.3 调试程序 295
A.3.1 μVision2调试器 295
A.2.2 项目目标和文件组 295
A.3.2 HELLO:第一个80C51 C程序 300
附录B KEIL Cx51上机指南 304
B.1 编译器 304
B.1.1 Cx51编译器控制命令 305
B.1.2 预处理器 315
B.1.3 Cx51运行库 315
B.2 Ax51宏汇编器 325
B.2.1 汇编伪指令 325
B.2.2 汇编控制命令 327
B.3 链接器/定位器和实用工具 328
B.3.1 链接器/定位器的控制命令 328
B.3.2 库管理器LIBx51 331
B.3.3 Object-Hex转换器 332