单片机原理及接口技术教学设计(全)_第1页
单片机原理及接口技术教学设计(全)_第2页
单片机原理及接口技术教学设计(全)_第3页
单片机原理及接口技术教学设计(全)_第4页
单片机原理及接口技术教学设计(全)_第5页
已阅读5页,还剩239页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《单片机原理》课程教学设计一、课程的基本描述课程名称:单片机原理英文译名:PrinciplesofMicrocontrollerUnit总学时:50 讲课学时:40 实验学时:10授课对象:自动化测试与控制系本科生、电类专业本科生课程要求:必修课程分类:专业课开课时间:第六学期先修课程:计算机原理及组成技术、脉冲与数字电路二、教材、主要参考书简介1.教材张毅刚主编,单片机原理及应用,北京:高等教育出版社,2004.1本书为普通高等教育“十五”国家级规划教材,是在张毅刚主编的《AT89S51单片机应用设计》一书的基础上,经过多年的教学实践和不断的完善,于2004年1月出版,现已被全国几十所高校采用作为“单片机原理”课程的教材。该书的特点是:结合应用,内容精选,软件与硬件相结合,重点介绍了接口设计与应用系统设计,内容覆盖了应用设计中的大部分内容。2.主要参考书(1)胡汉才编著,单片机原理及其接口技术,北京:清华大学出版社,1996.7本书在详细介绍MCS-51单片机基本工作原理的基础上,以接口设计为主线,对各种接口设计作了介绍,同时实验课的内容也作为一章写入该书中。该书内容讲解详尽,可作为学生自学的主要参考书。(2)李华主编,AT89S51系列单片机实用接口技术,北京:北京航空航天大学出版社,1993.8本书以单片机的各种接口设计为主要介绍内容,本书的特点是:各种接口设计介绍的极为详尽,并介绍了许多实用器件,可作为学生在进行硬件设计时的主要参考书。(3)李广弟主编,单片机基础,北京:北京航空航天大学出版社,2001本书的全面而系统地介绍了单片机的硬件结构及指令系统,各种接口设计,内容通俗易懂,是学生自学时的参考教材之一。(4)何立民主编,AT89S51系列单片机应用系统设计,北京:北京航空航天大学出版社,1990本书对单片机的各种接口设计介绍的极为详细,同时介绍了许多实用器件,可作为学生在进行硬件设计时的主要参考书。(5)张毅刚主编,AT89S51单片机实用子程序设计,哈尔滨大学出版社,2003.6本书系统的介绍了AT89S51汇编语言的各种常用子程序的设计,主要包括二进制的定点、浮点计算、码制转换、常用函数、表格处理等。本书可作为学生在进行AT89S51汇编语言程序设计时的参考书。三、实验教材单片机原理实验指导书.张毅刚.哈工大印刷,2005.4四、教学的目的和要求1.教学目的通过本课程的学习,使学生掌握AT89S51单片机的硬件基本结构、内部各种功能部件的工作原理及编程控制、指令系统以及各种常用硬件接口的设计,最终使学生能够根据工程开发任务的要求,具有实现AT89S51单片机应用系统的设计能力。2.教学要求本课程对学生掌握内容的要求:(1)单片机概述首先使学生了解什么是单片机;单片机的历史及发展概况;单片机的发展趋势;单片机的应用领域;为什么在众多的单片机的产品中,选择AT89S51单片机作为主流型单片机来讲授;了解各种与AT89S51兼容的增强型和扩展型的80C51系列单片机,尤其是让学生了解目前使用较多的ATMEL和PHILIP公司的与AT89S51系列兼容的产品。(2)AT89S51硬件结构主要包括:AT89S51的引脚、CPU、存储器的结构、4个并行I/O端口、时钟电路以及复位电路。通过本部分内容的学习,要求学生从应用的角度熟练掌握片内的硬件结构,为后续的硬件接口设计打下基础。(3)AT89S51的指令系统主要内容包括AT89S51的汇编语言的指令格式、寻址方式,并从功能分类的角度来介绍五大类指令。通过本部分内容的学习,应使学生熟练地掌握AT89S51汇编语言的各种指令,要求学生通过学习教材中的例子,举一反三,灵活地掌握汇编语言指令的使用。(4)8051的汇编语言程序设计主要内容包括:介绍机器语言、汇编语言、高级语言,各自的特点;伪指令;汇编语言源程序的汇编;汇编语言各种程序设计,如子程序设计,查表、关键字查找、数据极值查找、数据排序、分支转移、循环以及码制转换子程序的设计。通过本部分内容的学习,应使学生熟练地掌握上述各种常用的8051汇编语言子程序的设计,这是程序设计的基础。为使学生更好地掌握本部分内容,配以部分实验来巩固所学的内容。(5)AT89S51片内的各种功能部件主要内容包括AT89S51片内中断系统、定时器/计数器、串行口。要求学生掌握上述功能部件的工作原理、有关的特殊功能寄存器的格式、功能以及如何进行编程,尤其是各功能部件的具体应用。(6)各种硬件接口设计主要内容包括AT89S51存储器接口,I/O接口,键盘、显示器、打印机接口、液晶显示器、BCD码拨盘接口,D/A、A/D接口设计与软件驱动程序的设计。这部分内容是进行单片机应用系统硬件设计的基础,要求学生重点掌握。(7)AT89S51应用系统的设计、开发和调试本部分内容是前面介绍的所有内容的综合。主要介绍应用系统的设计步骤,硬件设计、软件设计,通过介绍两个系统的设计实例,使学生掌握系统设计的基本方法。最后介绍应用系统的开发和调试,尤其是使用仿真开发系统对应用系统的开发调试过程,学生应重点掌握,并与实验课的内容紧密结合起来。五、课程分析和教学方法本课程是一门工程实践性强的课。首先应该让学生对单片机概念有一个正确的认识,要注意与先前的微机原理课程的内容相结合,同时也是微机原理课的延伸。在单片机型号的选择中,讲清楚在众多型号的单片机中,为什么选择AT89S51单片机及80C51系列单片机来讲解。 整个课程内容分为三大部分。第一部分是单片机的基础部分,主要包括单片机的硬件结构与指令系统,属于知识性部分。这部分是否学的扎实,对后续内容的掌握,是十分重要的。第二部分是单片机应用系统的各种接口设计,除了要求学生很好地掌握硬件接口电路设计外,关键还要很好地掌握如何编写控制接口的程序,注意有些指令在执行时,在外部引脚所产生的控制信号。第三部分是应用系统设计,它是前两部分内容的综合。学习本门课的目的,就是最终要设计一个实际的应用系统。单片机应用系统涉及到许多工程设计问题。在课程即将结束的时候,布置给学生一个综合性的大作业,设计一个实际的应用系统的硬件原理图,并完成主要的软件框图。 由于本门课是一门对实践性要求强的课程,因此,实验课的重要性是不言而喻的。通过实验课来巩固课堂上所学的知识,同时还有一些是课堂上所学不到的,例如,如何使用仿真调试手段,来调试软件以及对硬件故障进行诊断,而这些恰恰是非常重要的。 为进一步加强单片机应用系统设计的训练,后续还安排了课程设计,通过课程设计的实践,对学生在应用系统设计方面的能力将会有一个较大的提高。教学内容中有较多的程序、接口电路图等,为了达到更好的教学效果,主要采用电子课件进行课堂教学,必要时配以传统的板书。课堂教学要调动学生主动学习的积极性。首先要让学生清楚所讲授内容的目的和意义,培养学习兴趣。教学过程中要经常与学生交流,征求大家对本课程教学内容和授课方式的意见,并及时的调整教学内容的讲授方法。授课时,要注意启发、引导,对基本概念,要讲得准确、深入浅出,要经常提问学生,一方面可提高学生对课堂教学的注意力,另一方面能使学生积极思考老师提出的问题。这十分有利于学生分析问题、解决问题能力的培养。 为将最新科技成果及器件在教学实践中及时反映出来,需要教师引导学生介绍有关期刊杂志及相关的网站,培养学生获取新的信息方面的能力。课程讲授中应注重培养学生树立起成本、性能/价格比的观念,这对工科学生是十分重要的。要把几种设计方案加以比较,注重工程上的可行性、性能/价格比及成本控制。六、课堂讲授内容及安排课程的教学内容及具体安排如下:顺序课时教学内容讲授方式讲授目的及要求12第1章单片机概述讲课有关单片机的基本概念、历史及发展概况、8位单片机的主要生产厂家和机型、单片机的发展趋势及应用、AT89S51系列单片机及其兼容型扩展型。24第2章AT89S51系列单片机硬件结构讲课掌握AT89S51单片机的硬件结构、引脚、中央处理器(cpu)、存储器结构、I/O端口、复位及时钟电路,为硬件设计打下基础。34第3章AT89S51的指令系统令系统讲课掌握指令系统寻址方式、指令格式及常用指令。掌握汇编语言源程序的基本概念,汇编语言程序设计的基本方法以及各种实用子程序设计的基本方法42第4章AT89S51的中断系统讲课。掌握中断系统的基本结构、中断请求源、中断控制、中断的响应时间、外部中断的响应时间、中断请求的撤消。重点是中断服务程序的设计。56第5章AT89S51与键盘显示的接口设计讲课掌握LED接口、键盘接口工作原理重点掌握常见的键盘显示器接口设计方案。了解液晶显示器接口设计、微型打印机的接口设计以及BCD码拨盘的接口设计。62第6章AT89S51的定时器/计数器讲课掌握定时器/计数器的结构及定时器/计数器的四种工作方式,重点掌握定时器的编程及应用。74第7章AT89S51的串行口讲课掌握串行口的结构、工作方式、多机通讯的工作原理及串行口编程及应用。84第8章AT89S51扩展存储器的设计讲课重点掌握读写控制、地址分配、外部地址锁存器。程序存储器及数据存储器的综合扩展及程序设计。94第9章AT89S51扩展并行I/O的设计讲课重点掌握AT89S51如何扩展8255与8155并行接口芯片,以及如何对这两种芯片进行编程控制。10第10章单片机系统的串行扩展技术讲课了解单片机串行扩展技术,重点掌握I2C总线扩展114第11章AT89S51单片机与D/A转换器、A/D转换器的接口讲课掌握常见的DAC、ADC芯片尤其要掌握如何来选择ADC芯片,以及与单片机的接口设计。122第13章AT89S51单片机应用系统的设计、开发与调试讲课掌握AT89S51单片机应用系统的软硬件的设计、开发与调试,并掌握教材中介绍的几个基本硬件系统。为什么要使用仿真开发系统来开发单片机应用系统。注:表中的章的序号是指所用的教材的章的序号七、实验的要求及内容1.实验要求 本课程是一门与实践紧密结合的技术基础课。实验的目的之一是使学生巩固课堂上所学的知识,尤其是通过实验课要重点掌握仿真开发系统的熟练使用,应能非常熟练的调试所编写的汇编程序,这是在课堂上学不到的。在实验中,作为基本要求,学生必须完成实验大纲指定的前8个题目,教师可允许学有余力的学生去完成第9个或第10个实验题目。也可自行拟定一些题目,使学有余力的学生去作更深入的实验。对实验课的具体要求如下:实验报告内容应包括实验目的、程序框图、实验结果及结论;(2)思考题应力争做出;(3)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求等;(4)书写整洁、程序框图要清晰且规范;前8个实验必须完成,未完成实验不能参加期末考试。2.实验内容(1)实验1单片机实验开发系统操作实验实验目的:掌握汇编语言的设计和调试;熟悉Dais-80958B实验开发系统调试软件的使用。(2)实验2单片机数据区传送程序设计实验目的:进一步掌握汇编语言程序设计和调试方法。编写单片机内部RAM与外部RAM中的数据传送操作。(3)实验3数据排序实验实验目的:熟悉AT89S51指令系统,掌握数据排序程序的设计方法。(4)实验4查找相同数个数实验目的:熟悉汇编语言编程,掌握查找相同数个数程序的设计方法。(5)实验5P1口转弯灯实验实验目的:进一步了解P1口的使用,如何来编程控制与程序调试技巧。(6)实验6工业顺序控制实验目的:掌握工业顺序控制程序的简单编程,中断的使用。(7)实验78255控制交通灯实验目的:进一步了解8255芯片的结构及编程方法,学习模拟交通控制的实现方法。(8)实验8A/D转换实验实验目的:掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法;通过实验了解单片机如何进行数据采集。(9)实验9D/A转换实验实验目的(1)了解D/A转换芯片与单片机的接口方法;了解D/A转换芯片0832的性能及编程方法;了解单片机系统中扩展D/A转换芯片的基本方法。(10)实验10电子时钟(定时器、中断综合实验)实验目的:熟悉AT89S51定时器,串行口和中断初始化编程方法,了解定时器的应用,时钟程序的设计与调试技巧。八、成绩记载方法为使学生不把注意力仅仅放在期末考试上,培养学生系统学习的能力,加强学生各方面能力的培养,平时、实验课、作业、考试都纳入本课程的成绩评定。平时的成绩包括出勤、课堂提问、作业、实验。课程的考核及成绩记载有两种方式:1.第一种考核及成绩记载方式:课程总成绩由平时考核成绩和期末考试成绩两部分组成。其中平时成绩占30%,期末考试成绩占70%。平时考核成绩由上课出席、作业和实验情况组成。其中出席、作业为10分,实验为20分。2.第二种考核及成绩记载方式:必须认真完成所有的作业和规定的实验,否则不允许参加考试。课程成绩以期末考试的试卷成绩记载。对于出席、作业、实验极不认真的要有记录,并酌情从期末考试成绩中扣分。有关期末考试的要求:期末考试采用闭卷考试方法,考试时间2小时。考核要求分为“了解、理解、掌握”三个层次,在试题中各部分的比例大致为:了解层次占20%左右,理解层次占10%左右,掌握层次占70%左右。期末试题的类型为:选择、简答、填空、问答及综合题等类型。并增加一道综合性较强,难度系数较大的附加题(10分),答对加分,答错不扣分,鼓励学生创造性思维。

