图书前言

    

译  者  序

提起计算机,大部分人会下意识地想到办公桌上的PC机,进一步的,会想起Intel公司的奔腾芯片,但事实上,PC机仅仅是计算机的一部分,在桌面办公以外的众多场合,如仪器接口,自动化生产和工业控制等方面,计算机往往承担着关键性的工作,在这些场合的计算机中,微控制器(而不是微处理器)是系统的核心。

鉴于微控制器在现代电子智能仪器仪表及嵌入式系统中起着非常重要的作用,微控制器及其设计已经成为那些有志于从事电子信息系统开发工作的工程师所必须掌握的基础知识。考虑到市场上有多种类型的微控制器,不可能逐一学习,只能选择最典型的微控制器加以学习。如果说存在一种应用最广泛,配套开发工具最齐全且经久不衰的微控制器的话,那就是业界公认的Intel公司的8051系列微控制器。因而,在绝大部分大专院系的电子类专业中,都开设了和8051微控制器相关的课程。

俗语说,“工欲善其事,必先利其器”。8051微控制器体系庞大,且同时涉及到软硬件方面的知识,初学者要想理清其中的头绪,并不是一件容易的事。译者当年也是学生,也曾学习过8051微控制器,仍然记得在刚开始学习该课程的时候,常有头晕目眩之感,面对宝山而发无力攫取之叹。现在回想起来,觉得原因在于课程的衔接上。在学习8051课程之前,学生只上过数字电路课程,所熟悉的是逻辑门、触发器、卡诺图等概念,而8051课程,一开始就是“软硬兼施”,无论是处理方法,还是设计流程,都和前面的课程有着较大的差别,学生常常对此感到难以适应。因而,要想学好这门课程,教材的选择很重要。一本好的教材,一本能够带领读者迅速入门的教材,往往能够起到事半功倍的作用。

8051微控制器在国外的应用时间长于国内,在北美,已经出版过许多关于8051微控制器的书籍,其中不乏优秀的教材。在众多佳作之中,《8051微控制器》以其体系清晰,案例丰富且讲解透彻的特点,赢得了读者的交口称赞和市场的良好反应,本书也因此而一版再版。

本书作者I.Scott Mackenzie长期从事8051的开发以及教学工作,《8051微控制器》是作者长期实践经验的总结。作者考虑到大专院校学生各年级的课程安排问题,对全书的体系结构做了独特的安排,便于初学者学习。

全书风格简单明了,作者以一个老师的口气娓娓道来,由易到难,由点到面,由硬件到软件,再由软件到系统,继而从系统到工程。前面辅以大量的注解及例子,后面集中介绍一些可用于实际工作场合的设计实例,中间还时常插入若干富有启发性的讨论话题,讲解详细,案例丰富。逐步带领学生掌握8051系列微控制器的精髓。

本书的另一大特色在于,除去介绍8051微控制器的相关知识以外,全书特别着重培养读者对微控制器设计方法学的领悟,读者学完本书后,通常能举一反三,轻而易举地从事其他类型微处理器的开发和设计工作。

有一点必须加以说明,本书不仅适合于学生,而且还适合于从事实际工作的工程师,因为本书在8051微控制器的软件和硬件部分,对那些容易被忽视的细节之处,给予了详细并明确的阐释,且在正文和附录之中,包含有大量珍贵的技术资料。工程师完全可以把本书常备于案头以供参考之用。

译者在翻译过程中,参考了国内若干相关书籍,很有意思的是,发现不少书籍都带有本书的影子,每当发现相似文字和例子的时候,都不觉会心一笑,且益发坚定地相信,作为众多8051教材中的精品,本书必将有助于广大读者学好并用好8051系列微控制器。

由于译者水平有限,加之时间仓促,译文中难免有不妥之处,敬请广大读者不吝指正。

    

译 者

2005.2

 

前    言

本书论述MCS-51系列微控制器的硬件特征和软件体系。目标读者群是大专院校中专业为电子技术,计算机技术,电气工程以及计算机工程的学生,此外,还包括那些从事实践工作,且对学习微控制器有兴趣的专家或工程师。

撰写本书,就是一个尝试和改进采用何种方式来充分满足读者对于8051相关信息的需求的过程。《8051微控制器》的原型,是为计算机工程专业的学生在大学第5学期开设的一门课程。正如第10章中叙述的那样,该课程要求学生实现一个基于8051的单板计算机。反过来,在第6学期学习“工程”课程时,学生会结合自选的硬件和自己编写的软件,把这个单板计算机用作目标系统,在此系统上设计实现一个基于8051微控制器的“产品”,并撰写相关的文档。

