1.1 单片机的发展及其应用 1
第1章 MCS-51系列单片机 1
1.2 MCS-51系列单片机体系结构 2
1.2.1 中央处理器 2
1.2.2 存储器 4
1.2.3 外部引脚 8
1.2.4 时钟模块 9
1.2.5 其他内部资源 10
1.2.6 MCS-51系列单片机工作方式 10
1.3 常见的MCS-51系列单片机 12
第2章 MCS-51单片机指令系统 15
2.1 MCS-51单片机寻址方式 15
2.1.1 概述 15
2.1.4 寄存器寻址 16
2.1.5 寄存器间接寻址 16
2.1.2 立即寻址 16
2.1.3 直接寻址 16
2.1.6 变址间接寻址 17
2.1.7 相对寻址 17
2.2 MCS-51单片机指令系统 17
2.2.1 数据传送类指令 17
2.2.2 算术运算类指令 19
2.2.3 逻辑操作类指令 20
2.2.4 位操作类指令 22
2.2.5 控制转移类指令 23
2.2.6 汇编程序和伪指令 26
2.3 MCS-51单片机汇编程序设计 27
3.2 C51语言编译器介绍 31
3.1 概述 31
第3章 Keil C51语言 31
3.3 Keil uVision2集成开发环境 32
3.3.1 uVision2界面以及菜单介绍 32
3.3.2 uVision2开发流程 38
第4章 数据类型、运算符和表达式 44
4.1 C51支持的数据类型 44
4.2 常量和变量 45
4.2.1 常量 45
4.2.2 变量 45
4.3 C51存储器、寄存器定义 45
4.3.1 C51的数据存储类型 46
4.3.2 寄存器 47
4.3.3 位变量 47
4.4 C51的算术和赋值运算 47
4.4.2 赋值运算符和赋值表达式 48
4.4.1 算术运算符和算术表达式 48
4.5 逻辑运算 49
4.6 关系运算 49
4.7 位操作 50
4.7.1 位逻辑运算 50
4.7.2 移位运算 50
4.8 自增减运算、复合运算、逗号运算 51
4.8.1 自增减运算 51
4.8.2 复合运算 51
4.8.3 逗号运算 51
4.9 运算符的优先级 52
第5章 C51控制流 54
5.1 C51的3种基本结构 54
5.1.1 顺序结构 54
5.1.3 循环结构 55
5.1.2 选择结构 55
5.2 选择语句 56
5.2.1 if语句 56
5.2.2 switch语句 58
5.2.3 选择语句的嵌套 59
5.3 循环语句 59
5.3.1 while语句 59
5.3.2 do while语句 60
5.3.3 for语句 60
5.3.4 循环语句总结 61
5.4 break语句、continue语句和goto语句 62
5.4.1 break语句 62
5.4.2 continue语句 63
5.4.3 goto语句 64
6.1 函数的分类 65
第6章 函数 65
6.2 函数的定义 66
6.2.1 函数定义的一般形式 66
6.2.2 函数的参数 67
6.2.3 函数的值 67
6.3 函数的调用 68
6.3.1 函数调用的方法 68
6.3.2 函数的声明 68
6.3.3 函数的递归调用 69
6.3.4 函数的嵌套调用 71
6.4 内部函数和外部函数 72
6.4.1 内部函数 72
6.4.2 外部函数 72
6.5 变量类型以及存储方式 72
6.5.1 局部变量 73
6.5.2 全局变量 74
第7章 数组和指针 76
7.1 数组 76
7.1.1 一维数组 76
7.1.2 二维数组 77
7.1.3 字符数组 77
7.1.4 数组的存储方式 78
7.2 指针 79
7.2.1 指针和指针变量 79
7.2.2 指针变量的定义 80
7.2.3 指针变量的引用 80
7.2.4 C51的指针类型 80
7.3 数组和指针 81
7.3.1 指针与一维数组 81
7.4.1 字符串的表达形式 83
7.4 字符串和指针 83
7.3.2 指针与二维数组 83
7.4.2 字符串指针变量和字符数组的区别 84
7.5 数组、指针和函数的联系 84
7.5.1 数组作为函数的参数 84
7.5.2 指针作为函数参数 85
7.5.3 返回指针的函数 86
7.6 指针数组和指向指针的指针 87
第8章 结构、联合和枚举 89
8.1 结构体 89
8.1.1 结构体和结构体变量的定义 89
8.1.2 结构体变量的引用 90
8.1.3 结构体变量的初始化和赋值 91
8.1.4 结构体变量数组 91
8.1.5 指向结构体变量的指针 92
8.1.6 用指向结构的指针变量作为函数的参数 92
8.2.1 联合体变量的定义 94
8.2 联合体 94
8.2.2 联合体变量的使用 95
8.3 枚举 96
8.3.1 枚举变量的定义 96
8.3.2 枚举变量的应用 96
第9章 程序设计技巧 98
9.1 养成好的编程习惯 98
9.1.1 程序的总体设计 98
9.1.2 命名规则 99
9.1.3 编程规范 99
9.2 宏定义 100
9.2.1 简单的宏定义 100
9.2.2 带参数的宏定义 101
9.3 条件编译 102
9.4 具体指针的应用 104
9.5 中断响应快速性的一种实现 106
9.6 一些关键字的使用 108
9.7 使用移位运算代替乘除和求模等运算 110
第10章 单片机基本内部资源 112
10.1 并行口 112
10.1.1 P0口 112
10.1.2 P1口 113
10.1.3 P2口 114
10.1.4 P3口 114
10.1.5 并行口的应用 114
10.2 中断系统 115
10.2.1 中断向量地址和中断标志位 116
10.2.2 中断控制 117
10.2.3 中断响应 119
10.2.4 中断服务程序设计 120
10.3 定时计数器 122
10.3.1 定时计数器的控制 122
10.3.2 定时计数器的工作方式 123
10.3.3 定时计数器的使用 125
10.3.4 定时计数器T2 131
10.4 串行口 135
10.4.1 串行口的相关寄存器 136
10.4.2 串行口工作方式0 137
10.4.3 串行口工作方式1 140
10.4.4 串行口工作方式2、3 142
10.4.5 串行口应用技巧 146
10.5 外部中断 149
10.6 单片机内部资源应用技巧 152
10.6.1 外部中断扩展 152
10.6.2 中断服务子程序时间误差 154
10.6.3 热启动和冷启动 159
10.6.4 软件模拟硬件 160
10.6.5 单片机中断资源分配和使用软件扩展多级中断 165
10.6.6 单片机串行口通信波特率自适应 169
第11章 单片机资源扩展 174
11.1 扩展并行口 174
11.1.1 不可编程并行口扩展 174
11.1.2 可编程并行口扩展 180
11.2 扩展定时计数器8253/8254 184
11.2.1 8253的内部结构 184
11.2.2 8253的引脚 185
11.2.3 8253的控制寄存器和工作方式 186
11.2.4 8253和51系列单片机接口 191
11.3 扩展外部内存 193
11.3.1 扩展程序内存 193
11.3.2 扩展外部数据存储器 194
11.3.3 同时扩展外部程序内存和数据存储器 196
11.4 I2C总线扩展 197
11.5 扩展其他资源 210
11.5.1 模拟比较器 210
11.5.2 时钟芯片 215
11.5.3 温度传感器 223
11.5.4 看门狗(Watch Dog) 228
11.5.5 SPI(同步串行外部设备接口) 230
11.5.6 ICP、ISP和IAP 231
第12章 单片机输入输出通道 233
12.1 人体输入设备 233
12.1.1 按键 233
12.1.2 行列扫描键盘 235
12.2.1 基本显示设备 239
12.2 输出显示设备 239
12.2.2 数码管的软件译码和硬件译码 241
12.2.3 数码管的软件译码 242
12.2.4 数码管的硬件译码 244
12.2.5 液晶显示器 248
12.2.6 液晶显示器的应用 249
12.3 输入通道 257
12.3.1 输入通道简介 257
12.3.2 数字信号和开关信号 258
12.3.3 频率信号 260
12.3.4 模拟开关和采样保持器 262
12.3.5 模拟/数字变换 264
12.3.6 扩展A/D 266
12.3.7 ADC0804的应用 269
12.4 输出通道 272
12.4.1 开关量输出 272
12.4.2 数字/模拟变换 274
12.4.3 扩展D/A 275
12.4.4 DAC0832的应用 277
12.4.5 直流电动机控制 279
第13章 单片机应用系统 283
13.1 最小单片机系统设计 283
13.1.1 单片机振荡电路设计 284
13.1.2 单片机复位电路 284
13.2 MON-51仿真器开发 287
13.2.1 MON-51仿真器简介 287
13.2.2 MON-51仿真器硬件设计 288
13.2.3 MON-51仿真器软件环境及其配置 288
13.2.4 MON-51仿真器的使用 292
13.2.5 MON-51设计总结 297
13.3.1 IC卡简介 298
13.3 IC卡读卡器开发 298
13.3.2 IC卡读卡器硬件 299
13.3.3 存储卡软件系统设计 300
13.3.4 加密卡软件系统设计 304
第14章 单片机系统开发技巧 323
14.1 单片机系统可靠性设计 323
14.1.1 系统设计原则 323
14.1.2 硬件系统可靠性设计 324
14.1.3 电路板图可靠性设计 325
14.1.4 软件系统可靠性设计 327
14.2 单片机系统调试 333
14.2.1 单片机开发系统 333
14.2.2 单片机系统硬件调试 336
14.2.3 单片机系统软件调试 338
14.2.4 单片机系统综合调试 338
14.2.5 单片机系统调试技巧 339