第1章单片机概述教学设计本章为课堂讲授,2学时。作为本课程的第一次课,应使学生明确本课程的性质、学时,教材、学习目的以及学习方法和基本要求。这对提高学生学习本课程的兴趣十分重要。教师应通过丰富的单片机应用具体实例的介绍,真正提高学生学习本课程的兴趣。虽然本章仅仅是介绍有关单片机的知识、基本概念以及应用的基本情况,但是对教师的要求较高,需要较宽的知识面。可谓“要给别人一碗水,自己首先要有一桶水!”,需要教师多做了解调查,多阅读即时的期刊资料,下功夫讲好这第一次课,要注重介绍本课程的特点,即课程的应用性及实践性,但同时也要使学生明确掌握好基本知识、基本概念对学习本课程的重要性,。1.1什么是单片机重点:弄清楚什么是单片机?单片机与通用计算机的差别。尤其是要注意单片机并不是CPU,这是学生初学单片机最容易搞错的问题。注意:单片机的另外两个称谓“嵌入式控制器”、“微控制器”,通过这两个称谓,真正理解单片机的具体应用,尤其是其嵌入式的特征。实际上国外都称“嵌入式控制器”,这是比较贴切的表达。国内工程技术人员称其为“”单片机“是源于“单片微计算机”这一名词,比较直白、通俗。但是一定使学生熟知“嵌入式控制器”、“微控制器”这两个别称。关于嵌入式系统概念的介绍,教师可结合当前的各种嵌入式系统的应用,比较单片机、DSP、嵌入式微处理器的具体应用,初步了解嵌入式系统。1.2单片机的发展历史重点:单片机的发展历史,学生基本了解即可。但对于世界上常用的一些8位机型、16位机型,应该使学生了解。16位单片机、32位单片机也得到广大用户的青睐。1.3单片机的特点注意:强调嵌入式应用的特点。由于单片机体积小,很容易地嵌入到系统之中,以实现各种方式的检测、计算或控制,在这一点上,一般的微型计算机根本做不到。为什么应用如此广泛?单片机为核心的的应用系统具有的特点,应使学生了解。1.4单片机的应用学生应基本了解单片机在各个领域的应用。1.5单片机的发展趋势最重要的趋势是外围电路内装化,系统的单片化。1.6MCS-51系列与AT89C5x系列单片机8051单片机的称呼。重点在8051内核。了解8051单片机的基本发展过程。把MCS-51系列单片机与8051单片机,基本型、增强型、扩展型的基本概念介绍清楚,明确美国ATMEL公司的AT89S51与MCS-51系列之间的关联。应使学生明确AT89C51与AT89S51的差别,主要差别在ISP、看门狗等,尤其是ISP要讲解清楚。1.7其它的8051单片机注意了解高集成度的其他的8051单片机。例如:ADμC812、C8051Fxxx系列、台湾华邦公司(Winbond)的W78系列和W77系列(增强型)对具有我国自主知识产权的STC单片机应给予介绍。1.8AVR系列单片机与PIC系列单片机非8051单片机,主要介绍目前使用较为广泛的PIC、AVR等机种。以拓宽学生的视野。同时对16位的MSP430以及PIC系列中的16位、32位也作以介绍1.9各类嵌入式处理器简介重点:各类嵌入式处理器为核心的嵌入式系统的应用,已经成为当今电子信息技术应用的一大热点。全世界嵌入式处理器的品种总量已经超过1000多种,按体系结构主要分为:嵌入式微控制器(单片机)、嵌入式数字信号处理器(DSP)嵌入式微处理器。对课程中两个软件开发平台KeilµVision3与Proteus,本次课要做十分简要介绍,要求学生自学来掌握这两个开发平台,要求能够熟练使用这两个软件开发平台来进行单片机应用系统的软硬件虚拟设计调试与仿真。教师要列出相应的可供学生自学的有关参考资料。拓展资源提供了两个视频文件,学生在课下可通过观看视频,来了解掌握Proteus的基本特性及具体使用,重点放在ISIS(智能原理图输入)的使用上。KeilµVision3的使用参考张毅刚教授编写出版的相关教材。本章小结:由于本章是对单片机及其应用进行概括性的介绍,要使学生了解由于单片机是发展最快、品种最多、数量最大的嵌入式系统。目前,国内外公认的嵌入式控制器标准体系结构是Intel的MCS-51系列,其中8051已被世界多家芯片厂商作为基核,推出了众多的与8051兼容的增强型扩展型的SoC产品,据国内一家杂志对市场的调查,结果8051体系结构的单片机仍占有整个嵌入式微处理器/微控制器市场的较大份额。同时由于8051结构清晰,易学、易掌握,已经成为初学者学习单片机技术的首选的入门机型,这也是为什么本课程仍旧学习8051体系结构的单片机AT89S51的原因。

