第1章 概述 1
1.0引言 1
1.1单片机的概念及应用 1
1.2单片机如何操作 2
1.3单片机内部结构 3
1.3.1只读存储器(ROM) 4
1.3.2随机读写存储器(RAM) 4
1.3.3电可擦除可编程只读存储器(EEPROM) 4
1.3.4特殊功能寄存器(SFR) 4
1.3.5程序计数器(PC) 4
1.3.6中央处理单元(CPU) 4
1.3.7通用输入/输出端口(GPIO) 5
1.3.8时钟振荡器(OSC) 5
1.3.9定时器/计数器(TIMER) 6
1.3.10看门狗定时器(WDT) 7
1.3.11电源电路 8
1.3.12串行通信接口(UART) 8
1.3.13用户程序 9
1.4单片机应用开发流程漫画 10
第2章 标准80C51单片机架构 12
2.1什么是标准80C51 12
2.2封装形式和引脚功能 13
2.3通用并行输入/输出端口 14
2.3.1 I/O端口 14
2.3.2 I/O端口引脚 15
2.3.3 P0~P3端口功能和内部结构 16
2.3.4端口引脚的电流上限 17
2.4存储器组织方式 18
2.4.1程序存储器ROM 18
2.4.2数据存储器RAM 19
2.4.3辅助RAM 19
2.4.4存储器扩展 19
2.4.5寻址方式 21
2.5特殊功能寄存器 22
2.5.1寄存器A(累加器) 23
2.5.2寄存器B 23
2.5.3通用寄存器组(R0~R7) 23
2.5.4程序状态字寄存器(PSW) 24
2.5.5数据指针寄存器( DPTR) 24
2.5.6堆栈指针寄存器(SP) 24
2.5.7端口寄存器(P0~P3) 25
2.6定时器/计数器 26
2.6.1定时器/计数器的基本用途 26
2.6.2定时器/计数器T0 27
2.6.3定时器/计数器T1 34
2.7通用异步收发器 34
2.7.1关于串行通信的背景知识 35
2.7.2标准80C51的UART接口 45
2.8中断逻辑 52
2.8.1中断使能控制寄存器IE 53
2.8.2中断优先级 54
2.8.3中断优先级寄存器IP 55
2.8.4中断处理 55
2.8.5单步执行控制 56
2.8.6复位控制 56
2.9电源节能控制 57
2.9.1电源控制寄存器PCON 57
2.9.2待机模式 58
2.9.3停机模式 58
第3章80C51指令系统 59
3.0引言 59
3.1指令的描述方法 59
3.2指令的执行时序 61
3.3指令的分类方法 62
3.3.1数据传送类指令 62
3.3.2算术运算类指令 62
3.3.3逻辑运算类指令 64
3.3.4程序跳转类指令 65
3.3.5位操作类指令 66
3.4指令的功能解析 67
第4章 汇编语言程序设计基础 107
4.0引言 107
4.1汇编语言语句及语法 107
4.1.1汇编语言的语句成分 107
4.1.2汇编语言语法 108
4.2操作数 109
4.2.1数制 109
4.2.2表达式 109
4.2.3符号 110
4.2.4标号 111
4.3伪指令 111
4.3.1 EQU伪指令 111
4.3.2 SET伪指令 112
4.3.3 BIT伪指令 112
4.3.4 CODE伪指令 112
4.3.5 DATA伪指令 112
4.3.6 IDATA伪指令 112
4.3.7 XDATA伪指令 113
4.3.8 ORG伪指令 113
4.3.9 USING伪指令 113
4.3.10 END伪指令 113
4.4用于存储器段选的伪指令 114
4.4.1 DS伪指令 114
4.4.2 DBIT伪指令 115
4.4.3 DB伪指令 115
4.4.4 DW伪指令 115
4.4.5 IF,ENDIF和ELSE伪指令 116
4.5汇编器控制伪指令 116
4.5.1$INCLUDE伪指令 117
4.5.2$MOD8253伪指令 117
第5章 新型80C51单片机AT89S8253 118
5.0引言 118
5.1硬件架构、封装形式和引脚功能 119
5.2存储器组织 121
5.2.1程序存储器(ROM) 121
5.2.2数据存储器(RAM) 122
5.2.3电可擦除可编程存储器EEPROM 122
5.2.4存储器扩展 122
5.2.5寻址方式 122
5.3特殊功能寄存器SFR 123
5.3.1累加器A 123
5.3.2寄存器B 124
5.3.3程序状态字PSW 124
5.3.4堆栈指针SP 124
5.3.5端口寄存器P0、P1、P2和P3 124
5.3.6工作寄存器R0~R7 124
5.3.7辅助寄存器AUXR 124
5.3.8时钟寄存器CLKREG 125
5.3.9数据指针寄存器DPTR 125
5.3.10 EEPROM存储器的读写 126
5.3.11 EEPROM读写控制寄存器 127
5.3.12可位寻址寄存器归纳列表 127
5.3.13非可位寻址寄存器归纳列表 129
5.4看门狗定时器WDT 130
5.4.1 AT89S8253看门狗的应用 131
5.4.2看门狗控制寄存器WDTCON 132
5.5中断逻辑INT 133
5.5.1中断允许寄存器IE 133
5.5.2中断优先权 134
5.5.3中断优先权寄存器IP 135
5.5.4中断优先权高位寄存器IPH 135
5.5.5中断处理 136
5.6定时器/计数器 137
5.6.1定时器/计数器T0和T1 137
5.6.2定时器/计数器T2 137
5.6.3定时器T2控制寄存器T2CON 137
5.6.4定时器T2的输入捕捉模式 138
5.6.5定时器T2的自动重载模式 139
5.6.6定时器T2的波特率发生器模式 141
5.6.7定时器T2的可编程时钟输出模式 142
5.7增强型UART 143
5.7.1增强型UART相关的寄存器 143
5.7.2帧错误检测 143
5.7.3多机通信中的自动地址识别 145
5.8串行外设接口SPI 147
5.8.1背景知识和基本概念 147
5.8.2 AT89S8253的SPI接口 152
5.9电源节能控制和时钟配置方法 159
5.9.1节电控制技术 159
5.9.2时钟配置方法 159
5.10编程时容易出错的情况 159
5.11 AT89S8253单片机的电压特性 160
第6章 上手制作实验范例 162
6.1最小单片机应用系统的外接电路 162
6.1.1电源供应电路 162
6.1.2复位信号电路 163
6.1.3时钟信号电路 163
6.2常用外扩器件及其接口技术 163
6.2.1拨动开关和按钮开关 163
6.2.2光电耦合器 166
6.2.3继电器 166
6.2.4发光二极管 167
6.2.5 LED数码管显示器 169
6.2.6液晶显示器LCD( 3种类型) 170
6.2.7基于HD44780的字符点阵式LCD模块 173
6.3实验开发范例 186
6.3.1如何驱动一只LED闪烁 186
6.3.2看门狗WDT的应用方法 190
6.3.3定时器T0方式1的用法 192
6.3.4定时器T0方式3的用法 193
6.3.5同时利用定时器T0和T1的方法 196
6.3.6定时器T2的应用方法 197
6.3.7外部中断的应用方法 199
6.3.8驱动LED数码管显示器的电路设计 201
6.3.9写一个数字到LED数码管显示器 201
6.3.10改写一位数字到LED数码管显示器 203
6.3.11写2位数字到LED数码管显示器 205
6.3.12驱动4位LED数码管显示器 206
6.3.13 LED数码管显示器用作2位计数器 207
6.3.14 EEPROM的读写方法 209
6.3.15如何通过UART串口接收数据 211
6.3.16如何通过UART串口发送数据 214
6.3.17写信息到LCD显示器的方法 215
6.3.18二进制到十进制数据转换方法 222
第7章 学习/实验/开发工具软件和硬件 224
7.1从0起步学开发 224
7.1.1如何迈出第一步 224
7.1.2利用汇编语言编写程序 224
7.1.3利用汇编器汇编程序 224
7.1.4往单片机烧写程序 225
7.1.5开发工具软件 226
7.1.6开发工具硬件 227
7.2 Easy8051A开发系统及其单元电路 229
7.2.1多样化的单片机插座 230
7.2.2内建USB式编程器电路 231
7.2.3电源电路 232
7.2.4 8MHz时钟振荡器 233
7.2.5输出引脚状态指示——LED 234
7.2.6输入引脚信号激励——按钮开关 235
7.2.7七段LED数码管显示器 236
7.2.8字符型和图像型LCD显示器 237
7.2.9 RS232串行通信接口 238
7.2.10数字温度传感器DS18B20 238
7.2.11 12位模数转换器MCP3204 240
7.2.12 12位数模转换器MCP4921 241
7.2.13外引端口的10针连接器 242
7.3一款AT89S52单片机学习板 243
7.3.1系统描述 243
7.3.2硬件接线方法 248
7.3.3编程器安装方法 250
7.3.4编程器使用方法 252
7.4一款经济实用的80C51编程学习板 254
7.5 AT89S51和P89C51RD2两种ISP编程方法 258
7.5.1背景简介 258
7.5.2传统的离线式并行编程技术 259
7.5.3利用SPI接口的ISP串行编程方法 261
7.5.4利用UART接口的ISP串行编程方法 265
7.5.5 SPI和UART两种ISP串行编程的对比 269
第8章集成开发环境(μVision2)及其虚拟仿真技术 272
8.1概述 272
8.1.1 KEIL软件包功能简介 272
8.1.2 KEIL软件的安装、升级或拆除 274
8.2 μVision2如何打开和关闭 276
8.2.1 μVisionn2的打开 276
8.2.2 μVision2工作环境简介 277
8.2.3查看KEIL软件包各组件的版本 278
8.2.4 μVision2所能模拟的片内资源 278
8.2.5 μVision2的关闭 279
8.3创建和编辑文件和项目 280
8.3.1创建和编辑一个源文件(.ASM) 280
8.3.2如何拆分编辑窗口 283
8.3.3创建一个新项目(.uv2 ) 284
8.3.4在项目中添加或删除文件 285
8.3.5在项目中建立和添加说明文件 286
8.3.6在项目中添加或删除文件组 288
8.3.7如何制作调试目标文件(OMF51) 289
8.4调试项目 292
8.4.1切换到调试环境 292
8.4.2开启虚拟端口模块及其功能解析 293
8.4.3连续运行 295
8.4.4复位操作 296
8.4.5单步运行 296
8.4.6连续单步运行 297
8.4.7设置断点运行 297
8.4.8运行到光标处 299
8.4.9从指定行开始运行 299
8.4.10查看反汇编窗口 300
8.4.11跟踪运行和查看轨迹 301
8.4.12开启和设置存储器观察窗 303
8.4.13开启和设置变量观察窗 304
8.4.14开启和设置输出观察窗 307
8.4.15修改寄存器和存储器单元 308
8.5应用μVision2制作HEX和LIB文件 310
8.5.1制作最终目标文件(.HEX) 311
8.5.2制作模块库文件(.LIB) 312
附录A ASCⅡ码表 313
附录B英文指令一览表 314
附录C宏汇编器的系统保留字 320
附录DμVision2菜单命令和工具按钮中文说明 322
附录E KEIL软件默认安装文件夹组织结构 328
附录F标准包含文件(Reg51.inc) 329