0 绪论 1
1 计算机中的数和码 4
1.1有限字长的二进制数 4
1.1.1二进制数 4
1.1.2数制及其表示方法 5
1.1.3有限字长的二进制数 5
1.1.4常用术语解释 5
1.2十进制数到二进制数的转换 6
1.3带符号二进制数的表示及其运算 6
1.3.1带符号数的表示方法 7
1.3.2补码到真值的转换 8
1.3.3补码的运算 8
1.4溢出及运算的有效性 9
1.4.1无符号数与带符号数的溢出条件 9
1.4.2进位标志CY与溢出标志OV 10
1.5 BCD码 11
1.6 ASCII码 11
2 常用数字电路 12
2.1逻辑电路 12
2.1.1与运算 12
2.1.2或运算 12
2.1.3非运算 12
2.1.4异或门 13
2.1.5累加器 13
2.2译码电路 13
2.2.1地址译码 13
2.2.2 7段数码管显示、译码 14
2.2.3简单的实验元件 14
2.3时序电路 15
2.3.1触发器 15
2.3.2锁存器 15
2.3.3分频器与计数器 16
2.4三态门和总线驱动 16
2.4.1三态门 16
2.4.2总线驱动 17
2.5数字电路设计中采用的先进技术 17
2.5.1 PROM/PAI/GAL 17
2.5.2 CPLD/FPGA 18
2.5.3数字系统中硬件方法与软件方法的特点与联系 19
3微处理器 20
3.1微处理器系统的组成 20
3.2总线及总线时序 21
3.3关于微处理器的基本概念 23
3.3.1微控制器 23
3.3.2嵌入式微处理器 23
3.4 CPU的指令系统 24
3.4.1指令 24
3.4.2指令的编码 24
3.4.3指令系统 25
3.4.4指令的微操作 25
3.4.5指令的重叠执行 26
3.4.6执行速度方面的指标 26
3.4.7精简指令计算机 26
3.5 CPU中的寄存器 26
3.5.1寄存器与程序运行 27
3.5.2堆栈及堆栈指示器 28
4存储器与存储管理 30
4.1存储器概述 30
4.1.1内存与外存 30
4.1.2半导体存储器的结构 30
4.1.3只读存储器 31
4.1.4随机访问存储器 32
4.1.5内存的主要性能指标 32
4.1.6新型存储器 32
4.2存储器的组织 33
4.2.1存储器映象 33
4.2.2存储器的地址空间 34
4.2.3哈佛结构 34
4.3存储管理 35
4.3.1逻辑地址与物理地址 35
4.3.2存储器的段式管理 35
4.3.3存储器的页式管理 35
4.3.4保护 36
4.4存储器扩展中的总线连接 36
4.4.1 8位字长存储器的扩展 37
4.4.2 16位字长存储器的扩展 37
4.4.3 32位字长存储器的扩展 37
4.4.4 Cache高速缓冲技术 38
5计算机的输入/输出 40
5.1输入/输出的概念 40
5.1.1外部设备 40
5.1.2接口(Interface)与接口技术 40
5.1.3端口地址(Port Address) 40
5.1.4端口及其编址方法 41
5.2输入/输出的数据传输方式 42
5.2.1程序传送方式 42
5.2.2中断概述 42
5.2.3中断传送方式 43
5.2.4 DMA方式的数据传送 44
5.3常用数字接口部件 45
5.3.1定时器/计数器 45
5.3.2并行口和串行口 46
5.3.3 I2C和SPI 46
6 MCS-51系列微控制器 47
6.1 MCS-51系列微控制器概述 47
6.2 CPU结构 48
6.2.1运算器 48
6.2.2布尔处理机 49
6.2.3控制器 49
6.3 MCS-51的存储器组织 51
6.3.1程序存储器 52
6.3.2内部数据存储器 53
6.3.3特殊功能寄存器 54
6.3.4外部数据存储器和I/O 56
6.4 MCS-51系列微控制器的引脚功能P0~P3 56
6.4.1 P1口的内部结构 57
6.4.2 P3口的内部结构 58
6.4.3 P2口的内部结构 59
6.4.4 P0口的内部结构 59
6.5单片方式以及总线扩展方式 59
6.5.1单片方式 59
6.5.2应用示例 60
6.5.3单片机的总线扩展 61
7 MCS-51指令系统 62
7.1 MCS-51指令概述 62
7.1.1指令分类 62
7.1.2书写格式与缩略符 62
7.1.3寻址方式 63
7.2数据传送类指令 65
7.2.1内部数据传送指令 65
7.2.2栈操作指令 66
7.2.3外部数据传送指令 67
7.3运算类指令 68
7.4逻辑运算类指令 70
7.5控制类指令 72
7.5.1程序转移指令 72
7.5.2子程序调用和返回指令 77
7.6位操作指令 79
7.6.1位操作与位地址 79
7.6.2位传送指令 80
7.6.3位状态控制指令 80
7.6.4位逻辑运算指令 80
7.6.5基于位测试的控制转移指令 81
8汇编语言程序设计 82
8.1汇编语言语句结构 82
8.1.1程序行的组成 82
8.1.2宏汇编中的常数 83
8.1.3宏汇编中的表达式 83
8.2伪指令 84
8.2.1段定义伪指令 84
8.2.2符号定义伪指令 85
8.2.3存储单元定义并初始化 86
8.2.4保留地址伪指令 87
8.2.5模块连接伪指令 89
8.2.6其他伪指令 89
8.3常用程序设计方法 90
8.3.1最大值、最小值问题 91
8.3.2多分支转移问题 92
8.3.3二进制数据转为BCD码的问题 94
8.4 模块化程序设计 97
8.4.1ASM-51编程环境下的文件类型 97
8.4.2各种文件的关系及生成流程 98
8.4.3由两个模块构成的程序示例 98
9 MCS-51的定时器/计数器与中断系统 102
9.1 MCS-51的定时器/计数器 102
9.1.1定时器/计数器的结构 102
9.1.2定时器/计数器的1作方式 103
9.1.3定时器/计数器T0和T1的应用实例 107
9.2增强型MCS-51的T2定时器 110
9.2.1控制寄存器 110
9.2.2 T2的16位自动装载方式 111
9.2.3 T2的16位捕获方式 112
9.2.4 T2的波特率发生器方式 112
9.3 MCS-51的中断系统 113
9.3.1中断源 113
9.3.2中断源的屏蔽 114
9.3.3中断的优先级 115
9.3.4中断向量 116
9.3.5中断响应的条件和过程 117
9.3.6中断服务程序的特点和编写要求 118
9.3.7数码管动态显示技术 120
9.3.8定时器应用的其他示例 125
10 MCS-51的串行通信 127
10.1串行通信基本概念 127
10.1.1通信方式 127
10.1.2串行通信的波特率 129
10.1.3异步串行通信的常用物理标准 129
10.2 MCS-51的串行通信控制器 130
10.2.1与串行通信相关的特殊功能寄存器的用法介绍 131
10.2.2串行口的工作方式 132
10.3串行通信控制器的应用 136
10.3.1移位寄存器方式应用举例 136
10.3.2串行通信的应用举例 139
10.3.3接收中断的循环缓冲区 147
10.3.4多机通信的中断接收 148
11 MCS-51的总线 151
11.1 MCS-51系统的时钟和复位电路 151
11.1.1时钟电路 151
11.1.2复位电路 152
11.2 MCS-51的总线 154
11.2.1总线的构成 154
11.2.2总线的时序 155
11.3应用举例 160
11.4存储器访问中的等待 161
12 MCS-51的存储器扩展电路 162
12.1存储器扩展 162
12.1.1存储器结构 162
12.1.2存储器的地址容量扩展 163
12.1.3译码电路 164
12.1.4存储器在实际应用中的技巧 166
12.1.5存储器的时序要求 167
12.2程序存储器扩展 169
12.2.1扩展示例 169
12.2.2微控制器的ISP、IAP概要介绍 172
12.3扩充数据存储器 172
12.4 DS12C887B日历时钟的扩展 178
12.5集成到MCU中的扩展数据存储器 184
13 I/O接口电路及其扩展 185
13.1简单并行口扩展 185
13.1.1简单的并行口输入 185
13.1.2带锁存的并行口输入 186
13.1.3简单的并行口输出 187
13.2 8255通用可编程并行接口芯片 188
13.2.1 8255简介 188
13.2.2 8255的工作说明 190
13.2.3 8255与MCS-51总线的接口和编程 192
13.3 8253可编程外围定时器/计数器 196
13.3.1 8253的内部结构和引脚 196
13.3.2 8253的控制字和工作方式 197
13.3.3 8253与MCS-51总线的接口和编程 200
13.4 SC16C2552通用UART通信控制器 203
13.4.1 SC16C2552的功能描述 203
13.4.2芯片的引脚功能和内部结构 203
13.4.3 SC16C2552的寄存器 205
13.4.4 SC16C2552的扩展电路 209
13.4.5 SC16C2552的编程举例 210
13.5液晶点阵屏的接口设计 214
14模拟量的输入和输出 217
14.1 D/A转换器 217
14.1.1 D/A转换器的基本原理 217
14.1.2 D/A转换器的主要技术指标 219
14.2 D/A的应用电路 219
14.2.1 D/A电路的单极性和双极性设计 219
14.2.2 DAC0832 221
14.3 A/ D转换器 223
14.3.1 A/D转换器原理 223
14.3.2 A/D转换器的主要技术指标 225
14.4典型A/D转换器的接口设计 226
14.4.1 8位8通道ADC0809及其应用 226
14.4.2 12位AD574B及其应用 230
15 C51高级语言编程 234
15.1 C51的数据类型 234
15.2 Keil C51扩展关键字 235
15.3存储区域与存储模式 235
15.3.1存储区域 235
15.3.2存储模式 237
15.3.3指针变量 237
15.3.4绝对地址访问 238
15.4 C51的函数 238
15.4.1函数的声明 238
15.4.2函数的参数与返回值 239
15.4.3函数的寄存器组 239
15.4.4中断函数 239
15.5 C51模块化程序设计 240
15.6 C51与ASM-51宏汇编语言的混合编程 243
15.6.1函数名的转换 244
15.6.2参数传递 244
15.6.3函数的返回值 246
15.6.4 C语言和汇编语言的接口示例 246
16Keil 51应用基础 249
16.1 μVision2的界面 249
16.2编辑源程序文件 250
16.2.1编辑一个汇编语言程序 250
16.2.2编辑一个C语言程序 251
16.3创建工程文件 252
16.3.1新建工程 252
16.3.2打开已存在的工程 257
16.4汇编/编译和链接 257
16.5程序调试功能 258
16.5.1进入调试模式 259
16.5.2单步执行 259
16.5.3在线汇编 260
16.5.4断点设置 260
16.5.5观察窗口 261
16.5.6储存器窗口 261
16.5.7串行窗口 261
16.5.8性能分析窗口 262
16.6实例分析 262
16.6.1实例一 262
16.6.2实例二 263
16.7在线仿真调试功能 268
17 C8051F系列微控制器及其应用 269
17.1 C8051 F340功能及实验电路简介 269
17.1.1 C8051F340功能简介 269
17.1.2 C8051F340实验电路简介 270
17.2开发工具介绍及其使用 270
17.2.1仿真器 270
17.2.2集成开发环境的建立 271
17.2.3建立工程 272
17.3功能配置及初始化编程 273
17.3.1系统时钟及复位源 273
17.3.2端口和交叉开关的应用 278
17.3.3中断源和定时器时钟选择 282
17.3.4 A/D功能设定 287
17.3.5 EMIF的设定 293
17.4应用实例 296
附录 301
附录A ASCII(美国信息交换标准码)字符表 301
附录B MCS-51系列单片机指令表 302
附录C 指令的周期数物指令编码的字节数 307
附录D C51版例子 310
附录E C8051F340实验板原理图 314
习题 316
样卷 323
参考文献 333