第2章AT89S51单片机片内硬件结构教学设计课堂讲授4学时。导学:本章介绍AT89S51单片机的硬件结构。通过学习,应牢记AT89S51单片机的片内硬件结构以及片内硬件资源,了解片内外设的功能,重点掌握AT89S51单片机的存储器结构、特殊功能寄存器的基本作用以及复位电路和时钟电路的设计,同时也介绍了低功耗节电模式。本章的学习目的是为应用系统的硬件设计打下基础。单片机应用的特点是编写程序来控制硬件电路,应先应熟知并掌握AT89S51单片机片内硬件基本结构和特点。2.1AT89S51单片机的硬件组成AT89S51片内的基本结构依旧是CPU加上外围芯片的传统微型计算机结构模式,但CPU对各种外围部件的控制是采用特殊功能寄存器SFR(SpecialFunctionRegister)的集中控制方式。重点:掌握AT89S51单片机的片内硬件组成结构与资源。主要包括:CPU、数据存储器(片内容量与片外的最多外扩)、程序存储器FlashROM(片内容量与片外的最多外扩)、中断系统、定时器/计数器、串行口、4个8位的并行口、26个特殊功能寄存器(SFR)、看门狗定时器WDT。AT89S51与AT89C51相比,更突出的优点5点要掌握。2.2AT89S51的引脚功能基本要求:掌握DIP方式的40只引脚功能。熟知40只引脚每一个引脚的功能,对AT89S51单片机应用系统的硬件电路设计十分重要。重点:掌握引脚按功能,尤其要掌握控制引脚的功能。引脚分3类:电源及时钟引脚;控制引脚;I/O口引脚。2.2.1电源及时钟引脚1.电源引脚:(1)VCC(40脚):+5V;(2)VSS(20脚):数字地。2.时钟引脚(1)XTAL1(19脚);(2)XTAL2(18脚)。注意:连接外部时钟源时,两个时钟引脚的接法要注意。2.2.2控制引脚重点讲解其功能:/

