第1章 单片机概述 1
1.1数制基础 1
1.1.1计算机中的常用数制 1
1.1.2数制间的转换 4
1.1.3数值编码 7
1.1.4字符编码 8
1.2单片微型计算机 10
1.2.1单片机的概念 10
1.2.2单片机的主要特点 12
1.2.3单片机的发展现状和应用 13
1.2.4单片机应用开发的一般步骤和工具 16
1.3 51单片机代表性产品简介 21
1.3.1 Intel单片机 21
1.3.2 Atmel单片机 22
1.3.3 SST单片机 24
1.3.4资源对照 24
1.4 SST89系列单片机简介 25
1.4.1 SST89系列单片机 25
1.4.2 SST89主要特性 26
习题 27
第2章 51单片机及其指令系统 28
2.1内部结构 28
2.1.1标准51单片机的组成和结构框图 28
2.1.2中央处理器 31
2.1.3 SST89系列单片机的内部结构和新增功能模块 33
2.2外部引脚和封装 34
2.2.1标准51单片机的封装和引脚描述 34
2.2.2最小系统电路 37
2.2.3 SST89系列单片机的封装和特殊功能引脚 38
2.3存储器组织 39
2.3.1标准51单片机的存储器组织形式 39
2.3.2程序存储空间 40
2.3.3数据存储空间 41
2.3.4特殊功能寄存器SFR 42
2.3.5 SST89系列单片机的存储器组织形式 45
2.4指令系统 49
2.4.1指令格式与时序 49
2.4.2寻址方式 51
2.4.3指令的分类 57
2.4.4数据传送类指令 58
2.4.5算术运算类指令 64
2.4.6逻辑运算类指令 68
2.4.7转移类指令 71
2.4.8位操作类指令 74
习题 76
第3章 单片机汇编语言程序设计 78
3.1 51单片机汇编语言及其常用伪指令 78
3.1.1汇编语言 78
3.1.2常用汇编语言伪指令 79
3.2顺序结构程序设计 82
3.3选择结构程序设计 83
3.3.1基本两分支结构 83
3.3.2多分支结构 86
3.4循环结构程序设计 88
3.4.1单循环结构 88
3.4.2多重循环结构 92
3.5子程序设计 93
3.5.1子程序的调用与返回 93
3.5.2参数传递 94
3.5.3现场的保护与恢复 94
3.5.4子程序举例 95
3.5.5汇编中断程序 97
3.6查表及散转程序设计 98
3.6.1查表程序 98
3.6.2散转程序 99
习题 102
第4章 单片机C语言程序设计 104
4.1 51单片机C语言C51概述 104
4.1.1 C51的特点 104
4.1.2与标准C的主要差异 105
4.2数据类型 106
4.2.1常量与变量 106
4.2.2字符型 107
4.2.3整型 108
4.2.4实型 109
4.2.5位类型 109
4.2.6特殊功能寄存器类型 109
4.2.7 const和volatile修饰符 111
4.3存储类型与存储模式 112
4.3.1存储类型 112
4.3.2存储模式 113
4.3.3绝对地址访问和变量定位 114
4.4运算符与表达式 115
4.4.1表达式 116
4.4.2赋值与复合赋值运算符 116
4.4.3算术运算符 117
4.4.4关系运算符 118
4.4.5逻辑运算符 118
4.4.6位运算符 119
4.4.7其他运算符 120
4.4.8数据类型转换 121
4.5基本程序流程 122
4.5.1 C51语句 122
4.5.2 C51程序典型结构 122
4.5.3选择结构 124
4.5.4循环结构 126
4.5.5控制转移语句 129
4.6函数 130
4.6.1函数与函数原型 130
4.6.2程序中变量的作用域与生存期 134
4.6.3 C51中断函数 136
4.6.4可重入函数 138
4.7数组和指针 138
4.7.1数组 138
4.7.2指针 142
4.8结构体、共用体和枚举 147
4.8.1结构体 147
4.8.2共用体 149
4.8.3枚举 151
4.9预处理命令 152
4.9.1文件包含命令 152
4.9.2标准51头文件“reg51.h” 153
4.9.3宏定义命令 154
4.9.4编译器控制命令 156
4.10编写单片机程序的一些建议 156
习题 158
第5章 集成开发环境Keil μVision及其使用 159
5.1 Keil μVision软件简介 159
5.2 Keil集成开发环境IDE 160
5.2.1主界面 160
5.2.2主菜单 161
5.2.3工具栏 163
5.3用Keil创建项目 165
5.3.1新建项目 165
5.3.2编写代码加入项目 167
5.3.3项目配置 169
5.3.4编译和连接 170
5.4 K eil仿真调试 171
5.4.1仿真方式 171
5.4.2软件仿真 173
5.4.3调试窗口 174
5.5 SST89单片机的仿真与程序固化 177
5.5.1 SST89单片机的SoftICE简介 177
5.5.2与微机的连接方式和Keil端设置 178
5.5.3在线仿真 179
5.5.4 SST89单片机的程序固化 179
习题 183
第6章 单片机硬件资源及其软件仿真 184
6.1输入输出口 184
6.1.1 MCS-51单片机的输入输出口 184
6.1.2输入输出操作的程序实现 187
6.1.3使用输入输出口时要注意的一些问题 188
6.1.4用Keil仿真输入输出口举例 188
6.2中断 189
6.2.1中断简介 189
6.2.2 MCS-51单片机的中断 190
6.2.3使用中断时要注意的一些问题 193
6.2.4用Keil仿真中断举例 194
6.3定时/计数器 196
6.3.1 MCS-51单片机的定时/计数器 196
6.3.2定时/计数器的工作方式 197
6.3.3使用定时/计数器时要注意的一些问题 199
6.3.4用Keil仿真定时/计数器举例 199
6.4串行口 202
6.4.1串行通信简介 202
6.4.2 MCS-51单片机的串行口 204
6.4.3串行口的工作方式 205
6.4.4波特率设置 207
6.4.5使用串行口时要注意的一些问题 208
6.4.6用Keil仿真串行口举例 209
习题 214
第7章 单片机典型外围接口及其程序设计 216
7.1键盘接口 216
7.1.1键盘 216
7.1.2独立式按键 217
7.1.3矩阵式按键 218
7.1.4查询方式程序设计举例 219
7.1.5中断方式程序设计举例 220
7.2显示接口 221
7.2.1显示器 221
7.2.2静态显示 222
7.2.3动态显示 224
7.2.4静态显示程序设计举例 225
7.2.5动态显示程序设计举例 226
7.3存储器扩展 228
7.3.1 RAM存储器扩展 228
7.3.2 ROM存储器扩展 233
7.4输入输出口扩展 237
7.4.1可编程并行接口芯片8255A概述 237
7.4.2使用8255A扩展并行输入输出口 243
7.5 A/D和D/A接口 246
7.5.1 A/D和D/A简介 246
7.5.2 A/D转换器ADC0809简介 247
7.5.3 ADC0809与单片机的接口 249
7.5.4 D/A转换器DAC0832简介 252
7.5.5 DAC与单片机的接口 254
7.6单片机串行通信 256
7.6.1双机通信 256
7.6.2多机通信 263
7.7 I2 C总线接口 268
7.7.1 I2C总线 268
7.7.2应用举例 270
习题 279
第8章 单片机EDA仿真软件Proteus 281
8.1 Proteus简介 282
8.1.1简介 282
8.1.2主界面 282
8.1.3主菜单 283
8.1.4工具栏 284
8.1.5光标样式 287
8.2绘制原理图 288
8.2.1绘制原理图的基本步骤 288
8.2.2查找和放置元件 288
8.2.3标注元件 290
8.2.4布线 291
8.3 Proteus仿真和仿真工具 292
8.3.1 Proteus仿真 292
8.3.2基本仿真工具 293
8.3.3虚拟仪器 297
8.3.4仿真图表 302
8.4在Proteus中仿真51单片机的基本步骤 306
8.4.1绘制原理图 306
8.4.2编辑程序 306
8.4.3编译及加载程序 307
8.4.4系统仿真调试 308
8.5 Proteus与Keil联合调试 311
8.5.1仿真平台搭建 311
8.5.2调试步骤 312
习题 314
第9章 单片机应用实例仿真 315
9.1具有闹钟功能的电子时钟 315
9.1.1实例分析 315
9.1.2仿真电路 317
9.1.3软件流程 318
9.1.4电子时钟源程序 321
9.1.5仿真调试要点 327
9.2电子温度计 329
9.2.1实例分析 329
9.2.2 1-Wire式数字温度传感器DS18B20 329
9.2.3仿真电路 333
9.2.4软件流程 334
9.2.5电子温度计源程序 335
9.2.6仿真调试要点 340
9.3分布式环境温度监测 342
9.3.1实例分析 342
9.3.2仿真电路 342
9.3.3通信协议和软件流程 343
9.3.4下位机源程序 344
9.3.5仿真调试要点 346
附录A缩略词汇 350
参考文献 352