嵌入式微控制器
作者 : Todd D.Morton
译者 : 严隽永
丛书名 : 计算机科学丛书
出版日期 : 2005-09-26
ISBN : 7-111-16706-6
定价 : 65.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 499
开本 : 16开
原书名 : Embedded Microcontrollers
原出版社: Prentice Hall
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是关于中小型嵌入式系统方面的一本好书,全面而深入地讲解嵌入式微控制器系统的开发、设计、建造,直至最终产品的形成。本书并不拘泥于具体器件,而是分析一般性概念和方法,理论与实际相结合,阐述了汇编语言编程方法,并采用伪C语言描述;而且还以相当篇幅讨论C的编程方法。无论对于初学者还是有经验者,本书均提供了实际与深邃的启迪。

本书特点
●理论与实际相结合,作者在这一领域具有丰富的实践经验。
●不仅研讨在开发工具监控程序控制下的应用开发技术,而且还阐述了最终自立系统的开发和构筑。
●所列举实例,既可作为概念与方法的展示,也可用于实际系统开发的参考。
●专业人士潜心译就,行文流畅,具有专业水准的译者注释颇具启发性。

图书特色

图书前言

本书适合所有希望掌握中小型嵌入式系统技术的读者,原先本书是为电子工程技术专业学生而撰写的,但也适用于大多数工程专业的学生和实践工程师。目前本书正用作电子工程技术专业中两门一学期课程的教材。第一门是基于微处理器的应用方面的低年级必修课程;第二门是嵌入式系统方面的高年级选修课程。第一门只运用汇编语言编程;第二门则运用C语言。
  学习本书的先修课程是电子电路、基本数字逻辑,及C语言基础编程。C语言编程课程仅对本书第四和第五部分是必要的。本书并没有包含C语言编程基础内容,因此读者需具有C或C++方面的基础知识,书中只讨论基于微控制器的嵌入式系统所必需的C语言概念和方法。

本书所用软件与硬件
  在撰写关于嵌入式系统的书籍时,是强调硬件软件的某种具体产品,还是强调不偏于实践的一般原理,乃是难以权衡处理的问题。本书作者力图强调设计与调试中所用到的概念、过程、规范及方法。
  本书重点使用Motorola的M68HC12微控制器,但也已成功地用于使用M68HC11系列的课程。本书旨在对供应商的文档资料加以补充,而不是替代。作者希望学生握有他们所用MCU和开发板的完整资料。若使用M68HC12,学生应有《CPU12参考手册》和相应部件的技术规格书。若使用M68HC11,著名的M68HC11参考手册》也是必要的。
  全书所用的开发硬件是Motorola 68HC912B32 EVB。本书前半部分只需要用单板机开发,所有代码都加载入RAM。书的后半部分则需用后台调试系统,代码加载入目的机闪存(Flash ROM)。这要求或者使用两个EVB;或者使用一个EVB作为目的机,以及一个68HC12 BDM调试槽,诸如Noral 68HC12 BDM调试器。有关于调试过程和测试技术的概念应当适用于大多数现代开发系统。
  书中所用的开发软件是IntrolCODE开发系统。除了具体讨论使用IntrolCODE系统进行开发的那些章节不使用C以外,书中还讨论使用C代码进行开发,C代码是符合ANSIC标准的,所以若使用别的C编译器,也是可以的。
  本书所用的实时核是Micro C/OSII。它使用得很广泛,也容易获得它的源代码。其中许多概念也适用于其他种类的核,尤其是对典型核服务的应用。

内容梗概
  本书分为五部分。书的前半部强调汇编代码,后半部则集中于C代码。全书都涉及硬件,尤其在第三部分。由于从第6章起使用了伪C代码,因此内容以强调C为主而非汇编也是合理的。
  第一部分 引言。这部分向读者介绍学习有关嵌入式系统所需的背景知识及展望。
  第二部分 汇编语言编程。这部分介绍汇编语言编程,涉及CPU12编程模型和程序的设计。学生在学完第3章后应当能够对预先编写的程序实施建造,并且在学完第6章后能编写由RAM中D-Bug12监控程序所执行的完整程序。第7章包含适合使用汇编程序的某些基本应用。
  第三部分 微控制器硬件与I/O。这里介绍实时概念与I/O硬件,包括中断与基本多任务机制。除BDLC未作介绍外,68HC912B32 所有I/O资源均作介绍。第10章和第11章讨论用于自立系统且具有总线扩展的MCU配置。
  第四部分 微控制器C编程。其中包括实时嵌入式系统C编程的相关概念。重点放在适用于小型MCU的存储器运用和程序效率问题。
  第五部分 实时多任务核。本部分涉及结合使用MicroC/OSII(一个成品的核)的基本多任务设计。