VPP;ALE/;2.2.3并行I/O口引脚重点:P0口与其它3个口的功能的差异。准双向I/O口与双向I/O口的差异P0口也可作为通用I/O口使用(不要误认为只能做总线口),但需加上拉电阻,这时为准双向口。注意:P1.5/MOSI、P1.6/MISO和P1.7/SCK也可用于对片内Flash存储器串行编程和校验,它们分别是串行数据输入、串行数据输出和移位脉冲引脚。P2口作为高8位地址总线用,输出高8位地址;P3口的第二功能定义应熟记。问题:为什么P0与P1口、P2口、P3口3个准双向口相比,多了一个高阻输入的“悬浮”态?2.3AT89S51的CPU由运算器和控制器构成。2.3.1运算器要点:运算器的功能、累加器A的作用、程序状态字寄存器PSW各个位的功能。注意:RS1位、RS0位与4组工作寄存器区的对应关系。2.3.2控制器要点:控制器的主要任务、控制器包括的部件。程序计数器PC的基本工作过程、注意:PC内容的变化轨迹决定了程序的流程,而2.4AT89S51单片机存储器的结构要点:哈佛结构。AT89S51单片机的存储器空间可划分4类:程序存储器空间;数据存储器空间;特殊功能寄存器;位地址空间。2.4.1程序存储器空间用途:用于存放程序和表格之类的固定常数。片内程序存储器为4KB的Flash存储器,地址范围为0000H~0FFFH。要点:整个程序存储器空间可分为片内和片外两部分。某些单元被固定用于各中断源的中断服务程序的入口地址。5个特殊单元对应的5个中断源的中断入口。复位入口的概念。2.4.2数据存储器空间要点:数据存储器空间分为片内与片外两部分。1.片内数据存储器片内数据存储器的结构。4组通用工作寄存器区的位置;堆栈区;位寻址区。2.片外数据存储器片内RAM,访问时使用不同的指令,所以不会发生数据冲突。2.4.3特殊功能寄存器SFR的名称及其分布。可位寻址的SFR的特点。与AT89C51相比,新增加了5个SFR。1.堆栈指针SP与堆栈注意:复位后,SP最好重新初始化设置堆栈的目的。子程序调用或中断服务子程序调用时,堆栈的两种操作情况。2.寄存器B要点:乘、除法操作要使用寄存器B。不执行乘、除法的情况下,可作为一个普通寄存器来使用。3.AUXR寄存器AUXR的格式与各位的功能。4.数据指针DPTR0和DPTR1要点:格式与各位的功能注意:如何选用DPTR0和DPTR1,复位时的选择的情况。5.AUXR1寄存器要点:格式与各位的功能6.看门狗定时器WDT要点:看门狗定时器的用途。,如何把看门狗清0.2.4.4位地址空间字节地址。2.5AT89S51单片机的并行I/O端口要点:4个双向的8位并行I/O端口P0~P3的片内位电路结构。端口P0~P3电路的差别。难点:双向口与准双向口的概念。2.5.1P0口1.P0口的工作原理(1)P0口用作系统的地址/数据总线用(双向口)(2)P0口用作通用I/O口使用(准双向口),加上拉电阻P0口的两种读入方式:“读锁存器”和“读引脚”。2.P0口总结综上所述,P0口具有如下特点:(1)当P0口用作地址/数据总线口使用时,是一个真正的双向口。(2)当P0口用作通用I/O口使用时,P0口各引脚需要在片外接上拉电阻。2.5.2P1口要点:P1口位电路结构与P0口位电路结构的差别。1.P1口的工作原理P1口只能作为通用I/O口使用;P1口分别作为输出口、输入口时的工作原理。难点:“读锁存器”和“读引脚”两种方式。2.P1口总结P1口由于有内部上拉电阻,没有高阻抗输入状态,故为准双向口。P1口“读引脚”输入时,必须先向端口锁存器写入1。2.5.3P2口要点:P2口为双功能口,字节地址,位地址。P2口某一位的位电路结构。1.P2口的工作原理(1)P2口用作地址总线口的工作原理。(2)P2口用作通用I/O口的工作原理。2.P2口总结作为地址输出线使用时,P2口可以输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,共可寻址64KB的地址空间。当P2口作为高8位地址输出口时,输出锁存器的内容保持不变。作为通用I/O口使用时,P2口为一个准双向口。2.5.4P3口要点:P3口电路中增加了引脚的第二功能,牢记第二功能定义1.P3口的工作原理:P3口可作第二输入/输出功能;P3口也用作第一功能—通用I/O口功能。2.P3口总结要点:P3口内部有上拉电阻,不存在高阻抗输入状态,故为准双向口。注意:用户不需要进行任何设置。2.6时钟电路与时序时钟电路用于产生AT89S51单片机工作时所必需的控制信号。2.6.1时钟电路设计时钟电路两种方式:内部时钟方式,外部时钟方式。1.内部时钟方式片内有一个用于构成振荡器的高增益反相放大器,输入端XTAL1,输出端为XTAL2。这两个引脚外部跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。2.外部时钟方式使用现成的外部振荡器来产生单片机运行所需的时钟脉冲信号,常用于多片AT89S51单片机同时工作,以便于多片AT89S51单片机之间的同步。2.6.2机器周期、指令周期与指令时序1.时钟周期时钟信号的周期。2.机器周期CPU完成一个基本操作所需的时间称为机器周期。执行一条指令的过程需要几个机器周期。每个机器周期完成一个基本操作1个机器周期包括12个时钟周期,分为6个状态:S1~S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2…S6P2。3.指令周期要点:执行一条指令所需的时间。2.7复位操作和复位电路要点:复位是单片机的初始化操作,只需给复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可使AT89S51单片机复位。2.7.1复位操作重点:(非常重要)2.7.2复位电路设计重点:AT89S51典型的复位电路,包括上电复位和按键复位。2.8看门狗定时器(WDT)的使用重点:看门狗的功能;看门狗的工作原理。看门狗的使用。“看门狗”技术就是使用一个计数器来不断计数,监视程序的运行。当看门狗定时器启动运行后,为防止看门狗定时器的不必要溢出而引起非正常的复位,在程序正常运行过程中,应定期地把看门狗定时器清0,以保证看门狗定时器不溢出。2.9低功耗节电模式要点:AT89S51单片机有两种低功耗节电工作模式:downmode)。2.9.1空闲模式要点:1.空闲模式的进入;2.空闲模式的退出2.9.2掉电运行模式要点:1.掉电模式的进入;2.掉电模式的退出3.掉电和空闲模式下的WDT

