嵌入式微计算机系统实时接口技术
作者 : (美)Jonathan W.Valvano
译者 : 李曦 周学海 方潜生 熊悦
出版日期 : 2003-05-01
ISBN : 7-111-11802-2
定价 : 78.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 712
开本 : 16开
原书名 : Embedded Microcomputer Systems
原出版社:
属性分类: 教材
包含CD :
绝版 : 已绝版
图书简介

全面理解嵌入式微计算机系统:
  本书介绍了嵌入式微计算机系统的通用设计方法并提供了详细的MotoroIa 6805、6808、6811和6812应用示例。作者将基本概念与丰富的应用实例分析相结合,为读者掌握嵌入式系统设计技术提供了有效的这径。
  本书所配光盘内容包括:
  一个仿真器,学生可以借此观察到芯片内部的操作过程(例如读写地址/数据总线、指令寄存器、有效地址寄存器),并能够方便地连接到外部硬件设备。该访真器同时支持I/O端口功能。
  在PDP目录下存放着各种数据表,分别针对各种微计算机芯片、数字逻辑电路、存储器芯片、运算放大器、ADC芯片、DAC芯片、定时器芯片和接口芯片。
  Examples目录下存放着书中的各个汇编语言和C语言示例程序。
  Assembly目录下存放着专门描述如何使用仿真器为嵌入式系统进行汇编语言编程的说明文档(LTML格式)。
  Embed目录下存放着专门描述如何使用ImageCraft ICC11和ICC12编译器进行C语言编程的说明文档(HTML格式)。
  ImageCraft编译器的自由软件版和HIWARE编译器的有限自由软件版。
  本书特色包括:
  详细研究了嵌入式系统中的各个软硬件组成部分。
  分别从汇编语言和C语言两个方面介绍了好的编程技术与风格,以及嵌入式系统的调试策略。
  提供了丰富详尽的实例分析。

图书特色

Jonathan W.Valvano教授于1977年在麻省理工学院(MIT)同时获得计算机及电子工程学士和硕士学位,并于1981年在哈佛MIT健康科学与技术分部获医学工程博士学位。1981年,作者成为得克萨斯大学奥斯汀分校的电子与计算机工程教授:作者在进入式系统、生物医疗仪器和生物热传递等领域研究成果颇丰,共计发表论文86篇,专著5部。

图书前言

嵌入式计算机系统是一种内部包含微计算机用于完成特定任务的电子系统;它的使用已经十分普及。数以百万的微小计算机芯片每周从Motorola、Milsubishi等工厂流出,安装在我们的日用产品中。我们的全球经济、食品加工、交通系统、军事防卫、通信系统以至生活的品质,都依赖于这些嵌入式系统的效率和效果。作为电子与计算机工程师,我们在成就这一过程的各个阶段(包括规划、设计、分析、制造和市场推广)都扮演着重要的角色。
  本书的特色体现在以下几个方面。与任何优秀的教科书一样,本书努力展示现今可以学习的,未来实践可以应用的一些基本概念,而不同之处在于其详细程度。读者会发现本书包含了大量的对实例的详细分析,这些分析阐明了那些基本概念。毕竟工程师不是要去发明理论,而是要采用一切手段将其应用到实际的设备之中。在我多年的教学过程中,我发现对工程专业的学生而言,将概念与实例结合起来是一种行之有效的教育方法。即使是作为一名有经验的工程师,在我面对需要掌握的新概念时,我仍然要研究实际可行的范例。
  本书的另一个特色在于本书自备有仿真器,名为“TExaS(Test Execute and Simulate)”。与所有优秀的应用软件一样,该仿真器简单易学。它提供了一种自包容的方法进行微计算机软硬件设计与测试。该仿真器与其他仿真器的不同之处有两点:第一点是,运行后,仿真器显示出芯片的内部特征,如地址/数据总线、指令寄存器和有效地址寄存器。以这种方式进行设计,使该软件实现了教育的目的,即解释了计算机是怎样工作的。另一点是,可以连接各种外部设备,如开关、键盘、LED指示灯、ICD显示器、串口设备、电动机以及模拟电路;读者加以使用逻辑探针、电压表、晶振和逻辑分析仪等测试外部硬件。外部设备与微计算机的组合使
我们可以理解嵌入式系统。该仿真器支持微计算机的多种I/0端口的功能,包括中断、串口、输出比较、输入捕捉、键盘唤醒、计时溢出和模数转换。仿真器在本书所配套的光盘中。打开光盘,执行Readme.exe,安装TEx6,就可以学习如何使用。首先,双击MC6812子目录下的tut.uc文件,以便在仿真器中执行此示例。也可运行其他4个示例:tut2.*显示简单的串行I/O功能,tut3.*为ADC数据获取示例,tut4.*显示中断串行I/O功能,tut5.*为中断方波发生器。尽管软件中包含了许多其他的程序,但有五个示例全面展示了此仿真器的能力。图P—1显示了执行tut2.rtf示例时的屏幕界面。请注意图中所显示的特征:1)地址/数据总线的活动;
2)源码中嵌人的图形;3)外部硬件;4)电压表和逻辑探针;5)一个示波器。
本书的目标
  本书深入分析了嵌入式微计算机系统的设计问题,包括接口技术的硬件方面、高级软件