致谢
  若无如下所列人们的帮助,本书可能无法完成。他们是:Introl公司的Rich Pennington,Motorola大学和Austin社区学院的Jim Sibigtroth,Micrium的Jean Labrosse,Motorola的Tony Plutino和Dave Hyder,惠普公司的Marsh Faber和Mel Downs,Noral Micrologics的Phil Meek和Harry Erickson,PrenticeHall出版公司的Dave Garza及其同仁,WWU的Kathleen Kitto和Andrew Pace,ITT技术学院的George Sweiss,英国哥伦比亚理工学院的Malvern Phillips,Motorola 68HC11与68HC12资料的提供者,以及我的所有学生。

译者简介

严隽永:暂无简介

译者序

本书是不可多得的一本关于中小型嵌入式系统的好书,也是一本适合用于相关专业教学的教科书。它既适合作为本科必修课程的教材,也适合作为研究生选修课程的教材或参考书。对于多数工程师也很有参考价值。
  本书在理论与实际方面结合得很好。作者在这一领域具有丰富的实践经验。这本有价值的著作填补了该方面教科书和参考书的空白。无论对于初学者,还是有经验者,本书均提供了基本的和最新的有关信息,并联系实际应用提出了一些有用的启示。
  本书对嵌入式微控制器进行了全面而深入的讨论。嵌入式微控制器是一种专门的集成器件,它用于各种各样的应用。它将存储器、微处理器和I/O接口组成为一体。本书乃是第一批基于Motorola MC68HC12微控制器族的书。
  本书虽然以Motorola的CPU12(也提及CPU11)微控制器族为主讨论嵌入式微控制器系统的开发、设计、建造,直至最终产品的形成,但并不拘泥于具体器件,而是从中得出一般性概念和方法,这些也可应用于其他厂商的产品。本书在编程技术方面,不仅阐述了汇编语言编程,并采用伪C语言描述;而且还以相当篇幅讨论了C的编程方法,并指出与通用计算机程序开发之间的差异,这在一般C语言书籍中往往是不涉及的。人们知道,汇编语言不独立于硬件,而C语言是独立于硬件的,所以不失一般性。本书不仅研讨在开发工具监控程序控制下的应用开发技术,而且还阐述最终自立系统的开发和构筑,以及如何从前者过渡到后者。书中列举的实例,既可作为概念与方法的展示,也可用于实际系统开发的参考。
  本书后部介绍了嵌入式核的开发与使用。有两类核:协同性核与抢占性核。讨论了自己开发核控程序的方法,还介绍了利用现成核产品MicroC/OS作为预编译库并裁制成产品所需的基本技术。
  本书的写作风格严谨、细致,非常易于理解。但由于术语众多,内容广泛,翻译过程颇费斟酌,有时添加一些注释。译者尽可能使译文文字流畅,易于阅读理解,并做到术语前后一致且不失其惯用用法。但是译者水平有限,时间紧迫,不免有疏漏和失误之处,恳望读者不吝赐正。
  在此也要感谢机械工业出版社华章分社的同仁和朋友们的积极支持与辛勤劳动,终将本书中译本完成出版。期望本书中译本对于我国的教学科研和生产实践有所裨益。

严隽永
2005年2月22日于法国格勒那勃
jyyan@dhueducn
henryyan@smartwintechcom

图书目录

第一部分 引  言
第1章 微控制器引言
11 微型计算机
111 微处理器
112 总线系统
113 存储器类型和应用
114 I/O器件
12 68HC11和68HC12微控制器
13 历史概述
14 软件和硬件开发
141 概念与问题定义
142 要求与规格
143 体系结构的设计
144 详细设计和构筑
145 最终原型构筑和整合
146 评审
147 单元测试
148 发布
小结
习题

