目录 1
第1章 微控制器 1
1.1 不同类型的微控制器 2
1.1.1 嵌入式微控制器 2
1.1.2 外存储微控制器 3
1.2 处理器的体系结构 4
1.2.1 哈佛与普林斯顿 4
1.2.2 CISC与RISC 7
1.3.1 控制存储器 8
1.3 微控制器的存储器类型 8
1.3.2 变量区 13
1.3.3 程序计数器堆栈 15
1.3.4 硬件接口寄存器(I/O空间) 17
1.4 微控制器的特性 18
1.4.1 时钟 18
1.4.2 I/O引脚 20
1.4.3 中断 22
1.4.4 定时器 25
1.4.5 外围设备 28
1.6 8051供应商 29
1.5 8051 29
第2章 8051处理器的体系结构 31
2.1 CPU 31
2.2 8051的寻址方式 37
2.3 外部寻址(External Addressing) 39
2.4 中断 42
2.5 8051指令的执行 43
第3章 8051的指令集 45
3.1 数据传送指令 45
3.2 算术运算指令 54
3.3 位操作符 61
3.4 执行变化操作符 75
第4章 8051的硬件特性 83
4.1 器件的封装 85
4.2 芯片技术 89
4.3 电源因素 91
4.4 重置 92
4.5 系统时钟/振荡器 93
4.6 并行输入/输出 94
4.7 电平转换 95
4.8 定时器 96
4.9 中断 100
4.10 串行I/O 102
4.11 RS-232的电平转换 104
4.12 控制存储器 106
4.13 外部存储器器件 107
4.14 订货信息 109
第5章 增强型8051的特性 111
5.1 8051体系结构的增强 112
5.1.1 Intel MCS-151/251 112
5.2.1 调整Dallas半导体公司的HSM控制存储器大小 113
5.1.2 Dallas半导体公司的高速微控制器 113
5.2 控制存储器和外存储器 113
5.2.2 为带外部RAW的Dallas半导体公司的HSM微控制器增加等待状态 114
5.3 高速暂存RAM的增强 115
5.4 定时器 116
5.4.1 Dallas半导体公司的HSM扩展 116
5.4.2 定时器2 117
5.4.3 Dallas半导体公司的HSM的看门狗定时器 119
5.5.1 Dallas半导体公司的HSM的第2种串口 121
5.5.2 Microwire 121
5.5 串行I/O 121
5.5.3 SPI 122
5.5.4 I2C 123
5.5.5 CAN 127
5.6 模拟I/O 129
5.7 Atmel AT80Cx051的电压比较器 135
第6章 应用系统设计 137
6.1 电源输入 137
6.2 重置 139
6.3 系统振荡器/时钟 139
6.4 I/O引脚接口 140
6.5 中断 141
6.6 外部RAM和ROM 144
第7章 8051的编程 146
7.1 8051的编程 146
7.2 Dallas半导体公司的DS87000编程器 148
7.3 Atmel AT89Cx051的编程 149
7.4 PROG35:AT89Cx051编程器的电路 151
7.5 Dallas半导体公司的加密数据微控制器的编程 155
第8章 软件 157
8.1 开发工具与环境 157
8.2 汇编语言 161
8.3 8051汇编语言的编程风格 162
8.4 解释程序 171
8.5 高级语言 172
8.6 Intel十六进制格式的目标文件 173
8.7 8051调试指南 175
第9章 8051实验 180
9.1 所需工具和器件 181
9.2 PROG1:安装UMPS并汇编程序 184
9.3 PROG2:算术运算 191
9.4 PROG3:工作寄存器直接寻址 196
9.5 PROG4:工作寄存器间接寻址 199
9.6 PROG6:直接寻址RAM 201
9.7 PROG7:位寻址 204
9.8 PROG8:DPTR指针寄存器和扩展RAM 206
9.9 PROG5:转移和控制存储器页面 209
9.10 PROG9:条件转移 214
9.11 PROG10:循环控制 216
9.12 PROG11:堆栈操作 217
9.13 PROG12:堆栈的算术运算 219
9.14 PROG13:子程序 222
9.15 PROG14:寄存器参数传递方法 223
9.16 PROG15:堆栈参数传递方法 226
9.17 PROG16:实现变量数组 229
9.18 PROG17:控制存储器表 233
9.19 PROG18:状态机 235
9.20 PROG1:在硬件环境中运行程序 239
9.21 PROG19:查询按钮 241
9.22 PROG45:无意中修改某I/O位 243
9.23 PROG20:按钮消抖方法 245
9.24 PROG21:圣诞节的灯光 248
9.25 PROG34:振荡器 251
9.26 PROG34:去耦电容与电源 252
9.27 PROG22:重置 254
9.28 PROG23:上电时RAM中的内容 255
9.29 PROG24:保护上下文的定时器中断 259
9.30 PROG25:不保护上下文的定时器中断 261
9.31 PROG26:使用中断和定时器的按钮消抖方法 262
9.32 PROG27:存储器映像的I/O 267
9.33 PROG28:外存储器 270
9.34 结束语 275
10.1 仿真器类型 276
第10章 仿真器 276
10.2 监控程序 279
10.3 PROG29:使用DS87C520的AT89Cx051监控程序/仿真器 282
第11章 实时操作系统 292
11.1 RTOS基础 292
11.2 PROG30:8051 RTOS举例 296
11.3 PROG30:RTOSLITE 297
11.4 PROG31:FULLRTOS 306
11.5 使用FULLRTOS的LCD数字时钟/温度计 311
第12章 应用示例 321
12.1 Marya的音乐盒 322
12.2 PROG36:51Bot——转动轮子 330
12.3 PROG37:51Bot——带红外TV遥控的远程操作控制 337
12.4 PROG41:51Bot——RS-232接口 342
12.5 PROG42:51Bot——PWM电机控制 346
12.6 51Bot:嵌入式插件板 357
12.7 PROG33:飞机控制范例 359
12.8 PROG39:用于机器人的光传感器 372
12.9 PROG38:超声波距离测量方法 374
12.10 PROG49:NTSC合成视频信号的输出 379
12.11 PROG47:Electronic RS-232“连接盒” 385
附录A 术语表 397
附录B 16位运算 407
B.1 声明16位变量 407
B.2 加1和减1 408
B.3 加、减和位运算 410
B.4 乘法运算 411
B.5 除法运算 413
附录C 实用的子程序 418
C.1 延时程序 418
C.2 表操作 421
C.3 LCD接口 423
C.4 I2C总线接口 430
C.5 “位脉冲(big banging)”异步串行接口 432
C.6 十六进制数与ASCII码的转换 437
C.7 排序 439
C.8 加载“加密数组” 446
C.9 环形缓冲区 446
附录D UMPS 449
附录E SimmStick 452
附录F 关于配书光盘 457