第3章AT89S51单片机的指令系统教学设计是CPU按照人们的意图来完成某种操作的命令,它以英文名称或缩写形式作为助记符。用助记符、符号地址、标号等表示的书写程序的语言。学习的目的意义:系统地掌握和熟知指令系统的各类汇编语言指令是AT89S51单片机应用程序设计的基础。3.1指令系统概述使用8051的指令系统。基本指令共111条。按所占程序存储器的字节来分,分三种:(1)单字节指令49条;(2)双字节指令45条;(3)三字节指令17条。按指令的执行时间来分,可分三种:(1)1个机器周期(12个时钟振荡周期)的指令64条;(2)2个机器周期(24个时钟振荡周期)的指令45条;(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。3.2指令格式指令格式:指令的表示方法操作码和操作数:一条指令通常由两部分组成:操作码和操作数。操作码用来规定指令进行什么操作,而操作数则是指令操作的对象。操作码和操作数在单字节指令、双字节指令和三字节指令中的格式。(1)单字节指令:只有一个字节,操作码和操作数同在一个字节中。(2)双字节指令:两个字节,其中一个字节为操作码,另一个字节是操作数。(3)三字节指令:其中,操作码占一个字节,操作数占二个字节。3.3指令系统的寻址方式寻址方式:在指令中说明操作数所在地址的方法。一般来说,寻址方式越多,单片机的功能就越强,灵活性则越大,指令系统也就越复杂。寻址方式所要解决的主要问题:就是如何在整个存储器和寄存器的寻址空间内,灵活方便、快速地找到指定的操作数或地址单元。共有7种寻址方式:1.寄存器寻址方式寄存器寻址方式,就是指令中的操作数为某一寄存器的内容。例如:MOV A,Rn;(Rn)→A,n=0~7寻址范围包括:(1)4组通用工作寄存区,但只对当前工作寄存器区寻址;(2)部分特殊功能寄存器,如累加器A、寄存器B以及数据指针寄存器DPTR等。2.直接寻址方式指令中直接给出操作数的单元地址,该单元地址中的内容就是操作数。例如:MOV A,40H注意:直接寻址方式是对片内所有特殊功能寄存器访问的唯一寻址方式,也是访问内部RAM的128个单元一种寻址方式。3.寄存器间接寻址方式在寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。由于操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。为了区别寄存器间接寻址和寄存器寻址,应在寄存器名称前面加前缀标志“@”。例如:MOV A,@Ri;i=0或14.立即数寻址方式直接在指令中给出操作数也叫立即数。为了与直接地址加以区别,需在操作数前面加前缀标志“#”。例如指令:MOVA,#40H表示把立即数数40H送给A。5.基址寄存器加变址寄存器间址寻址方式以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为目的地址进行寻址的方式。指令只有3条:MOVC A,@A+DPTRMOVC A,@A+PCJMP @A+DPTR前两条指令用于读程序存储器中固定的数据。例如,表格参数,在程序运行中由A的动态参量来确定读取对应的表格参数。第3条指令为散转指令,A中的内容为程序运行后的动态结果,执行该指令,可根据A中的不同内容,实现跳向不同程序入口的跳转。6.相对寻址方式为程序跳转而设置。重点掌握相对偏移量(rel)。转移的目的地址可用下式来计算:目的地址=转移指令所在的地址+转移指令字节数+rel偏移量rel是单字节的带符号的8位二进制数补码数。它表示的数的范围是–128~+127。因此,程序的转移范围是以转移指令的下条指令首地址为基准地址,相对偏移在–128~+127单元之间。 编写程序时,只需在转移指令中直接写上要转向的地址标号就可以了。例如: SJMP LOOP“LOOP”即为要转向的目的地址标号。程序汇编时,由汇编程序自动计算和填入偏移量。但是手工汇编时,偏移量的值需编程人员手工计算。7.位寻址方式对内部RAM和特殊功能寄存器具有位寻址功能的某位内容进行置“1”和清“0”操作。位地址一般以直接位地址给出,例如指令:MOV C,40H就是把位地址为40H的值送到进位位C。问题:如何来确定指令的寻址方式?例如指令:MOVA,#40H,它究竟是属于立即数寻址还是还是寄存器寻址?这要看以哪个操作数作为参照系。因为操作数可分为源操作数和目的操作数。对于源操作数“#40H”来说,是“立即数寻址”方式,但对目的操作数“A”来说,是属于“寄存器寻址”方式。一般而言,寻址方式指的是源操作数,所以此例为立即数寻址方式。指令系统的7种寻址方式概括如表3-1所示,应了解。表3-17种寻址方式及其寻址空间序号寻址方式寻址空间1寄存器寻址R0~R7、A、B、C(位)、DPTR等2直接寻址内部128字节RAM、特殊功能寄存器3寄存器间接寻址片内数据存储器、片外数据存储器4立即数寻址程序存储器中的立即数5基址寄存器加变址寄存器间接寻址读程序存储器固定数据和程序散转6相对寻址程序存储器相对转移7位寻址内部RAM中的可寻址位、SFR中的可寻址位3.4AT89S51指令系统分类介绍111条指令,按功能可分为下面五大类:(1)数据传送类(28条)(2)算术运算类(24条)(3)逻辑操作类(25条)(4)控制转移类(17条)(5)位操作类(17条)分类介绍前,先掌握指令中一些符号的含义:Rn,Ri,direct,#data,#data16,rel,DPTR,bit,C或Cy,addr11,addr16,@,(X),((X))。3.4.1数据传送类指令使用最频繁的一类指令。助记符“MOV”,通用格式如下:MOV<目的操作数>,<源操作数>数据传送类指令就是把源操作数传送到目的操作数。操作属“复制”性质,而不是“搬家”。数据传送类指令不影响标志位,但不包括检验累加器的奇偶标志位P。1.以累加器为目的操作数的指令MOV A,Rn ;(Rn)→A,n=0~7MOV A,@Ri ;((Ri))→A,i=0,1MOV A,direct ;(direct)→AMOV A,#data ;#data→A功能:是把源操作数的内容送入累加器A,源操作数有寄存器寻址、直接寻址、间接寻址和立即数寻址等方式,例如指令:MOV A,R6 ;(R6)→A,寄存器寻址MOV A,@R0 ;((R0))→A,间接寻址MOV A,70H ;(70H)→A,直接寻址MOV A,#78H ;78H→A,立即数寻址2.以Rn为目的操作数的指令MOV Rn,A ;(A)→Rn,n=0~7MOV Rn,direct ;(direct)→Rn,n=0~7MOV Rn,#data ;#data→Rn,n=0~73.以直接地址direct为目的操作数的指令MOV direct,A ;(A)→directMOV direct,Rn ;(Rn)→direct,n=0~7MOV direct1,direct2 ;(direct2)→direct1MOV direct,@Ri ;((Ri))→direct,i=0,1MOV direct,#data ;#data→direct4.以寄存器间接地址为目的操作数的指令MOV @Ri,A ;(A)→(Ri),i=0,1MOV @Ri,direct ;(direct)→(Ri),i=0,1MOV @Ri,#data ;#data→(Ri),i=0,15.16位数传送指令MOV DPTR,#data16 ;#data16→DPTR注意:AT89S51设有两个DPTR,通过设置特殊功能寄存器AUXR1中的DPS位来选择。DPTR既是一个16位的数据指针,又可分为DPH和DPL两个8位的寄存器进行操作,十分灵活方便。设有两个DPTR后,就可避免频繁的出入堆栈操作。6.堆栈操作指令堆栈:在AT89S51内部RAM中可以设定一个后进先出(LIFO,LastInFirstOut)的区域。注意:堆栈只能设在内部RAM,不能设在外部RAM。堆栈指针SP(特殊功能寄存器)指定堆栈的栈顶位置。堆栈操作有进栈和出栈两种,两条堆栈操作指令。(1)进栈指令PUSH direct功能:先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中。例如:当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令PUSH Acc ;(SP)+1=61H→SP,(A)→61HPUSH B ;(SP)+1=62H→SP,(B)→62H结果为(61H)=30H,(62H)=70H,(SP)=62H。(2)出栈指令POP direct功能:这条指令的功能是,将栈指针SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,栈指针SP减1。例如:当(SP)=62H,(62H)=70H,(61H)=30H时,执行下列指令POP DPH ;((SP))→DPH,(SP)-1→SPPOP DPL ;((SP))→DPL,(SP)-1→SP结果为(DPTR)=7030H,(SP)=60H。7.累加器A与外部数据存储器RAM/IO传送指令MOVX A,@DPTR ;((DPTR))→A,读外部RAM/IOMOVX A,@Ri ;((Ri))→A,读外部RAM/IOMOVX @DPTR,A ;(A)→((DPTR)),写外部RAM/IOMOVX @Ri,A ;(A)→((Ri)),写外部RAM/IO注意:助记符在MOV的后面加“X”,“X”的含义解释清楚。难点:所以在执行前两条指令时,(P3.7)有效;执行后两条指令时,(P3.6)有效,要牢记。8.查表指令共两条单字节指令:(1)第一条查表指令:MOVC A,@A+PC以PC作为基址寄存器,A的内容作为无符号整数和PC的当前值(下一条指令的起始地址)相加后得到一个新的16位地址,把该地址指定的程序存储单元的内容送到累加器A。例如:当(A)=30H时,执行地址1000H处的指令1000H:MOVC A,@A+PC该指令占用一个字节,下一条指令的地址为1001H,(PC)=1001H再加上A中的30H,得1031H,结果是将程序存储器中1031H的内容送入累加器A。优点:不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。缺点:表格只能存放在该条查表指令所在地址的+256个单元之内,表格的大小受到限制,而且表格只能被一段程序所利用。(2)第二条查表指令:MOVCA,@A+DPTR以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位地址,把由该地址指定的程序存储器单元的内容送到累加器A。例如:(DPTR)=8100H,(A)=40H,执行指令MOVC A,@A+DPTR结果是将程序存储器中8140H单元内容送入累加器A中。注意:这条查表指令的执行结果只与指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64KB程序存储器空间中任意安排,一个表格可以为各个程序块公用。MOV的后面加“C”,“C”的含义?执行上述两条指令时,单片机的引脚信号(程序存储器读)有效,要牢记。9.字节交换指令XCH A,Rn ;(A)(Rn),n=0~7XCH A,direct ;(A)(direct)XCH A,@Ri ;(A)((Ri)),i=0,1功能:将累加器A的内容和源操作数的内容相互交换。源10.半字节交换指令XCHD A,@Ri功能:累加器的低4位与内部RAM低4位交换。3.4.2算术运算类指令单字节加、减、乘、除法指令,都是针对8位二进制无符号数。算术运算的结果将使PSW中的进位(Cy)、辅助进位(Ac)、溢出(OV)3种标志位置“1”或清“0”,但是增1和减1指令不影响这些标志。1.加法指令4条加法运算指令:ADDA,Rn ;(A)+(Rn)→A,n=0~7ADDA,direct ;(A)+(direct)→AADDA,@Ri ;(A)+((Ri))→A,i=0,1ADDA,#data ;(A)+#data→A注意:使用加法指令时,要累加器A中的运算结果对各个标志位的影响:(1)如果位7有进位,则进位标志Cy置“1”,否则Cy清“0”。(2)如果位3有进位,辅助进位标志Ac置“1”,否则Ac(Ac为PSW寄存器中的一位)清“0”。(3)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有进位,则溢出标志位OV置“1”,否则OV清“0”。溢出标志位OV的状态,只有进行带符号数加法运算时才有意义。当两个带符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围(-128~+127),即产生了溢出,表示运算结果是错误的,否则运算是正确的,即无溢出产生。【例3-1】(A)=53H,(R0)=FCH,执行指令ADD A,R001010011111111000101001111111100+)101001111结果为(A)=4FH,Cy=1,Ac=0,OV=0,P=1(A中“1”的位数为奇数)。注意:在上面的运算中,由于位6和位7同时有进位,所以标志位OV=0。【例3-2】(A)=85H,(R0)=20H,(20H)=AFH,执行指令ADDA,@R010000101101011111000010110101111+)100110100结果为(A)=34H,Cy=1,Ac=1,OV=1,P=1。注意:由于位7有进位,而位6无进位,所以标志位OV=1。2.带进位加法指令特点:是进位标志位Cy参加运算,因此带进位的加法运算是三个数相加。指令共4条:ADDCA,Rn ;(A)+(Rn)+C→A,n=0~7ADDCA,direct ;(A)+(direct)+C→AADDCA,@Ri ;(A)+((Ri))+C→A,i=0,1ADDCA,#data ;(A)+#data+C→A注意:如果位7有进位,则进位标志Cy置“1”,否则Cy清“0”;如果位3有进位输出,则辅助进位标志Ac置“1”,否则Ac清“0”;如果位6有进位而位7没有进位,或者位7有进位而位6没有进位,则溢出标志OV置“1”,否则标志OV清“0”。【例3-3】(A)=85H,(20H)=FFH,Cy=1,执行指令ADDC A,20H运算式为结果为

(A)=85H,Cy=1,Ac=1,OV=0,P=1(A中1的位数为奇数)。3.增1指令共有5条增1指令:INCAINCRn ;n=0~7INCdirectINC@Ri ;i=0,1INCDPTR这组增1指令的功能是把指令中所指出的变量增1,且不影响程序状态字PSW中的任何标志。若变量原来为FFH,加1后将溢出为00H(仅指前4条指令),标志也不会受到影响。第5条指令“INC DPTR”,是16位数增1指令。指令首先对低8位指针DPL的内容执行加1操作,当产生溢出时,就对DPH的内容进行加1操作,并不影响标志Cy的状态。4.十进制调整指令注意:本十进制调整指令具有一定难度,需加深理解。十进制调整指令指令格式为:DA A功能:是对压缩的BCD码(一个字节存放2位BCD码)的加法结果进行十进制调整。两个BCD码按二进制相加之后,须经本指令的调整才能得到正确的压缩BCD码的和数。(1)十进制调整问题二进制数的加法运算原则上并不能适用于十进制数的加法运算,有时会产生错误结果。例如:0011+)0011+) 011010010111+)