问题(如中断)以及针对典型嵌入式应用系统的系统化设计方法。本书与其他有关微计算机
书籍的不同在于:本书深入分析了对于实时嵌入式应用十分重要的软件和硬件问题。本书的
主要目的在于说明以下问题:
  1.高级体系结构
  ·时序图
  ·存储器和I/O设备与地址/数据总线的接口方法
  2.外部设备与计算机的接口方法
  ·开关与键盘
  ·LED与LCD显示器
  ·DC与步进电机
  ·运算放大器、模拟滤波器、DAC与ADC
  ·同步和异步串行端口
  3.高级编程
  ·实时嵌入式系统的调试
  ·中断与实时事件
  ·信号发生与测量
  ·线程与信号量
  4.嵌入式应用系统
  ·数字滤波的数据获取系统
  ·线性与模糊逻辑控制系统
  ·简单通信网络
  预修要求
  本书试图作为微计算机编程和接口的中级或高级教程,期望学生在学习本书之前已掌握
以下预备知识:
  ·微计算机编程
  ·数字逻辑(多路开关、卡诺图、三态逻辑)
  ·基于C语言的数据结构(队列、堆栈、链表)
  ·测量仪器(如万用表、示波器等)
  ·分立模拟电子线路(电阻、电容、电感、晶体管)
  尽管本书着重于嵌入式系统设计,但随书赠送的光盘上的扩展示例将帮助学生掌握汇编语言编程和c语言程序设计等重要问题。本前言的后续部分将进一步介绍本书附带光盘包含了哪些内容。
本书的结构  
  我们将使用This font给出汇编语言的示例,而使用This font给出由c语言编写的高级语言代码。通常我们在研究各个示例时不仅给出汇编语言程序,而且在其后给出用c语编写的程序。大体上,在方框中的程序对所有4种微处理器都同样有效,但是由于68056808微计算机的限制,因此并不是所有示例对这两种计算机都有效。程序标题中的程序号可以帮助读者在光盘上找到对应的程序。例如汇编程序P—1在光盘中被命名Preface.asm,分别位于MC6805、MC6808、MC6811或MC6812子目录中。每章中的所有程序都在一个文件中。每章包含8个文件,分别对应于不同的处理器(MC6805、MC6808、MC6811和MC6812)或不同的语言(汇编语言和C语言)。
  在汇编语言程序P—1中,程序从标号为start的程序行开始执行。第一条汇编指令(ldaa PORTA)读和端口A的当前值(输入端口拥有外部引脚,可以通过它们向微计算机传送信号)。第二条汇编指令(staa)将该值写入存储器。最后一条汇编指令(bra start)产生一个程序分支,使得上述三条指令(ldaa、staa、bra)无限地重复执行。汇编代码使用TExaS仿真器中的编辑器/汇编器进行开发。  
  在给出C代码时,有时不同计算机的实现是如此的一致,以致于只给出一个版本,但实际上还是经常存在重要的区别。多数情况下只给出MC68HC11和MC68HC12的C代码。本书的C代码使用ImageCraft编译器(对6811而言为ICC11,对6812而言是ICC12)进行编写、编译和测试。通过修改少量的语法,我们已经成功地将这些程序示例转换成Hiware编译器(6805、6808、6811和6812)所支持的代码。ImageCraft编译器与Hiware编译器的主要差别在于:嵌入式汇编的语法和中断服务程序的定义。我们也尝试使用各种免费的SmallC编译器,但是由于本书中示例的复杂性,因此使用SmdlC编译器无法编译。SmallC最大的局限在于其缺乏对数据结构的支持。换句话说,如果在基于本书的课程中使用SmallC,需要做实质性的修改。与汇编语言程序类似,各种C程序采用如程序P—2的方框格式给出。C程序P—2在光盘中为命名为PrefMe.c的文件,分别保存在MC6811和MC6812子
