目录出版者的话专家指导委员会译者序前言第一部分 引言第1章 微控制器引言 1
1.1 微型计算机 2
1.1.1 微处理器 3
1.1.2 总线系统 3
1.1.3 存储器类型和应用 6
1.1.4 I/O器件 9
1.2 68HC11和68HC12微控制器 10
1.3 历史概述 10
1.4 软件和硬件开发 11
1.4.1 概念与问题定义 12
1.4.2 要求与规格 13
1.4.3 体系结构的设计 13
1.4.4 详细设计和构筑 14
1.4.5 最终原型构筑和整合 15
1.4.6 评审 15
1.4.7 单元测试 15
1.4.8 发布 15
小结 16
习题 16
2.1 编程语言 17
2.1.1 机器语言 17
第二部分 汇编语言编程第2章 编程基础 17
2.1.2 汇编语言 18
2.1.3 高级语言C 19
2.2 程序段类型 20
2.3 软件构筑 21
2.3.1 代码黑客 22
2.3.2 患有键盘恐惧症的完美主义者 22
2.3.3 成为好的程序员 22
2.3.4 构筑时段 22
小结 23
习题 23
第3章 简单汇编代码构筑 24
3.1 汇编源代码 25
3.1.1 程序内容与组织 26
3.1.2 汇编语言语法 27
3.1.3 汇编伪指令 28
3.2 基本建造过程 32
3.3 运行时调试——教学辅导 35
3.3.1 调试硬件配置 35
3.3.2 调试监控程序 36
3.3.3 加载S记录文件 37
3.3.4 寄存器和存储器内容显示及修改 37
3.3.5 软件断点 38
3.3.6 指令跟踪 39
3.3.7 其他调试工具 40
小结 41
习题 41
第4章 CPU12编程模型 42
4.1 CPU寄存器集 42
4.2 CPU12寻址方式 44
4.2.1 固有寻址 44
4.2.2 立即寻址 44
4.2.3 扩展与直接寻址 45
4.2.4 68HC11变址寻址 46
4.2.5 CPU12变址寻址 47
4.2.6 常量偏移变址寻址 48
4.2.7 自动递增与递减变址寻址 49
4.2.8 寄存器偏移变址寻址 50
4.2.9 变址间接寻址 51
4.2.10 8位相对寻址 52
4.2.11 CPU12长相对寻址方式 52
4.2.12 大于64KB的寻址 52
4.3 CPU12指令集 53
小结 53
习题 54
5.1.2 寄存器加载 55
5.1.1 数据传送即数据复制 55
5.1 数据传送 55
第5章 基本汇编编程方法 55
5.1.3 加载有效地址 56
5.1.4 寄存器存入指令 56
5.1.5 传送与交换 56
5.1.6 交换指令 58
5.1.7 清零指令 58
5.1.8 CPU12移动指令 58
5.2 栈的运用 59
5.2.1 栈指令 59
5.2.2 CPU12栈操作 59
5.2.3 CPU11栈操作 61
5.2.4 栈的运用规则 62
5.3 基本算术编程 63
5.3.1 加法指令 63
5.3.2 8位二进制加法 63
5.3.3 多字节二进制加法 64
5.3.4 BCD加法 66
5.3.5 变址寄存器加法 66
5.3.6 减法指令 67
5.3.7 8位二进制减法 67
5.3.8 多字节二进制减法 68
5.3.9 BCD减法 69
5.3.11 递减和递增指令 70
5.3.10 比较和测试 70
5.4 移位和旋转 71
5.5 布尔逻辑、位测试和位操纵 72
5.5.1 布尔逻辑指令 73
5.5.2 位操纵 73
5.5.3 位测试 74
5.5.4 位测试与操纵指令 76
5.6.1 跳转指令 77
5.6.2 分支 77
5.6 分支和跳转 77
5.6.3 条件分支 79
5.6.4 长条件分支 81
5.6.5 位条件分支 81
5.7 子程序 82
5.7.1 子程序流程 83
5.7.2 子程序基本方法 85
5.8 位置独立性 87
5.8.1 位置不独立代码 88
5.8.2 源可重定位代码 88
5.8.3 目标可重定位代码 88
习题 90
小结 90
第6章 汇编语言程序的设计与结构 94
6.1 设计与文档工具 94
6.1.1 流程图 94
6.1.2 伪C语言 96
6.2 结构化控制构件 97
6.2.1 顺序构件 97
6.2.2 条件构件 97
6.2.3 循环构件 101
6.3 数据存储 106
6.3.1 数据对象 106
6.3.2 寄存器变量 107
6.3.3 全局变量 108
6.3.4 局部变量 109
6.4 程序结构 110
6.5 参数传递 111
6.5.1 参数传递类型 111
6.5.2 利用CPU寄存器 112
6.5.3 利用栈 113
6.5.4 利用全局变量通信 116
小结 117
习题 118
7.1.2 延迟例程设计 119
7.1.1 指令定时 119
第7章 汇编应用 119
7.1 软件延迟例程 119
7.2 I/O数据转换 122
7.2.1 ASCII转换 122
7.2.2 BCD与十六进制之间的转换 126
7.2.3 二进制转换 129
7.3 基本I/O例程 133
7.3.1 字符型I/O 134
7.3.2 字符串I/O 134
7.3.3 数据输入与输出 137
7.4.1 二进制小数与复合数 145
7.4 定点算术 145
7.3.4 本节小结 145
7.4.2 复合数所引起的误差 148
7.4.3 乘法 150
7.4.4 除法 153
小结 159
习题 159
第三部分 微控制器硬件与I/O第8章 实时I/O与多任务引论 161
8.1 实时系统 161
8.2 CPU负荷 162
8.3 I/O检测和响应 162
8.3.1 无条件I/O 163
8.3.2 事件驱动I/O 165
8.3.3 硬件事件检测 170
8.3.4 基于中断的检测与响应 173
8.3.5 定时事件循环 176
8.3.6 开关去跳动与噪声避免 178
8.4 基本协同性多任务 182
8.4.1 任务与核 182
8.4.2 时间片循环性调度器 183
8.4.3 简单计时器举例 186
8.4.4 本节小结 191
8.5.1 CPU12中断源 192
8.5 CPU12中断的运用 192
8.5.2 CPU12中断处理过程 193
8.5.3 在D-Bug12下的中断运用 194
8.5.4 中断潜伏 195
8.5.5 多重中断和优先级 196
8.5.6 临界区 199
8.5.7 外部中断 200
8.5.8 软件中断 201
8.5.9 中断使用要点 201
8.6.2 非侵犯性信号观察 202
8.6.1 用D-Bug12进行实时调试 202
8.6 基本实时调试 202
8.6.3 硬件和软件辅助器 203
小结 204
习题 205
第9章 微控制器I/O资源 206
9.1 通用I/O 206
9.1.1 功能评述 206
9.1.2 接口 207
9.1.3 功率耗散限制 211
9.1.4 GPIO定时关系 211
9.2.1 定时器标帜模型 212
9.2 定时器 212
9.2.2 实时中断 213
9.2.3 标准定时器模块概述 216
9.2.4 输出比较 219
9.2.5 输出比较7 227
9.2.6 输入截获 230
9.2.7 脉冲累加器 234
9.2.8 脉冲宽度调制器 237
9.3 串行I/O 243
9.3.1 串行I/O背景知识 243
9.3.2 串行通信接口 245
9.3.3 串行外围接口 249
9.4 A2D转换 256
9.4.1 A2D转换背景知识 256
9.4.2 68HC12芯片内ADC 258
小结 263
习题 263
第10章 最终产品 264
10.1 MCU硬件设计 264
10.1.1 电源 264
10.1.2 功耗 266
10.1.3 时钟 267
10.2 复位异常处理 268
10.2.1 确定复位源 269
10.2.2 外部复位 269
10.2.3 容错异常处理 270
10.2.4 复位电路 271
10.3 M68HC912B32操作模式 273
10.3.1 正常单芯片模式 274
10.3.2 特殊单芯片模式 274
10.3.3 扩展模式 274
10.3.4 改变内存分配图 275
10.4.1 程序组织与内存分配图 276
10.4 配置和起始代码 276
10.4.2 异常处理向量 279
10.4.3 配置和初始化 280
10.5 最终产品开发 281
10.5.1 传统过程 281
10.5.2 利用芯片内EEPROM 283
10.5.3 后台调试系统 283
10.5.4 基于BDM的调试系统 285
小结 288
习题 288
11.1.1 68HC12读周期 289
第11章 系统扩展 289
11.1 总线周期 289
11.1.2 68HC12写周期 290
11.2 芯片选择逻辑 290
11.2.1 确定器件块单元 291
11.2.2 芯片选择逻辑方程与全解码 292
11.2.3 芯片选择逻辑方程与偏解码 293
11.2.4 68HC812A4可编程芯片选择 294
11.3 总线定时分析 298
11.3.1 读周期定时 298
小结 300
11.3.2 写周期定时 300
习题 301
第四部分 微控制器C编程第12章 模块化与C代码构筑 303
12.1 C源代码 303
12.1.1 C与汇编的比较 303
12.1.2 C程序组成部分与组织 304
12.1.3 语法与单词 306
12.1.4 预处理器命令 310
12.1.5 头文件 311
12.2 模块化建造过程 314
12.2.1 项目目录 314
12.2.2 建造过程 318
12.2.3 节映射 319
12.2.4 库 320
12.2.5 执行建造过程 321
12.2.6 生成的文件 321
12.2.7 命令行界面 326
12.3 源级调试 330
12.3.1 手工C代码调试 330
12.3.2 使用源级调试器 331
小结 334
习题 334
13.1.2 数据类型检查 336
13.1.1 汇编中的数据类型 336
13.1 数据类型引言 336
第13章 创建与存取C数据 336
13.2 ANSI-C数据类型 337
13.2.1 对数据的存取 337
13.2.2 基础性数据类型 337
13.2.3 存储类修饰符 338
13.2.4 作用域修饰符 339
13.2.5 定义新类型 340
13.2.6 数据类型转换 342
13.3.1 变量 343
13.3 变量与存储常量 343
13.3.2 存储常量 344
13.3.3 具有绝对单元的数据 344
13.4 指针 346
13.4.1 对于指针的操作 346
13.4.2 指向绝对单元的指针 347
13.5 数组与串 349
13.5.1 数组 349
13.5.2 串 351
13.6 结构 351
13.7 枚举类型 352
13.8.1 位测试 353
13.8 位操作 353
13.8.2 位操纵 354
13.8.3 位操作的可移植性 355
13.8.4 结构位域 356
小结 358
习题 358
第14章 C程序结构 359
14.1 控制结构 359
14.1.1 条件构件 359
14.1.2 循环构件 367
14.2 函数 372
14.2.2 函数的声明与定义 373
14.2.1 main()函数 373
14.2.3 参数传递 374
14.2.4 函数与宏 376
14.2.5 汇编函数 377
14.2.6 中断服务例程 379
14.3 模块 380
14.3.1 可移植性 380
14.3.2 可靠性 380
14.3.3 文件组织 381
14.3.4 demo2项目举例 382
14.4.1 起始任务 387
14.4 起始与初始化 387
14.4.2 在D-Bug12下执行程序的起始代码 388
14.4.3 自立程序 391
小结 392
习题 392
第五部分 实时多任务核第15章 用C实现实时多任务 393
15.1 实时编程评述 393
15.1.1 自立任务 393
15.1.2 事件响应时间 395
15.2 实时核概论 395
15.2.1 任务与核 396
15.3.1 自由运行循环性调度器 398
15.2.2 多任务CPU负荷 398
15.3 协同性核设计 398
15.3.2 时间片循环性调度器 400
15.3.3 互斥 402
15.3.4 任务分解 402
15.3.5 计时器实例 404
小结 411
习题 411
第16章 MicroC/OS-II抢占性核的使用 413
16.1 概述 413
16.2.1 任务切换 420
16.2 任务与任务切换 420
16.2.2 任务设计 421
16.2.3 任务栈 423
16.2.4 任务变量 423
16.2.5 任务优先级 423
16.3 中断服务例程 424
16.4 定时器 425
16.4.1 μC/OS定时器服务 425
16.4.2 用户设计的定时器事件 427
16.5 任务间通信 427
16.5.1 全局变量 427
16.5.2 信号量 429
16.5.3 用信号量和全局变量传送消息 434
16.5.4 消息信箱 441
16.5.5 消息队列 444
16.6 基于μC/OS的计时器程序 446
小结 452
习题 453
附录附录A 编程规范 455
附录B 基本的I/O 457
附录C μC/OS参考 474
参考文献 484
索引 486