100011111001+)

10001

0001上述的BCD码运算中:(a)运算结果正确。(b)运算结果不正确,因为十进制数的BCD码中没有1111这个编码。(c)运算结果也不正确,正确结果应为17,而运算结果却是11。情况表明,二进制数加法指令不能完全适用于BCD码十进制数的加法运算,因此要对结果做有条件的修正,这就是所谓的十进制调整问题。(2)出错原因和调整方法出错原因在于BCD码是4位二进制编码,共有16个编码,但BCD码只用了其中的10个,剩下6个没用到。这6个没用到的编码(1010,1011,1100,1101,1110,1111)为无效编码。BCD码加法中,凡结果进入或者跳过无效编码区时,其结果就是错误的。因此1位BCD码加法运算出错的情况有以下两种:①相加结果大于9,说明已经进入无效编码区。②相加结果有进位,说明已经跳过无效编码区。无论哪一种出错情况,都是因为6个无效编码造成的。因此,只要出现上述两种情况之一,就必须进行调整。调整的方法是把运算结果加6调整,即所谓的十进制调整修正。十进制调整的修正方法如下:①累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正。②累加器高4位大于9或进位位Cy=1,则进行高4位加6修正。③累加器高4位为9,低4位大于9,则高4位和低4位分别加6修正。上述十进制调整修正,是通过执行指令“DAA”来自动实现的。【例3-4】(A)=56H,(R5)=67H,把它们看作两个压缩的BCD数,进行BCD数加法。执行指令:ADD A,R5DA A由于高4位和低4位分别大于9,所以“DAA”指令要分别加6,来对结果进行修正。010101100101011001100111+)1011110101100110+)1

00100011十进制调整,高、低4位分别加6结果为(A)=23H,Cy=1。由上可见,56+67=123,结果是正确的。5.带借位的减法指令共有4条指令:SUBB A,Rn ;(A)-(Rn)-Cy→A,n=0~7SUBB A,direct ;(A)-(direct)-Cy→ASUBB A,@Ri ;(A)-((Ri))-Cy→A,i=0,1SUBB A,#data ;(A)-#data-Cy→A是从累加器A中的内容减去指定的变量和进位标志Cy的值,结果存放在累加器A中。如果位7需借位则Cy置“1”,否则Cy清“0”;如果位3需借位则Ac置“1”,否则Ac清“0”;如果位6需借位而位7不需要借位,或者位7需借位而位6不需借位,则溢出标志位OV置“1”,否则OV清“0”。源操作数允许有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址方式。【例3-5】(A)=C9H,(R2)=54H,Cy=1,执行指令SUBB A,R20111010011001001011101001100100101010100-)1结果为