就像所有其他的微控制器一样,8051包括很多高层次的功能特性,因而,本书所重点关注的内容不是8051电气特性方面的细节,而是8051的体系架构和程序设计。在Intel公司的ASM51汇编器和RL51连接器/定位器的文档中,讨论了相关的软件话题。

个人认为,由于很难把各部分内容按顺序组织起来,关于微控制器或微处理器的课程的讲述,在本质上要比其他的课程(例如数字系统的课程)要难一些。书中列出的第一个程序基于这样的假设:学生已经对CPU的编程模式、寻址模式、地址和地址所在空间包含的内容等概念有所了解。考虑到这点,如果采用本书作为课本,不一定得严格按照书中的顺序来授课。但本书的第1章是一个不错的起点,该章给出了一个关于微控制器的通用介绍,且对微控制器和微处理器之间的区别给予了特别的关注。

第2章介绍了8051微控制器以及MCS-51系列中各个相似微控制器的硬件体系。书中给出了一些简单的例子,包含很短的指令序列。为了理解这些例子,学生得掌握一些软件方面的知识,授课者在讲解这些例子的时候,需要预先同步介绍第3章、第7章、附录A以及附录C中的若干内容。附录A中包含一张关于8051指令集的完整表格,在课程学习时特别有用。

第3章介绍指令集,首先给出的是8051寻址模式的定义。指令集可以方便地划分为各种指令类型(数据传送、程序分支等),因此,授课者可以逐步对其加以论述。在介绍寻址模式和各种指令类型的时候,书中讨论了大量简短的例子。

第4章、第5章和第6章论述了8051的片上功能特性。首先介绍定时器,接下来介绍串口(串口需要一个定时器作为波特率发生器),最后介绍中断。这三章中的例子,比起前面所举出的例子,要长一些,也复杂一些。授课者最好不要急于讲解这三章,有一点非常重要:在学习这些章节前,学生对8051的硬件架构和指令集应该有一个清楚的理解。

在讲述前面六章时,若是有必要,会涉及到第7章中的许多内容。但是,就培养学生从事大型项目的能力这方面来说,第7章中的内容也许是最重要的。该章中的许多深层次内容,诸如汇编时的表达式求值、模块化编程、连接和定位、宏编程等,对许多学生而言,是一个极大的挑战。在这一章里,无论怎样强调动手经验的重要性都是不过分的。授课者应该鼓励学生,把这一章里的例子输入计算机,使用ASM51,RL51和OH(把目标文件转为十六进制文件的程序)等工具进行实验,并观察程序的输出和所显示的错误信息。

第8章和第9章里介绍的是一些高级话题:程序设计方法、编程风格以及开发环境。这两章介绍的是些更广泛,概念性更强的内容,但在实际开发场合,这些内容很重要。

第10章里讲解了几个设计案例,除了自选的硬件之外,还给出了相应的支撑软件。软件中的注释很全面,是这些案例中的重点所在。从本书的第2版起,开始包含两个额外的接口:一个是数模转换的输出接口,用到了型号为MC1408的8位DAC芯片;一个是模数转换的输入接口,用到了型号为AC08048的8位ADC芯片。第10章的设计案例中,有一个是SBC-51类型的8051单板计算机。SBC-51可以作为8051微控制器课程的基础。附录F中包括一个短小的监控程序,但该程序足以使得8051“启动且运行”。开发系统还需要用到一台宿主计算机,该计算机具有双重功能,先把程序下载到SBC-51上执行,之后,充当控制用的哑终端。

在给计算机工程专业的学生讲授8051课程的数年里,很多学生动手布线实现了SBC-51的原型。本书第一版问世后不久,一家叫URDA的公司(位于宾夕法尼亚的Pittsburgh)开始生成和销售SBC-51的PC版本。实际表明,在给从事技术工作的学生讲授8051微控制器的时候,若要采用“讲课加试验”的方式来完成整套课程,采用该公司的产品,是一个效费比合适的解决方案。读者可联系URDA公司(电话是1-800-338-0517),获取更多信息。

本版中包括许多新的,带有注解的例子,可用来帮助学生和老师完成8051的相关课程。每个例子以一个问题开始,接下来直接给出答案。在答案之后,有一个讨论区域,叙述问题和答案的内在工作原理,其中采用解释性的方法,从不同的角度来讨论例子,并给出了详细的阐述。

在本书的撰写中,大量参考并引用了Intel关于MCS-51器件的相关文档。特别要提出的是,附录C中包含的是8051所有指令的定义,在此,非常感谢Intel公司。我还要对如下人员加以致谢,他们审查了我的手稿,并提供了宝贵的评论,批评和建议:ITT理工学院的Mohammad Dabbas,Villanova大学的Jim Harris,DeVry技术学院的Muhammad A,Malik。

  I.Scott.MacKenzie