第二部分 汇编语言编程
第2章 编程基础
21 编程语言
211 机器语言
212 汇编语言
213 高级语言C
22 程序段类型
23 软件构筑
231 代码黑客
232 患有键盘恐惧症的完美主义者
233 成为好的程序员
234 构筑时段
小结
习题

第3章 简单汇编代码构筑
31 汇编源代码
311 程序内容与组织
312 汇编语言语法
313 汇编伪指令
32 基本建造过程
33 运行时调试——教学辅导
331 调试硬件配置
332 调试监控程序
333 加载S记录文件
334 寄存器和存储器内容显示及修改
335 软件断点
336 指令跟踪
337 其他调试工具
小结
习题

第4章 CPU12编程模型
41 CPU寄存器集
42 CPU12寻址方式
421 固有寻址
422 立即寻址
423 扩展与直接寻址
424 68HC11变址寻址
425 CPU12变址寻址
426 常量偏移变址寻址
427 自动递增与递减变址寻址
428 寄存器偏移变址寻址
429 变址间接寻址
4210 8位相对寻址
4211 CPU12长相对寻址方式
4212 大于64KB的寻址
43 CPU12指令集
小结
习题

第5章 基本汇编编程方法
51 数据传送
511 数据传送即数据复制
512 寄存器加载
513 加载有效地址
514 寄存器存入指令
515 传送与交换
516 交换指令
517 清零指令
518 CPU12移动指令
52 栈的运用
521 栈指令
522 CPU12栈操作
523 CPU11栈操作
524 栈的运用规则
53 基本算术编程
531 加法指令
532 8位二进制加法
533 多字节二进制加法
534 BCD加法
535 变址寄存器加法
536 减法指令
537 8位二进制减法
538 多字节二进制减法
539 BCD减法
5310 比较和测试
5311 递减和递增指令
54 移位和旋转
55 布尔逻辑、位测试和位操纵
551 布尔逻辑指令
552 位操纵
553 位测试
554 位测试与操纵指令
56 分支和跳转
561 跳转指令
562 分支
563 条件分支
564 长条件分支
565 位条件分支
57 子程序
571 子程序流程
572 子程序基本方法
58 位置独立性
581 位置不独立代码
582 源可重定位代码
583 目标可重定位代码
小结
习题

第6章 汇编语言程序的设计与结构
61 设计与文档工具
611 流程图
612 伪C语言
62 结构化控制构件
621 顺序构件
622 条件构件
623 循环构件
63 数据存储
631 数据对象
632 寄存器变量
633 全局变量
634 局部变量
64 程序结构
65 参数传递
651 参数传递类型
652 利用CPU寄存器
653 利用栈
654 利用全局变量通信
小结
习题

第7章 汇编应用
71 软件延迟例程
711 指令定时
712 延迟例程设计
72 I/O数据转换
721 ASCII转换
722 BCD与十六进制之间的转换
723 二进制转换
73 基本I/O例程
731 字符型I/O
732 字符串I/O
733 数据输入与输出
734 本节小结
74 定点算术
741 二进制小数与复合数
742 复合数所引起的误差
743 乘法
744 除法
小结
习题

第三部分 微控制器硬件与I/O
第8章 实时I/O与多任务引论
81 实时系统
82 CPU负荷
83 I/O检测和响应
831 无条件I/O
832 事件驱动I/O
833 硬件事件检测
834 基于中断的检测与响应
835 定时事件循环
836 开关去跳动与噪声避免
84 基本协同性多任务
841 任务与核
842 时间片循环性调度器
843 简单计时器举例
844 本节小结
85 CPU12中断的运用
851 CPU12中断源
852 CPU12中断处理过程
853 在DBug12下的中断运用
854 中断潜伏
855 多重中断和优先级
856 临界区
857 外部中断
858 软件中断
859 中断使用要点
86 基本实时调试
861 用DBug12进行实时调试
862 非侵犯性信号观察
863 硬件和软件辅助器
小结
习题

第9章 微控制器I/O资源
91 通用I/O
911 功能评述
912 接口
913 功率耗散限制
914 GPIO定时关系
92 定时器
921 定时器标帜模型
922 实时中断
923 标准定时器模块概述
924 输出比较
925 输出比较7
926 输入截获
927 脉冲累加器
928 脉冲宽度调制器
93 串行I/O
931 串行I/O背景知识
932 串行通信接口
933 串行外围接口
94 A2D转换
941 A2D转换背景知识
942 68HC12芯片内ADC
小结
习题

