第1章 微控制器的种类、选择和应用 1
本章目标 1
1.1微控制器 1
1.1.1中央处理单元 1
1.1.2微处理器 1
1.1.3微计算机 2
1.1.4计算机系统 2
1.1.5微控制器 3
1.1.6嵌入式处理器 3
1.2微控制器的种类 4
1.2.1 8位、16位、32位微控制器 4
1.2.2全内嵌式和带外部存储器的微控制器 5
1.2.3 CISC和RISC结构微控制器 5
1.2.4哈佛和普林斯顿存储结构微控制器 6
1.3主流微控制器概览 6
1.3.1 8051、扩展8051 XA和8051 MX系列 6
1.3.2 MC68HC11/68HC12系列 7
1.4微控制器的选择 8
1.4.1所需特性列表及需要考虑的因素 8
1.4.2处理器和处理器系列的选择 9
1.4.3基于片上资源的选择 9
1.4.4软件构建块的选择 9
1.4.5基于开发工具的选择 9
1.5应用实例 9
1.5.1自动加工控制 10
1.5.2仪器应用 11
本章小结 12
关键术语 13
问题回顾 14
实践练习 14
多项选择题 15
第2章 微控制器的体系结构和资源概述 16
本章目标 16
2.1微控制器体系结构 16
2.1.1 8048和8049微控制器体系结构的功能概述 16
2.1.2 8048系列微计算机的管脚和信号 18
2.2系列成员 19
2.3微控制器资源 20
2.3.1总线宽度 20
2.3.2程序和数据存储器 21
2.3.3并口 23
2.3.4 EEPROM和Flash 24
2.3.5脉宽调制输出 25
2.3.6使用PWM或者定时器的片上D/A转换 26
2.3.7片上A/D转换 26
2.3.8复位电路 27
2.3.9看门狗定时器设备 28
2.3.10灵活位处理能力 29
2.3.11节电模式 29
2.3.12定时器 30
2.3.13实时时钟 31
2.3.14异步和同步串行通信接口 32
2.4高级和下一代微控制器中的资源 32
本章小结 33
关键术语 33
问题回顾 35
实践练习 36
多项选择题 37
第3章 8051/8031系列的体系结构 39
本章目标 39
3.1 8051微控制器 39
3.1.1硬件 39
3.1.2端口和电路的IO管脚 48
3.2内部和外部存储器 52
3.3计数器和定时器 57
3.4 Intel 8051的同步串行和异步串行通信接口 62
3.4.1串行同步通信 64
3.4.2串行异步模式通信 65
3.4.3与RS232连接 66
3.5中断 67
本章小结 70
关键术语 71
问题回顾 73
实践练习 74
多项选择题 75
第4章 8501系列微控制器指令集 77
本章目标 77
4.1基本汇编语言编程 77
4.1.1机器码 77
4.1.2指令中的操作码和操作数 77
4.1.3指令周期 80
4.1.4指令执行时间 80
4.1.5作为指令集合的程序和例程 80
4.1.6寻址模式 80
4.1.7指令集的指令分类 81
4.2数据传送指令 82
4.2.1 MOV指令 83
4.2.2 MOVC类型指令 84
4.2.3 MOVX类型指令 85
4.2.4应用SP来使用堆栈区域的PUSH和POP指令 86
4.2.5 XCH类型指令 87
4.3数据和位处理指令 88
4.3.1字节数据处理(清除、求补、循环移位和交换)指令 88
4.3.2布尔变量(位)处理和布尔处理指令 89
4.4算术指令 91
4.5对寄存器、内部RAM和SFR字节进行逻辑操作的指令 93
4.6程序流控制指令 95
4.6.1周期延迟(NOP)指令 96
4.6.2长跳转、绝对跳转和短跳转 96
4.6.3条件相对短跳转 97
4.6.4递减然后根据是否为0进行条件跳转 98
4.6.5比较后跳转 98
4.6.6例程调用——无条件返回和从例程中返回 99
4.7中断控制流程(RETI指令) 100
本章小结 101
关键术语 101
问题回顾 103
实践练习 104
多项选择题 105
第5章 实时控制:中断 107
本章目标 107
5.1 MCU的中断处理结构 107
5.1.1例程、中断和中断服务例程 108
5.1.2 8051中的中断服务 109
5.1.3中断源的标识 109
5.1.4中断服务例程的地址 110
5.2中断等待时间和中断最终期限 113
5.3多重中断源 113
5.4不可屏蔽中断源 114
5.5中断源的使能(解除屏蔽)或者禁用 115
5.6轮询来确定中断源及其优先级分配 116
5.6.1轮询更高优先级中断源的优点 118
5.6.2在ISR结束时轮询更高优先级待响应中断源的优点 118
5.7 Intel 8051中的中断结构 120
本章小结 121
关键术语 122
问题回顾 123
实践练习 123
多项选择题 124
第6章 实时控制:定时器 126
本章目标 126
6.1 MCU中的可编程定时器 126
6.1.1编程特性 126
6.1.2溢出事件 129
6.2自由运行计数器和实时控制 130
6.2.1使用输出比较寄存器以及作为自由运行计数器运行的定时器 131
6.2.2使用输入采集寄存器 133
6.2.3实时钟中断 136
6.2.4软件定时器 138
6.3中断间隔和密度、约束 138
6.3.1中断服务延迟 138
6.3.2中断服务间隔 141
6.3.3中断密度 141
6.3.4中断约束 141
本章小结 142
关键术语 143
问题回顾 143
实践练习 144
多项选择题 144
第7章 系统设计:外设与接口 146
本章目标 146
7.1 8251串行1O USART通信接口 146
7.1.1 8251的编程 150
7.1.2处理器和DCE的连接 154
7.2 8255并行端口接口 155
7.2.1 8255编程 160
7.2.2连接8255到处理器 163
7.3 8257可编程DMA控制器 163
7.3.1 1O事务的方法 163
7.3.2 8257编程 166
7.3.3连接到8086、 8085、 8096和86HC 11 / 12 169
7.4可编程中断控制器8259 170
7.5 ADC电路接口 173
7.6 DAC电路接口 177
7.7内部集成电路接口(12C总线标准) 179
本章小结 181
关键术语 182
问题回顾 183
实践练习 184
多项选择题 185
第8章 系统设计:数字和模拟接口方法 187
本章目标 187
8.1开关、小键盘和键盘接口 187
8.1.1单键按键(开关)及其接口 187
8.1.2按键阵列和它的接口 189
8.1.3小键盘或者键盘(按键矩阵)和它的接口 192
8.2 LED和LED阵列 194
8.2.1 LED和LED信号器 194
8.2.2 LED或信号器的阵列 194
8.2.3 7段十六进制数字的LED阵列 195
8.3键盘/显示器控制器(8279) 197
8.4文字数字式设备——显示系统和它的接口 204
8.4.1 16段数码显示器 204
8.4.2点阵显示器 205
8.4.3 LCD显示器 205
8.4.4 LCD显示器控制器 206
8.4.5 LCD显示控制器的接口连接 208
8.4.6 Hitachi 44780、 Optrex DMC 16xx、DMC 16xxx、 DMC 20xxx和DMC24xxx系列兼容LCD控制器的编程 209
8.5打印机接口 213
8.5.1并行接口来连接打印机中的打印控制器 213
8.5.2串行RS232C接口来连接打印机中的打印控制器 213
8.6使用IEEE 488 (GPIB)总线来实现可编程指令接口 214
8.7与Flash存储器连接的接口 216
8.8其他一些接口 217
8.8.1将MCU端口IO管脚与连接的物理系统光隔离 217
8.8.2与线圈的接口 217
8.8.3与扩音器的接口 217
8.8.4在音乐播放盒中与小键盘和扬声器的接口 219
8.8.5在机器人、打印机或工业驱动器中与步进电机的接口 219
8.9与大功率设备连接的接口 221
8.9.1与输入和输出模块连接的接口 221
8.9.2与大功率电机和加热器连接的接口 222
8.9.3使用高级微控制器来与功率器件连接的接口 223
8.10模拟输入接口 223
8.11模拟输出接口 224
8.11.1 DC电机控制 224
8.11.2伺服电机控制 225
8.12光学电机转轴编码器 226
8.12.1增量式转动编码器 226
8.12.2旋转绝对角度编码器 227
8.13工业控制 229
8.13.1控制应用 229
8.13.2基于MCU的刻度尺 229
8.14工业过程控制系统 230
8.15 基于MCU测量仪表的原型 232
8.16机器人和嵌入式控制 235
8.17数字信号处理和数字滤波器 236
8.17.1数字信号处理 236
8.17.2数字滤波器 237
本章小结 237
关键术语 238
问题回顾 241
实践练习 242
多项选择题 244
第9章 编程框架:汇编语言和C语言编程 246
本章目标 246
9.1编程基础 246
9.1.1寄存器 246
9.1.2 Intel 80518位PSW(程序状态字) 252
9.1.3 Intel 80x96 16位PSW(程序状态字) 253
9.1.4 Motorola 8位68HC 11 CCR(状态条件码) 253
9.1.5累加器 253
9.1.6指向内存的寄存器(变址寄存器和基址寄存器) 255
9.1.7通用数据/地址寄存器和临时内存或寄存器文件 256
9.1.8位可访问寄存器 257
9.1.9 CPU寄存器结构的考虑 258
9.1.10指令和寻址模式 259
9.2 CPU寄存器和内部RAM的结构 259
9.3汇编语言编程 260
9.4汇编程序 262
9.5在中断期间保持CPU状态 265
9.6传递参数 266
9.6.1传递参数 266
9.6.2将参数传递到堆栈中 267
9.7控制结构 268
9.7.1 N路分支(决策块) 268
9.7.2循环 269
9.8运行时计算分支转移目的地 270
9.9 C语言编程和使用GNU工具 270
9.9.1用C语言编程 271
9.9.2内嵌代码 272
9.9.3参数传递 273
9.9.4程序编译过程和开发工具 273
9.9.5 GNU工具 274
本章小结 274
关键术语 275
问题回顾 277
实践练习 278
多项选择题 279
第10章 编程框架:软件构建模块 281
本章目标 281
10.1堆栈 281
10.2队列 286
10.3表 292
10.3.1表数据和软件构建模块 292
10.3.2查询表 298
10.3.3 Hash表 300
10.4字符串 301
10.4.1字符串作为可变长度的字符数组 302
10.4.2将字符串作为程序存储中的常量使用 305
10.5状态机 306
10.6按键处理 308
10.6.1实际使用中的按键处理 308
10.6.2监控按键事件并查找按键字符 309
本章小结 311
关键术语 312
问题回顾 314
实践练习 314
多项选择题 315
第11章 系统设计中的实时操作系统 317
本章目标 317
11.1实时操作系统 317
11.1.1多任务系统 317
11.1.2多任务系统中的任务定义 319
11.1.3多任务系统中的任务特性 319
11.1.4实时操作系统 320
11.2 Keil RTX51实时操作系统 322
11.2.1 RTX51的典型功能特性及其循环调度的使用 322
11.2.2 RTX51全功能版中的抢占式调度 324
11.2.3 RTX51版本 325
11.2.4 RTX51精简版例程 326
11.2.5 RTX51全功能版例程 327
11.3设计中RTOS的使用 328
本章小结 331
关键术语 331
问题回顾 332
实践练习 333
多项选择题 333
第12章 微控制器应用程序开发工具 335
本章目标 335
12.1基于系统的微控制器开发阶段 335
12.2软件开发周期和应用程序 336
12.3软件开发工具 337
12.3.1集成开发环境 338
12.3.2 RTOS 340
12.3.3宏汇编器和反汇编器 340
12.3.4编译器 340
12.3.5库和库管理器 340
12.3.6链接器/定位器和生成hex文件 340
12.3.7调试器和模拟器 341
12.4来自Keil公司的典型IDE版本和工具 341
12.4.1 IDE μVision2 341
12.4.2 C51编译器 344
12.4.3 A51汇编器 346
12.4.4 LIB51库管理器 347
12.4.5 BL51链接器/定位器 347
12.4.6 OC51分块目标文件转换器和OH51目标文件到Hex文件转换器 347
12.5仿真器和在线仿真器 348
12.6目标板 349
12.7设备编程器 350
本章小结 351
关键术语 351
问题回顾 353
实践练习 354
多项选择题 354
第13章 16位微控制器8096 80196系列 357
本章目标 357
13.1硬件 357
13.1.1 80196系列MCU的CPU、地址和数据总线概述 357
13.1.2 80196系统结构 359
13.2 Intel 80196系列MCU系统的存储器映射 362
13.2.1片内RAM 362
13.2.2片内ROM/EPROM 365
13.2.3外部程序/数据存储空间(PROM/RAM) 366
13.3 IO端口 366
13.4可编程定时器及高速输出和输入捕获 367
13.5中断 368
13.5.1不可屏蔽和可屏蔽中断源 368
13.5.2中断服务 369
13.6指令 369
本章小结 371
关键术语 371
问题回顾 372
实践练习 373
多项选择题 373
第14章 Motorola MC68HC11系列 375
本章目标 375
14.1体系结构 375
14.1.1内部架构和硬件概述 375
14.1.2 68HC11的架构 378
14.1.3 256字节地址空间内的寄存器片内RAM 380
14.1.4存储器映射 383
14.2寻址方式和指令 383
14.2.1指令集使用的寻址方式 383
14.2.2指令 384
14.3接口方法 386
14.3.1通用并行IO接口 386
14.3.2存储器接口和附加IO端口 389
14.3.3 IO接口 390
14.3.4串行IO设备 390
14.3.5 RS232和RS485 391
14.4中断 391
14.4.1不可屏蔽和可屏蔽中断源及复位 391
14.4.2中断向量和优先级 391
14.4.3中断服务 392
14.5可编程定时器 392
14.5.1时序信号的产生和度量 392
14.5.2输入捕获 393
14.5.3输出比较 393
14.5.4频率度量 394
14.5.5脉冲累加器计数器 394
14.6模拟接口应用 394
本章小结 395
关键术语 395
问题回顾 397
实践练习 397
多项选择题 397
第15章 ARM 32位MCU:架构、编程和开发工具 399
本章目标 399
15.1 16/32位处理器简介 399
15.2 ARM体系结构和组织 400
15.3 ARM/THUMB编程模式 404
15.4 ARM/THUMB指令集 406
15.4.1 32/16位ARM指令集 406
15.4.2 32位指令格式 410
15.4.3 Thumb指令集扩展 411
15.4.4 ARM异常处理 415
15.4.5汇编和C编程(GNU工具) 417
15.4.6 ARM/Thumb配合工作 418
15.5开发工具 418
本章小结 421
关键术语 422
问题回顾 423
实践练习 424
多项选择题 424
附录A 426
附录B 428
附录C 431
附录D 433
附录E 434
附录F 435
附录G 437
多项选择题答案 442
参考文献 444