(A)=74H,Cy=0,Ac=0,OV=1(位6向位7借位)。6.减1指令共有4条指令:DEC A ;(A)-1→ADEC Rn ;(Rn)-1→Rn,n=0~7DEC direct ;(direct)-1→directDEC @Ri ;((Ri))-1→(Ri),i=0,1功能:指定的变量减1。若原来为00H,减1后下溢为FFH,不影响标志位(P标志除外)。【例3-6】(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行指令DEC A ;(A)-1→ADEC R7 ;(R7)-1→R7DEC 30H ;(30H)-1→30HDEC @R1 ;((R1))-1→(R1)结果为

(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,P=1,不影响其他标志。7.乘法指令MUL AB ;A×B→BA功能:把累加器A和寄存器B中的无符号8位整数相乘,其16位积的低位字节在累加器A中,高位字节在B中。如果积大于255,则溢出标志位OV置“1”。8.除法指令DIV AB ;A/B→A(商),余数→B功能:是用累加器A中8位无符号整数(被除数)除以B中8位无符号整数(除数),所得的商(为整数)存放在累加器A中,余数存放在寄存器B中,且Cy和溢出标志位OV清“0”。如果B的内容为“0”(即除数为“0”),则存放结果的A、B中的内容不定,并溢出标志位OV置“1”。【例3-7】(A)=FBH,(B)=12H,执行指令DIV AB结果:(A)=0DH,(B)=11H,Cy=0,OV=0。3.4.3逻辑操作类指令1.累加器A字节清“0”指令CLR A功能:累加器A清“0”。不影响Cy、Ac、OV等标志位。2.累加器A字节求反指令CPL A功能:是将累加器A的内容按位逻辑取反,不影响标志位。3.左环移指令RL A功能:向左循环移位,位7循环移入位0,不包括标志位移位。如图3-1所示。图3-1左环移指令的移位示意图4.带进位左环移指令RLC A功能:将累加器A的内容和进位标志位Cy一起向左环移一位,Acc.7移入进位位Cy,Cy移入Acc.0,不影响其他标志位。如图3-2所示。图3-2带进位左环移指令的移位示意图5.右环移指令RR A功能:累加器A的内容向右环移一位,Acc.0移入Acc.7,不包括标志位移位。见图3-3。图3-3右环移指令的移位示意图6.带进位右环移指令RRC A功能:累加器A的内容和进位标志Cy一起向右环移一位。见图3-4。图3-4带进位右环移指令的移位示意图7.累加器半字节交换指令SWAPA功能:累加器A的高半字节与低半字节(Acc.3~Acc.0)。【例3-8】(A)=95H,执行指令SWAPA结果为

(A)=59H。8.逻辑与指令ANL A,Rn ;(A)∧(Rn)→A,n=0~7ANL A,direct ;(A)∧(direct)→AANL A,#data ;(A)∧#data→AANL A,@Ri ;(A)∧((Ri))→A,i=0~1ANL direct,A ;(direct)∧(A)→directANL direct,#data ;(direct)∧#data→direct功能:在指定的变量之间以位为基础进行“逻辑与”操作,结果存放到目的变量所在的寄存器或存储器中。操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址方式。【例3-9】(A)=07H,(R0)=0FDH,执行指令ANL A,R000000111111111010000011111111101∧)00000101结果为

(A)=05H。9.逻辑或指令ORL A,Rn ;(A)∨(Rn)→A,n=0~7ORL A,direct ;(A)∨(direct)→AORL A,#data ;(A)∨#data→AORL A,@Ri ;(A)∨((Ri))→A,i=0,1ORL direct,A ;(direct)∨(A)→directORL direct,#data ;(direct)∨#data→direct功能:是在所指定的变量之间执行以位为基础的“逻辑或”操作,结果存到目的变量寄存器或存储器中。操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址方式。【例3-10】(P1)=05H,(A)=33H,执行指令ORL P1,A0000010100110011000001010011001100110111∨)结果为

(P1)=37H。10.逻辑异或指令XRL A,Rn ;(A)⊕(Rn)→A,n=0~7XRL A,direct ;(A)⊕(direct)→AXRL A,@Ri ;(A)⊕((Ri))→A,i=0,1XRL A,#data ;(A)⊕#data→AXRL direct,A ;(direct)⊕(A)→directXRL direct,#data ;(direct)⊕#data→direct功能:是在所指定的变量之间执行以位为基础的“逻辑异或”,结果存目的变量寄存器或存储器中。操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址方式。【例3-11】(A)=90H,(R3)=73H,执行指令XRL A,R3运算式为11100011111000111001000001110011⊕)结果为

(A)=E3H。3.4.4控制转移类指令1.长转移指令LJMP addr16无条件地转向addr16指定的目的地址。目的地址可以是64KB程序存储器地址空间的任何位置。2.相对转移指令SJMP relrel为相对偏移量,所能实现的程序转移是双向的。rel如为正,则向地址增大的方向转移;rel如为负,则向地址减小的方向转移。执行该指令时,在PC加2(本指令为2B)之后,把指令的有符号的偏移量rel加到PC上,并计算出目的地址,因此目的地址可以在与该指令相邻的下一条指令的-128~+127单元之间。编写程序时,只需在相对转移指令中直接写上要转向的目的地址标号就可以了,相对偏移量由汇编程序自动计算。例如:LOOP: MOV A,R6

……

SJMP LOOP

……程序在汇编时,转移到LOOP处的偏移量由汇编程序自动计算和填入。3.绝对转移指令AJMP addrllAJMP指令为双字节,格式如下:第1字节A10A9A800001第2字节A7A6A5A4A3A2A1A0注意:转移的目标地址必须与AJMP指令的下一条指令首地址的高5位地址码A15~A11相同,否则将引起混乱。本指令是2KB范围内的无条件跳转指令,是为了与MCS-48的JMP指令兼容而设。4.间接跳转指令JMP@A+DPTR单字节转移指令,转移的目的地址由A中8位无符号数与DPTR的16位无符号数内容之和来确定。应用举例:经常用于键盘的散转程序中以及查表的散转。5.条件转移指令重点:记住转移条件。转移条件满足,则转移;条件不满足,则顺序执行指令。目的地址在以下一条指令首地址为中心的256B范围内(-128~+127)。当条件满足时,PC装入下一条指令的第一个字节地址,再把带符号的相对偏移量rel加到PC上,计算出要转向的目的地址。JZ rel ;如果累加器内容为“0”,则执行转移JNZ rel ;如果累加器内容非“0”,则执行转移6.比较不相等转移指令CJNE A,direct,relCJNE A,#data,relCJNE Rn,#data,relCJNE @Ri,#data,rel功能:比较前面两个操作数的大小,它们的值不相等则转移,则跳转。否则往下执行。7.减1不为0转移指令把减1与条件转移两种功能结合在一起的指令。共两条:DJNZ Rn,rel ;n=0~7DJNZ direct,rel将源操作数(Rn或direct)减1,结果回送到Rn寄存器或direct中。如果结果不为0则转移。说明:本指令主要用于控制程序循环,允许程序员把寄存器Rn或direct单元用作程序循环计数器。是程序设计中经常用到的指令,要牢记。8.调用子程序指令(1)长调用指令LCALL addr16LCALL指令可以调用64KB范围内程序存储器中的任何一个子程序。(2)绝对调用指令ACALL addrll与AJMP指令类似,是为了与MCS-48中的CALL指令兼容而设。指令格式如下:第1字节A10A9A801001第2字节A7A6A5A4A3A2A1A02KB范围内的调用子程序的指令。9.子程序的返回指令RET执行本指令时((SP))→PCH,然后(SP)-1→SP((SP))→PCL,然后(SP)-1→SP功能:从堆栈中退出PC的高8位和低8位字节,把栈指针减2,从PC值处开始继续执行程序。它不影响任何标志位。10.中断返回指令RETI功能和RET指令相似,两条指令的不同之处在于该指令清除了在中断响应时被置“1”的AT89S51内部中断优先级寄存器的中断优先级状态,其他操作均与RET指令相同。注意:RETI与RET指令的差别。11.空操作指令NOPCPU不进行任何实际操作,只消耗一个机器周期的时间。3.4.5位操作类指令指令系统对位地址空间具有丰富的位操作指令。1.数据位传送指令MOV C,bitMOV bit,C功能:把由源操作数指定的位变量送到目的操作数指定的单元中。其中一个操作数必须为进位标志,另一个可以是任何直接寻址位。不影响其他寄存器或标志位。例如:MOV C,06H ;(20H).6→Cy2.位变量修改指令CLR C ;Cy位清“0”CLR bit ;bit位清“0”CPL C ;Cy位求反CPL bit ;bit位求反SETB C ;Cy位置“1”SETB bit ;bit位置“1”这组指令将操作数指定的位清“0”、求反、置“1”,不影响其他标志位。例如:CLR C ;Cy位清“0”CLR 27H ;0→(24H).7位CPL 08H ;→(21H).0位SETB P1.7 ;P1.7位置“1”3.位变量逻辑与指令ANL C,bit ;bit∧Cy→CyANL C,/bit ;∧Cy→Cy4.位变量逻辑或指令ORL C,bitORL C,/bit5.条件转移类指令JC rel ;如果进位标志位Cy=1,则转移JNC rel ;如果进位标志位Cy=0,则转移JB bit,rel ;如果直接寻址位=1,则转移JNB bit,rel ;如果直接寻址位=0,则转移JBC bit,rel ;如果直接寻址位=1,则转移,并把寻址位清“0”注意:关注注释中的转移条件。3.5AT89S51指令汇总作为指令系统的总结,表3-2列出了按功能排列的全部的AT89S51指令助记符及功能简要说明,以及指令长度、执行时间和指令代码(机器代码)。可根据指令助记符,迅速查到对应的指令代码(手工汇编)。也可根据指令代码迅速查到对应的指令助记符(手工反汇编)。由于指令条数多,不宜死记硬背,应通过在程序的编写中,多加练习,在实践中不断掌握和巩固常用的指令。应该熟练地查阅表3-2,正确理解指令的功能及特性,正确地使用指令。表3-2按功能排列的指令表助记符说明字节数执行时间(机器周期)指令代码(机器代码)1.数据传送类MOVA,Rn寄存器内容传送到累加器A11E8H~EFHMOVA,direct直接寻址字节传送到累加器21E5H,directMOVA,@Ri间接寻址RAM传送到累加器11E6H~E7HMOVA,#data立即数传送到累加器2174H,dataMOVRn,A累加器内容传送到寄存器11F8H~FFHMOVRn,direct直接寻址字节传送到寄存器22A8H~AFH,directMOVRn,#data立即数传送到寄存器2178H~7FH,dataMOVdirect,A累加器内容传送到直接寻址字节21F5H,directMOVdirect,Rn寄存器内容传送到直接寻址字节2288H~8FH,directMOVdirect1,direct2直接寻址字节2传送到直接寻址字节13285H,direct2,direct1MOVdirect,@Ri间接寻址RAM传送到直接寻址字节2286H~87H,directMOVdirect,#data立即数传送到直接寻址字节3275H,direct,dataMOV@Ri,A累加器传送到间接寻址RAM11F6H~F7HMOV@Ri,direct直接寻址字节传送到间接寻址RAM22A6H~A7H,directMOV@Ri,#data立即数数传送到间接寻址RAM2176H~77H,dataMOVDPTR,#data1616位常数装入到数据指针3290H,dataH,dataLMOVCA,@A+DPTR程序存储器代码字节传送到累加器1293HMOVCA,@A+PC程序存储器代码字节传送到累加器1283HMOVXA,@Ri外部RAM(8位地址)传送到A12E2H~E3HMOVXA,@DPTR外部RAM(16位地址)传送到A12E0HMOVX@Ri,A累加器传送到外部RAM(8位地址)12F2H~F3HMOVX@DPTR,A累加器传送到外部RAM(16位地址)12F0HPUSHdirect直接寻址字节压入栈顶22C0H,directPOPdirect栈顶字节弹到直接寻址字节22D0H,directXCHA,Rn寄存器和累加器交换11C8H~CFHXCHA,direct直接寻址字节和累加器交换21C5H,directXCHA,@Ri间接寻址RAM和累加器交换11C6H~C7HXCHDA,@Ri间接寻址RAM和累加器交换低半字节11D6H~D7HSWAPA累加器内高低半字节交换11C4H2.算术运算类ADDA,Rn寄存器内容加到累加器1128H~2FHADDA,direct直接寻址字节内容加到累加器2125H,directADDA,@Ri间接寻址RAM内容加到累加器1126H~27HADDA,#data立即数加到累加器2124H,data(续表)助记符说明字节数执行时间(机器周期)指令代码(机器代码)ADDCA,Rn寄存器加到累加器(带进位)1138H~3FHADDCA,direct直接寻址字节加到累加器(带进位)2135H,directADDCA,@Ri间接寻址RAM加到累加器(带进位)1136H~37HADDCA,#data立即数加到累加器(带进位)2134H,dataSUBBA,Rn累加器内容减去寄存器内容(带借位)1198H~9FHSUBBA,direct累加器内容减去直接寻址字节(带借位)2195H,directSUBBA,@Ri累加器内容减去间接寻址RAM(带借位)1196H~97HSUBBA,#data累加器减去立即数(带借位)2194H,dataINCA累加器增11104HINCRn寄存器增11108H~0FHINCdirect直接寻址字节增12105H,directINC@Ri间接寻址RAM增11106H~07HDECA累加器减11114HDECRn寄存器减11118H~1FHDECdirect直接寻址字节减12115H,directDEC@Ri间接寻址RAM减11116H~17HINCDPTR数据指针增112A3HMULAB累加器和寄存器B相乘14A4HDIVAB累加器除以寄存器B1484HDAA累加器十进制调整11D4H3.逻辑操作类ANLA,Rn寄存器“逻辑与”到累加器1158H~5FHANLA,direct直接寻址字节“逻辑与”到累加器2155H,directANLA,@Ri间接寻址RAM“逻辑与”到累加器1156H~57HANLA,#data立即数“逻辑与”到累加器2154H,dataANLdirect,A累加器“逻辑与”到直接寻址字节2152H,directANLdirect,#data立即数“逻辑与”到直接寻址字节3153H,direct,dataORLA,Rn寄存器“逻辑或”到累加器1148H~4FHORLA,direct直接寻址字节“逻辑或”到累加器2145H,directORLA,@Ri间接寻址RAM“逻辑或”到累加器1146H~47HORLA,#data立即数“逻辑或”到累加器2144H,dataORLdirect,A累加器“逻辑或”到直接寻址字节2242H,directORLdirect,#data立即数“逻辑或”到直接寻址字节3243H,direct,dataXRLA,Rn寄存器“逻辑异或”到累加器1168H~6FHXRLA,direct直接寻址字节“逻辑异或”到累加器2165H,direct(续表)助记符说明字节数执行时间(机器周期)指令代码(机器代码)XRLA,@Ri间接寻址RAM字节“逻辑异或”到累加器1166H~67HXRLA,#data立即数“逻辑异或”到累加器2164H,dataHXRLdirect,A累加器“逻辑异或”到直接寻址字节2162H,directXRLdirect,#data立即数“逻辑异或”到直接寻址字节3263H,direct,dataCLRA累加器清“0”11E4HCPLA累加器求反11F4HRLA累加器循环左移1123HRLCA经过进位标志位的累加器循环左移1133HRRA累加器循环右移1103HRRCA经过进位标志位的累加器循环右移1113H4.控制转移类ACALLaddrll绝对调用子程序22a10a9a810001,addr(7~0)LCALLaddr16长调用子程序3212H,addr(15~8),addr(7~0)RET子程序返回1222HRETI中断返回1232HAJMPaddrll绝对转移22a10a9a800001,addr(7~0)LJMPaddr16长转移3202H,addr(15~8),addr(7~0)SJMPrel短转移(相对偏移)2280H,relJMP@A+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论