目录中。
  我们假设读者已经阅读过针对自己所使用的特定微计算机的Motor01a编程指南,该指南详细解释了每条汇编指令的含义。读者也应拥有详细描述自己将要使用的I/0端口的微计算机技术参考手册。例如,如果读者要使用输入捕获的方法测量Motorola 6808的周期,则可以在本书中找到基本原理和示例,但必须阅读《6808技术汇编》以便全面掌握各种细节问题。也就是说,我们期望读者在使用本书的同时参考Motorola的手册。虽然光盘中有这些手册的P“文档,但最好是能从Molorola公司图书中心订购这些文本,或在其网站上下载其最终版。
  对嵌入式系统设计而言,虽然软件开发是其关键的一个方面,但我们编写本书的意图并不是将其作为C语言程序设计指导。然而,如果读者有一本C语言程序设计参考会很方便。本书的光盘中有一本HTMI‘文档格式的参考资料,名为《使用ICCll/ICCl2/HIWARE C进行嵌入式软件开发》。虽然与专门介绍C语言编程的书籍相比该参考资料并不完备,但是它专用于6811和6812嵌入式软件编程。
  本书中将从汇编语言和C语言两个方面针对特定于嵌入式实时系统的编程风格和开发调试策略进行深入的讨论。由于单片机的特点(其运行速度很慢,且与当前的桌面微机相比只有很小很小的RAM存储器),因此本书将要使用的大多数针对单片机的C编译器不支持对象、双整型数和浮点数。我们认为浮点数只是用在数值范围的量级跨度很大,或在进行软件设计时无法确定数值的范围的场合。我们的经验是嵌入式系统中的数据在很小且须知的范围内变化,因此使用整数运算就足够了。换句话说,我们的兴趣在于应用某些C十十的面向对象的方法进行嵌人式系统设计。书中可以找到一些面向对象设计的示例。
  同样,本书不准备作为汇编语言的设计指导。不幸的是,某些学生在使用本书前可能没有学过正规的汇编语言课程,或者其汇编语言训练是在其他的机器上进行的。但是,汇编语言的工作经验是必须具备的,即使是实际上我们所有的软件都是可以采用C语言编写也是如此。特别是我们认为读者需要充分掌握汇编语言,以便可以理解编译器生成的汇编列表文件。这种对汇编语言的把握,对于程序调试、编写中断服务程序、计算实时事件以及程序重入的设计都十分关键。为此,有关汇编语言的详细资料包含在光盘中。读者可以从TExaS仿真器的交互式在线帮助中找到微计算机的产品数据表,以及HTML文档格式的汇编语言编程指导。
  本书所使用的电子器件范围很广,例如包括2764 PROM、1N914二极管、2N2222晶体管、7406集电极开路TTL驱动管、74LS系列TTL触发器、74HC573高速CMOS穿透式锁存器、3140运算放大器、75451接口驱动器、ULN2074驱动器、IRF540MOSFET(场效应晶体管)、6N139光电耦合器、MC1488 RS232驱动器、Dallas Semiconductor公司的DS1620温度控制器,以及各种ADC转换器件。要求每个学生都建立一个包含所有这些器件的数据资料的个人数据库是不现实的。换句话说,如果公司或学校能够建立一个可被所有学生访问的资料库则比较合适。书中的电路图通常包含了芯片编号和元件参数,但是没有引脚编号或电路板布图信息。当然,如果有了合适的器件数据表,多数电路是可以直接使用的。
  如何使用本书进行教学
  设计任何课程的第一步都是先创建一张教学目的列表,其中还应包括前期课程所讲授过的内容和为了学习后续课程所必须掌握的内容。某些重要论题(诸如计算机体系结构和模块化软件设计),可能包含在多个课程中。有了课程教学目的列表,导师(或系委员会)会寻找一本以合适的方式覆盖其中大多数教学内容的教材。要在一个学期的时间内讲授完本书的全部内容是不现实的。有两种方法可以选择本书的一个子集进行讲授。第一种方法是选择一种微计算机和编程语言,例如可以只讲授6811的汇编语言或只讲授6812的C语言程序设计,这样可以简单地跳过其他部分。
  另一种选择合适的子集的方法是挑选教学内容。例如,对初级实验班,可以指导学生掌握微计算机接口。这种班级可以重点在于讲授接口技术,这样可以只使用第1章到第4章、第6章、第8章,以及第11章到第13章的一小部分。对这些学生而言,本书的剩余部分可供他们在其后的学校实习项目或工作中作为参考。另一种可能是针对一个高级项目实验班。这个班的目标可能集中在实时嵌入式系统的系统层次。在这种情况下,这些学生可能已经学过某些微计算机编程,所以这种课程可以包含第5、9、10和15章中的高级接口技术,以及第12章到第14章的应用技术部分。对这些学生而言,本书的前半部分是复习,让他们得以总结前面所学的概念,以解决复杂的嵌入式系统的具体应用问题。
  在多数专业系中,模拟电路设计(例如运算放大器和模拟滤波器)已经在不同的课程中教过,所以第11章可以作为复习内容。关于模拟电路的特殊和详细的资料也包含在本书中,但着重于进行嵌人式系统设计时的整合问题。换句话说,开发嵌入式系统不仅仅依赖于计算机和软件工程的工具,而且涉及到整个电子学、计算机和软件工程。
  下一个必须做出的重要决定是学生实验的组织。作为工程教育者,我们十分看重教学过程中培养实际动手能力。另一方面,空间、材料和经费的限制迫使我们进行权衡,在力所能及的范围内做得最好。为此,我们依据成本的范围提出了三种可供选用的实验配置。其实读者可能希望在一个混合的仿真/物理实验配置中组合两种或更多的方法。我们的确相信随着技术不断进步,设计周期时间会越来越短,仿真方法的角色也正在变得越来越重要。另一方面,我们将向学生展示工程设计的各个阶段,包括问题定义、概念化、仿真、构建以及分析。
  在第一种实验配置中,我们使用传统的方法进行接口实验。对两组参加实验的学生,每组使用一块真实的微计算机开发板。这里有各种可能。Motorola自己为其微计算机制作了测试板。在诸如《Circuit Cellar INC》和《Electronics Now》等各种商业杂志的背面,我们可以找到许多商业代理。除了微计算机开发板,每个小组需要一台电源,一块用于搭建外部电路的面包板(protoyping area),以及相应的外部设备。还需要配置各种公用的开发/调试工作站。在这些专用的PC兼容机上,要安装汇编器或编译器。如果使用汇编语言进行开发,则可使用TExaS仿真器编辑和汇编软件。TExaS将创建标准的S19目标码文件供下载。可以使用ICC11的早期版本生成EVB代码。如果使用C语言编程,多数情形下最好使用C语言交叉编译器的当前版本。如前所述,本书中的特殊的C语言示例可以使用ImageCraft公司的ICC11和ICC12进行编译(http://www.imagecroft.com)。另一方面,HIWARE编译器是一种很好但比较昂贵的选择。每个工作站还需要配备测试仪器,例如示波器、数字万用表和信号发生器。昂贵的仪器(如逻辑分析仪和打印机)可以公用。某些邮购公司销售的二手或转让的电子仪器也可装备到实验室(有必要的话,可以参看作者的网页http://www.ece.utexas.edu/~valvano/book.HTML)。可以使用这种传统的实验环境完成许多实验任务。对已经采用本书的大学,可以下载这些任务的Microsoft Word格式文档,然后进行修改、打印,并将这些基于示例任务而形成的实验任务分发给学生。由于实验设计的繁琐和特殊性,修改肯定是必要的。在示范实验方案中,指定配置使用Technological Art公司的Adapt812板和ImageCraft公司的ICC12交叉编译器,但是,对于大多数的基于6805、68佃、6811和6812的微计算机开发板而言,此示例方案同样是合适的。
  第二种实验配置完全基于TExaS仿真器。本书中包含一张光盘,允许学生仅在一台计算机上安装该软件。多数情况下,学生使用此软件是为了完成学业,以及为了帮助完成学业而做助教或得到实验学分。使用此配置,读者既可以使用TExaS汇编器采用汇编语言进行软件开发,又可以使用ICC11或HIWARE的演示版开发C程序。如前所述,ICC11的这种免费版只能用于生成6811EVB代码。幸运的是,此仿真器支持6811的EVB结构。如果愿
意尝试这种ICC11/TExaS组合方式,可以运行TExaS应用程序的ICC11子目录中的示例。HIWARE的演示版也非常受限制,但可用于编写很短的程序。还可以得到使用仿真器的示例实验方案。同样,对已经采用本书的大学,可以下载这些方案的Microsoft Word格式文档,然后进行修改、打印,并将这些基于示例方案而形成的实验任务分发给学生。
  第三种配置用于完成邱12C语言程序的仿真。在这个实验计划中,要使用一间标准的PC兼容机实验室。安装TExaS和6812交叉编译器的专业版(如ImageCraft的ICC12或HIWARE),并且将学生集中在此进行实验。除了这两个软件外,不需要其他的开销。前面两段中所提到的实验任务可用于此配置。这种方法的优点在于以适当的代价就可以使用最新的微计算机技术完成C语言编程。
  每章结尾的习题可作为实验任务的补充。实际上,这些习题中的多数都是从过去的小测
验和期终考试中收集的。当然,这些习题强调各章的基本教学目的,没有超越常规实验任务
的复杂程度。
  光盘中有什么
  Readme.exe是关于TExaS的一个15分钟的入门介绍。这个文件不需拷贝到硬盘中,
读者可以直接在光盘中观看电影演示。
  TExaS是针对6805、6808、6811和6812微计算机的一个完整的编辑器、汇编器和仿真
器。它仿真外部硬件、I/O端口、中断、存储器和程序的执行,是学习嵌入式系统的工具。
此软件不是免费软件,但购买本书则意味着有权安装该软件的一个拷贝。TExaS目录包含
其安装程序,这是读者在使用该软件之前必须做的。一旦安装,TExaS将创建9个子目录:
  ·MC6805   包含6805汇编语言示例
  ·MC6808   包含6808汇编语言示例
  ·MC6811   包含6811汇编语言示例
  ·MC6812   包含6812汇编语言示例
  ·Hiware08  包含6808使用演示版编译器的C语言示例
  ·Hiware11  包含6811使用演示版编译器的C语言示例
  ·Hiware12  包含6812使用演示版编译器的C语言示例
  ·ICC11    包含6811使用免费软件版编译器的C语言示例
  ·ICC12    包含6812的C语言示例(不使用免费软件版编译器)
  在ICC11子目录中同时包含ImageCrdt免费软件版编译器。读者可以运行已有的ICC12
示例,但是要编辑和重新编译,就需要商业版C编译器。
  在PDF目录中包含许多Adobe pdf格式的产品数据表。这些信息不需要拷贝到硬盘中,读者可以直接在光盘上阅读这些数据表。特别是其中有许多微计算机、数字逻辑、存储器芯片、运算放大器、ADC、DAC、计时器芯片和接口芯片的数据表。如果希望下载最新的数据表,或者搜索其他的器件,在站点http://www.ece.utexas.edu/~valvano/book.HTML上有一个链接网页。
  在example目录中包含本书的软件。例如,第1章中的所有汇编语言程序都可以在“Chap1.asm”文件中找到。类似,第1章中的所有C语言程序都可以在“Chap1. c”文件中找到。针对不同微计算机的版本位于对应的子目录MC6805、MC6808、MC6811和MC6812之中。并不是所有程序都有每个微计算机版本。
  在assembly目录中包含一个HTML文档,用于描述在TExaS环境中如何使用汇编语言为嵌入式系统编程。该文档不需要拷贝到硬盘中,读者可以直接在光盘上阅读此文档。(同时请注意,作为其联机帮助的组成部分,TExaS软件自身包含许多关于汇编语言开发的信息。)
  在embed目录中包含一个描述如何使用C语言为嵌入式系统编程的HTML文档。该文档不需要拷贝到硬盘中,读者可以直接在光盘上阅读此文档。
  在lab目录包含用于实验的ICCll和ICCl2软件。
  在Hiware目录中包含Hiware/6808/6811/6812 C/C十十编译器。该限制版可用于开发函数数量少于10个、目标代码小于1000字节的小程序。Hiware软件在使用之前必须先安装。
  致谢
  本书是许多人共同努力的结果。首先,我想感谢许多与我一起愉快工作过的出色助教,在这些努力工作、不计报酬的工作者之中包括Pankaj Bishnoi、Rajeev Sethia、Adson da Rocha、Bao Hua、Raj Randeri、Santosh Jodh、Naresh Bhavaraju、Ashutosh Kulkarni、Bryan Stiles、V.Krishnamurthy、Paul Johnson、Craig Kochis、Sean Askew、George Panayi、Jeehyun Kim、Vikran Godbole、Andres zambrano和Ann Meyero自从1981年我第一次以早期的Motorola MC6809为例教授微计算机接口课程时起,我一直梦想编写此书。经过这么多年的风风雨雨,我的助教们一直在为本书的成功做着巨大的贡献,特别是在实验的设计方面。同样,每个学期我的学生们也用他们的热情、奉献和求知欲激励着我。
  其次,我要感谢得克萨斯大学奥斯汀分校中我的同事们的宽容精神和专业修养。从我个人的角度,John Pearce博土在我的教学生涯中一直给予我十分必要的鼓励和支持。还有John Cogdell博士和Francis Bostick博士协助我进行模拟电路设计,Baxter Womack博士和Robert Flake博士为我提供了关于控制系统的有益资料。本书及其所配的软件包含了许多从数字逻辑实例中抽取出的有限状态机模型,Charles Roth博士为我做了说明。还要感谢Jack Lipovski博士对我的鼓励和支持,旁观者也许会认为Jack博士与我在每个问题上都持对立的立场,然而实际上这种友好的竞争让我们可以组织好我们飘忽不定的思想,使得在此过程中所做的每一件事都能做得更好。
  最后,我要感谢我的祖父母和父母在品德和信用方面对于我的宝贵教育,更重要的是要感谢全家人给予我的关爱、宽容和支持,特别是我的孩子们,Ben、Dan和Liz。
  Jonathan W.Valvano

译者简介

李曦 周学海 方潜生 熊悦:暂无简介

译者序

后PC时代的到来,使得人们开始越来越多地接触到一个新的概念——嵌入式系统。相对于通用计算机系统,嵌入式系统是以应用为中心,以计算机技术为基础,适用于对功能、可靠性、成本、体积、功耗有严格要求的应用领域的专用计算机系统。嵌人式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物,它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序这四个部分组成,用于实现对其他设备的控制、监视或管理等功能。目前,嵌入式系统的应用已经渗透到工业、医疗
卫生、国防以及人们日常生活的各个方面,如电冰箱、微波炉、手机、PDA、VCD机、机顶盒、汽车、数控机床、航天器等系统中都包含嵌入式系统。
  随着嵌入式系统应用的普及,国内对精通嵌入式系统设计的专业人才的需求越来越大,同时也迫切需要一本好的教科书。嵌入式系统的设计涉及计算机软硬件、数字信号处理以及计算机网络等学科在内的多个领域的专业知识,本书对此进行了系统、完整的介绍,主要内容包括嵌入式微计算机/微控制器的基本结构与工作原理、嵌入式软件设计的基本技术、嵌入式系统的数字/模拟接口技术、数据采集与信号处理技术、基于微计算机的控制系统和网络互连技术等。虽然本书的介绍基于Motorola 6805/6808/6811/6812微处理器,但是本书讲解的基本设计原理和技术是通用的。本书作者Jonathan W.Valvan。教授从事嵌入式系统应用与教学工作20余年,积累了丰富的实践经验,书中的大量示例源于其所设计的实际应用系统,也是本书的重要特色,对培养学生的实际动手能力极为有益。
  李噶、周学海、方潜生、熊悦等组织并参加了本书的翻译和审校工作,参加翻译的人员还有翟晓明、胡潇、雷霆等。李曦翻译了前言和第1、3、11、13、15章,周学海翻译了第4、9、10章,方潜生翻译了第12章、熊悦翻译了第2、5、14章,胡潇翻译了第6章,瞿晓明翻译了第7章,雷霞翻译了第8章。全书最后由李曦、周学海和方潜生等进行了审校。
  在本书的翻译过程中,译者参照该书的WWW主页中的勘误表,对书中的疏漏之处进行了更正。此外,译者对于未包括在勘误表中的明显笔误和排版错误也做了订正。
  限于译者水平,译文中的疏漏和错误在所难免,敬请读者批评指正。
  译 者
  2002年春于科大西区

图书目录

译者序
前 言
第1章 基于微计算机的系统
1.1 嵌入式计算机系统
1.1.1 应用
1.1.2 软件问题
1.1.3存储映像体系结构
1.2 MC68HC05体系结构
1.2.1 MC68HC705J1A
1.2.2 MC68HC05C4
1.2.3 MC68HC05寄存器
1.2.4 MC68HC05寻址模式
1.3 MC68HC08体系结构
1.3.1 MC68HC708XL36介绍
1.3.2 MC68HC708XL36存储映像
1.3.3 MC68HC08寄存器
1.3.4 MC68HC08寻址模式
1.4 MC68HC11体系结构
1.4.1 MC68HC11家族
1.4.2 MC68HC11扩展模式
1.4.3 MC68HC11寄存器
1.4.4 MC68HC11寻址模式
1.4.5 MC68HC11 EEPROM的擦除与编程
1.5 MC68HC12体系结构
1.5.1 MC68HC12家族
1.5.2 MC68HC12扩展模式
1.5.3 MC68HC12寄存器
1.5.4 MC68HC12寻址模式
1.5.5 MC68HC12 EEPBOM的擦除与编程
1.5.6 MC68HC912B32快EEPROM的擦除与编程
1.6 数字逻辑与集电极开路逻辑
1.7 初始化和访问I/O端口
1.7.1 I/O端口的地址和方向寄存器的基本概念
1.7.2 简单I/O软件
1.7.3 I/O示例
1.8 微计算机选择
1.9 词汇
1.10 习题
第2章 软件开发
2.1 高质量的编程
2.1.1 定量性能指标
2.1.2 定性性能指标
2.2 内存分配
2.3 自成文档的代码
2.4 抽象
2.4.1 定义
2.4.2 米勒型FSM
2.4.3 摩尔型FSM
2.5 模块化软件开发
2.5.1 模块
2.5.2 将软件任务划分为模块
2.5.3 使用汇编语言开发模块化软件的规则
2.6 层次化软件系统
2.7 设备驱动程序
2.7.1 设备驱动程序的基本概念
2.7.2 串行通信接口设备驱动程序
2.8 面向对象接口
2.8.1 使用标准C封装的对象
2.8.2 使用C++的面向对象接口
2.8.3 使用标准C和C++的可移植性
2.9 线程
2.9.1 单线程执行
2.9.2 多线程和重入
2.10 递归
2.11 调试策略
2.11.1 调试工具
2.11.2 调试理论
2.11.3 功能调试
2.11.4 性能调试
2.11.5 分析
2.12 词汇
2.13 习题
第3章 接口方法
3.1 概述
3.1.1 性能分析
3.1.2 软件与I/O状态的同步
3.1.3 各种可用的I/O端口
3.2 盲周期计数同步
3.2.1 盲周期打印机接口
3.2.2 盲周期ADC接口
3.3 Gadfly同步或忙等待同步
3.4 并行I/O接口示例
3.4.1 盲周期打印机接口
3.4.2 精确延时
3.4.3 盲周期ADC接口
3.4.4 使用锁存输入的Gadfly同步键盘接口
3.4.5 使用简单输入的Gadfly同步ADC接口
3.4.6 使用输入握手的Gadfly同步外部传感器接口
3.4.7 使用输出握手的Gadfly同步打印机接口
3.4.8 温度传感器的Gadfly同步串行接口
3.5 词汇
3.6 习题
第4章 中断同步
4.1 中断的概念
4.1.1 中断的定义
4.1.2 中断服务程序
4.1.3 何时使用中断
4.1.4 中断线程间的通信
4.2 可重入程序
4.3 先进先出队列
4.3.1 FIFO简介
4.3.2 使用双指针实现FIFO队列
4.3.3 使用双指针/计数器实现FIFO队列
4.3.4 使用索引实现FIFO队列
4.3.5 FIFO的动态特性
4.4 6805/6808/6811/6812中断的一般性质
4.4.1 6805的中断机制
4.4.2 6808的中断机制
4.4.3 6811的中断机制
4.4.4 6812的中断机制
4.5 中断向量和优先级
4.5.1 MC6805中断向量和优先级
4.5.2 MC68HC708XL36中断向量和优先级
4.5.3 MC68HC11A8中断向量和优先级
4.5.4 MC68HC812A4中断向量和优先级
4.5.5 MC68HC912B32中断向量和优先级
4.6外部中断设计方法
4.7 轮询方式与向量中断的比较
4.8 使用中断的键盘接口
4.9 使用IRQ中断的打印机接口
4.10 使用XIRQ同步的电源系统接口
4.11 使用链表的中断轮询
4.11.1 使用链表的6811中断轮询
4.11.2 使用链表的6812中断轮询
4.12 使用中断请求线实现的固定优先级
4.13 使用XIBQ实现的固定优先级
4.14 循环轮询
4.15 周期轮询
4.15.1 使用6811 STRA的实时中断
4.15.2 6811 RTI
4.15.3 6812 RTI
4.15.4 6812定时器溢出中断
4.16 词汇
4.17 习题
第5章 线程
5.1 多线程抢占式调度器
5.1.1 循环调度器
5.1.2 其他调度算法
5.1.3 线程的动态分配
5.2 信号量
5.2.1 自旋锁信号量实现
5.2.2 阻塞信号量的实现
5.3 信号量的应用
5.3.1 线程同步或同步点
5.3.2 资源共享、不可重人代码或互斥
5.3.3 两个线程间使用邮箱进行线程通信
5.3.4 多个线程使用FIFO队列进行线程通信
5.4 词汇
5.5 习题
第6章 时钟生成和测量
6.1 输入捕获
6.1.1 输入捕获的基本原则
6.1.2 输入捕获详解
6.1.3 使用输入捕获实现实时中断
6.1.4 周期测量
6.1.5 脉冲宽度测量
6.2 输出比较
6.2.1 一般概念
6.2.2 输出比较详解
6.2.3 使用输出比较进行周期性中断
6.2.4 方波的产生
6.2.5 脉宽调制
6.2.6 延迟脉冲的产生
6.3 频率测量
6.3.1 频率测量的概念
6.3.2 分辨率为100Hz的频率测量
6.4 频率和周期之间的转换
6.4.1 使用周期测量来计算频率
6.4.2 使用频率测量来计算周期
6.5 同时使用输入捕获和输出比较的测量
6.5.1 △P为1ms的周期测量
6.5.2 △f为0.1Hz的频率测量
6.6 词汇
6.7 习题
第7章 串行I/O设备
7.1 引言与定义
7.2 RS232规范
7.3 BS422/AppTalk/RS423/RS485平衡差分线路
7.3.1 BS422输出规范
7.3.2 RS422输人规范
7.3.3 RS485半双工信道
7.4 其他通信协议
7.4.1 电流环路信道
7.4.2 调制解调器简介
7.4.3 光纤信道
7.4.4 数字逻辑信道
7.5 串行通信接口
7.5.1 异步模式传送
7.5.2 异步模式接收
7.5.3 MC68HC05C8 SCI详解
7.5.4 MC68HC708XL36 SCI详解
7.5.5 MC68HC11A8 SCI详解
7.5.6 MC68H812A4 SCI详解
7.6 SCI应用
7.6.1 SCI硬件接口
7.6.2 仅用于SCI接收的中断接口
7.6.3 仅用于SCI发送的中断接口
7.6.4 SCI的输入和输出中断
7.6.5 串口打印机接口
7.7 使用SPI的同步发送和接收
7.7.1 SPI基础
7.7.2 MC68HC05C8 SPI详解
7.7.3 MC68HC708XL36 SPI详解
7.7.4 6811 SPI详解
7.7.5 6812 SPI详解
7.7.6 SPI应用
7.8 词汇
7.9 习题
第8章 并行端口接口
8.1 输入开关和键盘
8.1.1 开关与计算机的接口
8.1.2 使用电容的硬件消抖
8.1.3 软件消抖
8.1.4 多个按键接口的基本方法
8.1.5 16键的电子琴
8.1.6 4×4扫描键盘
8.1.7 多路复用/多路分解扫描式键盘
8.2 输出LED
8.2.1 单个LED接口
8.2.2 7段LED接口
8.2.3 扫描式7段IED连接
8.2.4 使用7447 7段式译码器的扫描LED接口
8.2.5 使用MC14489显示驱动器的集成LED接口
8.3 液晶显示
8.3.1 LCD基础知识
8.3.2 使用MC14543的简单LCD接口
8.3.3 使用MC145000和MC145001的扫描LCD接口
8.3.4 使用HD44780控制器的并口LCD接口
8.4 用于实现计算机控制的电流开关的晶体管
8.5 计算机控制的继电器、螺线管和直流电动机
8.5.1 继电器简介
8.5.2 电磁继电器基础
8.5.3 弹簧继电器
8.5.4 螺线管
8.5.5 脉宽调制直流电动机
8.5.6 电磁继电器、螺线管和直流电动机的接口
8.5.7 固态继电器
8.6 步进电机
8.6.1 步进电机示例
8.6.2 基本操作
8.6.3 步进电机硬件接口
8.6.4 步进电机轴编码器
8.7 词汇
8.8 习题
第9章 存储器接口
9.1 简介
9.2 地址译码
9.2.1 全译码方式
9.2.2 最小代价译码
9.2.3 地址译码中的一些特殊情况
9.2.4 灵活的全地址译码器
9.2.5 MC68HC812A4上集成的地址译码器
9.3 时序关系表示的语法
9.3.1 有效时间区间和请求时间区间
9.3.2 时序图
9.4 一般的存储器总线时序
9.4.1 同步总线时序
9.4.2 部分异步总线时序
9.4.3 全异步总线时序
9.5 外部总线时序
9.5.1 同步和非同步信号
9.5.2 Motorola MC68HC11A8外部总线时序
9.5.3 Motorola MC68HC812A4外部总线时序
9.5.4 Motorola MC68HC912B32外部总线时序
9.6 接口的一般方法
9.6.1 6811的接口设计
9.6.2 在扩展窄模式下的6812接口设计
9.6.3 在扩展宽模式下的6812接口设计
9.7 存储器接口设计举例
9.7.1 32K PROM接口设计
9.7.2 8K RAM接口
9.7.3 32K 16位PROM与MC68HC812A4的接口
9.7.4 16位8K RAM的接口
9.7.5 扩展的地址数据页与MC68HC812A4的接口
9.7.6 扩展地址程序页与MC68HC812A4的接口
9.8 动态RAM(DRAM)
9.9 词汇
9.10 习题
第10章 高速I/O接口
10.1 速度需求
10.2 高速I/O应用
10.2.1 存储设备
10.2.2 高速数据采集
10.2.3 视频显示
10.2.4 高速信号生成
10.2.5 网络通信
10.3 高速接口的一般方法
10.3.1 硬件FIFO
10.3.2 双端口存储器
10.3.3 分体切换存储器
10.4 DMA的基本原理
10.4.1 DMA周期
10.4.2 DMA初始化
10.4.3 突发方式与周期窃取DMA
10.4.4 单地址与双地址DMA
10.4.5 DMA编程
10.5 MC68HC708XL36举例
10.5.1 DMA I/O寄存器
10.5.2 存储器到存储器的块传送
10.5.3 SCI发送
10.5.4 SPI接收
10.5.5 简单波形生成
10.6 词汇
10.7 习题
第11章 模拟接口
11.1 电阻与电容
11.1.1 电阻
11.1.2 电容
11.2 运算放大器(运放)
11.2.1 晶体管模型
11.2.2 理想运算放大器
11.2.3 真实运算放大器模型
11.2.4 运算放大器的类型
11.2.5 饱和属性
11.2.6 线性运算放大器电路的基本规则
11.2.7 运算放大器电路的线性模式
11.2.8 偏置补偿运算放大器电路
11.2.9 高增益运算放大器电路
11.2.10 电流电压转换电路
11.2.11 电压电流转换电路
11.2.12 积分电路
11.2.13 微分电路
11.2.14 滞后电压比较器
11.3 模拟滤波器
11.3.1 简单的滤波器
11.3.2 巴特沃思滤波器
11.3.3 带通和带阻滤波器
11.4 数模转换
11.4.1 DAC的参数
11.4.2 使用求和放大器实现DAC
11.4.3 B—2R梯形3位DAC
11.4.4 采用DAC8043的12位DAC
11.4.5 DAC器件的选择
11.4.6 DAC波形发生器
11.5 模拟数字转换
11.5.1 ADC的参数
11.5.2 2位快速ADC
11.5.3 8位斜坡ADC
11.5.4 逐次逼近ADC
11.5.5 实现ADC的软件算法
11.5.6 16位双斜率ADC
11.5.7 ∑△ ADC
11.5.8 ADC接口
11.6 采样与保持
11.7 双极型场效应管模拟多路选择器
11.8 ADC系统
11.8.1 ADC系统框图
11.8.2 ADC系统的电源与接地
11.8.3 高速CMOS模拟输入端的输入保护
11.9 多访问循环队列
11.10 内部ADC模块
11.10.1 6805的ADC系统
11.10.2 6808的ADC系统
11.10.3 6811的ADC系统
11.10.4 6812的ADC系统
11.10.5 ADC软件
11.11 词汇
11.12 习题
第12章 数据采集系统
12.1 概述
12.1.1 准确度
12.1.2 分辨率
12.1.3 精度
12.1.4 可再生性或可重复性
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 DAS设计
12.3.1 介绍和定义
12.3.2 使用采样定理确定采样率
12.3.3 确定ADC位数
12.3.4 模拟信号处理定义
12.3.5 ADC转换速度
12.3.6 采样保持电路(S/H)定义
12.4 噪声分析
12.4.1 热噪声
12.4.2 散射噪声
12.4.3 1/f噪声或粉红噪声
12.4.4 传感器的局限性
12.4.5 磁场感应
12.4.6 位移电流或电容(电场)耦合
12.4.7 阻抗负载
12.4.8 CMRR
12.4.9 频率响应
12.4.10 人为移动
12.5 数据采集系统示例分析
12.5.1 温度测量系统
12.5.2 受力测量系统
12.5.3 使用电子参考的热电偶接口
12.5.4 心跳测量
12.5.5 位置测量系统
12.6 词汇
12.7 习题
第13章 基于微计算机的控制系统
13.1 数字控制系统概述
13.2 开环控制系统
13.2.1 烤箱的开环控制
13.2.2 开环交通控制
13.2.3 开环步进控制器
13.3 简单闭环控制系统
13.3.1 Bang—Bang温度控制
13.3.2 使用增量控制的闭环位置控制系统
13.4 PID控制器
13.4.1 实现PID控制器的一般方法
13.4.2 速度PID控制器
13.4.3 PWM执行机的积分控制器
13.4.4 确定PID控制器参数的实验法
13.5 模糊逻辑控制
13.5.1 DAC和ADC模糊控制器
13.5.2 PWM模糊控制器
13.5.3 使用模糊逻辑的温度控制器
13.6 词汇
13.7 习题
第14章 简单网络
14.1 概述
14.2 串行主从桌面总线
14.3 使用三态缓冲的并行总线应用
14.4 使用集电极开路逻辑的并行总线应用
14.5 二进制同步通信
14.6 IEEE488通用仪表总线
14.7 小型计算机系统接口
14.8 调制解调器通信
14.8.1 FSK调制解调器
14.8.2 相位编码调制解调器
14.8.3 正交振幅调制解调器
14.9 X.10协议
14.10 词汇
14.11 习题
第15章 数字滤波
15.1 基本原理
15.2 数字滤波器示例
15.3 脉冲响应
15.4 高Q值60Hz数字陷波滤波器
15.5 时延对数字滤波器的影响
15.6 高Q值数字高通滤波器
15.7 低Q值数字高通滤波器
15.8 低Q值数字低通滤波器
15.9 数字低通滤波器
15.10 直接形式实现
15.11 词汇
15.12 习题

教学资源推荐
作者: 俞辉 李永 刘凯 王晓虹 等编著
作者: [美]戴维·A. 帕特森(David A. Patterson) 约翰·L. 亨尼斯(John L. Hennessy) 著
作者: Linda Null,Julia Lobur
参考读物推荐
作者: 汪文祥 邢金璋 著
作者: 高显生 编著
作者: 邱郁惠
作者: 国际商业机器中国有限公司