第10章 最终产品
101 MCU硬件设计
1011 电源
1012 功耗
1013 时钟
102 复位异常处理
1021 确定复位源
1022 外部复位
1023 容错异常处理
1024 复位电路
103 M68HC912B32操作模式
1031 正常单芯片模式
1032 特殊单芯片模式
1033 扩展模式
1034 改变内存分配图
104 配置和起始代码
1041 程序组织与内存分配图
1042 异常处理向量
1043 配置和初始化
105 最终产品开发
1051 传统过程
1052 利用芯片内EEPROM
1053 后台调试系统
1054 基于BDM的调试系统
小结
习题

第11章 系统扩展
111 总线周期
1111 68HC12读周期
1112 68HC12写周期
112 芯片选择逻辑
1121 确定器件块单元
1122 芯片选择逻辑方程与全解码
1123 芯片选择逻辑方程与偏解码
1124 68HC812A4可编程芯片选择
113 总线定时分析
1131 读周期定时
1132 写周期定时
小结
习题

第四部分 微控制器C编程
第12章 模块化与C代码构筑
121 C源代码
1211 C与汇编的比较
1212 C程序组成部分与组织
1213 语法与单词
1214 预处理器命令
1215 头文件
122 模块化建造过程
1221 项目目录
1222 建造过程
1223 节映射
1224 库
1225 执行建造过程
1226 生成的文件
1227 命令行界面
123 源级调试
1231 手工C代码调试
1232 使用源级调试器
小结
习题

第13章 创建与存取C数据
131 数据类型引言
1311 汇编中的数据类型
1312 数据类型检查
132 ANSIC数据类型
1321 对数据的存取
1322 基础性数据类型
1323 存储类修饰符
1324 作用域修饰符
1325 定义新类型
1326 数据类型转换
133 变量与存储常量
1331 变量
1332 存储常量
1333 具有绝对单元的数据
134 指针
1341 对于指针的操作
1342 指向绝对单元的指针
135 数组与串
1351 数组
1352 串
136 结构
137 枚举类型
138 位操作
1381 位测试
1382 位操纵
1383 位操作的可移植性
1384 结构位域
小结
习题

第14章 C程序结构
141 控制结构
1411 条件构件
1412 循环构件
142 函数
1421 main()函数
1422 函数的声明与定义
1423 参数传递
1424 函数与宏
1425 汇编函数
1426 中断服务例程
143 模块
1431 可移植性
1432 可靠性
1433 文件组织
1434 demo2项目举例
144 起始与初始化
1441 起始任务
1442 在DBug12下执行程序的起始代码
1443 自立程序
小结
习题

第五部分 实时多任务核
第15章 用C实现实时多任务
151 实时编程评述
1511 自立任务
1512 事件响应时间
152 实时核概论
1521 任务与核
1522 多任务CPU负荷
153 协同性核设计
1531 自由运行循环性调度器
1532 时间片循环性调度器
1533 互斥
1534 任务分解
1535 计时器实例
小结
习题

第16章 MicroC/OSII抢占性核的使用
161 概述
162 任务与任务切换
1621 任务切换
1622 任务设计
1623 任务栈
1624 任务变量
1625 任务优先级
163 中断服务例程
164 定时器
1641 μC/OS定时器服务
1642 用户设计的定时器事件
165 任务间通信
1651 全局变量
1652 信号量
1653 用信号量和全局变量传送消息
1654 消息信箱
1655 消息队列
166 基于μC/OS的计时器程序
小结
习题

附  录
附录A 编程规范
附录B 基本的I/O
附录C μC/OS参考
参考文献
索引

教学资源推荐
作者: Joseph A. Fisher Paolo Faraboschi Cliff Young
作者: [美]戴维·A. 帕特森(David A. Patterson) 约翰·L. 亨尼斯(John L. Hennessy) 著
作者: 江国强
参考读物推荐
作者: [美]阿诺德·S.伯格(Arnold S.Berger) 著
作者: 高显生 编著
作者: Mark Artiges等