《单片机原理及基于单片机的嵌入式系统设计第二版ppt课件(完整版).ppt》由会员分享,可在线阅读,更多相关《单片机原理及基于单片机的嵌入式系统设计第二版ppt课件(完整版).ppt(589页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及基于单片机的嵌入式系统设计绪绪 论论 在工业、农业、军事、保安、金融、仪器在工业、农业、军事、保安、金融、仪器仪表、航空航天、医疗、通讯、办公设备、仪表、航空航天、医疗、通讯、办公设备、娱乐休闲、健身、体育竞赛、服务领域娱乐休闲、健身、体育竞赛、服务领域,大量单片机大量单片机-嵌入式技术已经无处不在。嵌入式技术已经无处不在。正迅速改变着人们传统的生产和生活方式。正迅速改变着人们传统的生产和生活方式。请稍微留心一下我们的周围,看看身边到请稍微留心一下我们的周围,看看身边到底发生了什么变化?底发生了什么变化?单片机技术的应用遍布国民经济与人民生活的各个领域1.1 微型计算机系统结构微型
2、计算机系统结构微微机机的的工工作作过过程程按按照照“程序存储,程序控制”的方式工作。程序存储是指用户根据实际应用需要将程序编写完毕,并将程序的机器码存放在存储器中。用户编程的根本目的是要求计算机能够按照用户需求一步步的执行该段程序。那么计算机如何能够理解用户程序,并按要求去执行该段程序呢?这就是程序控制。程序控制是指CPU内的控制器按照用户程序中的指令顺序,从存储器中取出指令,并分析指令的功能,进而发出各种控制信号,指挥计算机中的各类部件来执行该指令。这种通过取指令、分析指令、执行指令的操作重复执行,直到完成程序中的全部指令操作为止。1.2微型计算机工作过程微型计算机工作过程一、如何将程序的机
3、器码存储到程序存储器中?二、如何将程序的机器码从程序存储器中取出?三、当CPU完成从程序存储器中读出程序的机器码后,如何执行该语句?按照“程序存储,程序控制”的方式工作,微机必须解决以下几个问题:对对5151单单片片机机而而言言,将程序存储到程序程序器中则相对复杂,必须利用51单片机芯片厂家提供的专用设备(烧写器)来完成,市场上有专门的单片机烧写器销售。烧写器实际上就是完成对程序存储器的写操作。利用烧写器可以将用户程序的机器码存储到单片机中。1.2.1 如何将程序如何将程序机器码机器码烧写到程序存储器中烧写到程序存储器中对于普通对于普通PC而言,而言,其程序存放在硬盘中,此时面临的问题就是将文
4、件、程序内容写入硬盘,在Windows操作系统中提供了图形化的操作环境,读者不必了解对硬盘的写操作原理,仅需要按“保存”按钮或“保存”菜单就可以很方便的完成该操作。1.2.2 1.2.2 如何将程序从程序存储器中取出如何将程序从程序存储器中取出1 1最基本的计算机组成最基本的计算机组成2 2存储器存储器3 3非常简单的非常简单的CPU设计与实现设计与实现4 4如何从程序存储器中取程序数据如何从程序存储器中取程序数据 一台简单的计算机通常包括三个主要的子系统,中央处理单元(CPU)、存储系统(用来存储CPU正在执行的程序和数据)、输入/输出子系统(如键盘、显示等)1 1 最基本的计算机组成最基本
5、的计算机组成计算机系统采用了三总线结构。从物理上说,总线是一组导线,计算机的部件都是连在总线上的,为了将信息从一个部件传到另一个部件,源部件先将数据输出到总线上,然后目标部件在从总线上接收这些数据。地址总线:与其他总线不同,地址总线是单向的,地址总线的内容总是由CPU送到地址总线上,而CPU不读取地址总线上的数据。例如,当CPU从存储器读取数据或指令,或写数据到存储器时,必须指明要访问的存储器单元地址,CPU输出地址内容到地址总线上,而存储器从地址总线上读取地址,并且用它来访问正确的存储单元。对应I/O子系统,比如键盘、显示等,都有一个唯一的地址,当访问某个I/O子系统时,CPU将此设备的地址
6、放到地址总线上,每一个设备均从总线上读取地址并且判断自己是不是CPU正要访问的设备。若不是则不作任何响应,若是则和CPU进行相应的数据传输。数据总线:数据是通过数据总线来传送的,当CPU从存储器中读取数据时,它首先把需要访问的存储器地址输出到地址总线上,发出读操作命令,然后存储器从地址总线上读取地址,并根据地址访问相应的存储单元,同时将该存储器单元中的数据输出到数据总线上,这样CPU就可以从数据总线上读取数据了。当CPU向存储器写入数据时,它首先输出地址到地址总线上,发出写操作命令,然后输出数据到数据总线上,这样存储器就可以从数据总线上读取数据并将它存储到正确的存储单元中。当访问某个I/O子系
7、统时其数据总线功能类似于对存储器的访问。控制总线:控制总线是控制信号的集合,这些信号用来控制数据要读入CPU还是要写入CPU,CPU要访问存储器还是访问I/O子系统等。答:只有数据总线,没有地址和控制总线,则通信方式只能采用“广播通信方式”,若只有数据和控制总线,没有地址总线,则每个外部设备都必须有控制总线,若外部设备多,则控制总线就必须增加,控制总线必然称为外部设备扩展的“瓶颈”。若没有地址总线,对应存储器而言,在没法确定当前数据需要存放在存储器的那个地址单元中。问1、为什么需要三总线,只有数据总线不可以?问2、鼠标、键盘是外部IO设备,为什么不是三总线?答:在计算机中硬件设计了三总线协议和
8、PS/2或USB协议的接口转换电路,即将并行数据改为串行数据传输方式存储器用于存储数据的一组电路,虽然在设计中它不是严格的组合电路,一个存储器元件有多个存储单元,每个单元存储固定长度的二进制值,不同的存储器芯片,其存储单元的数量和大小也不相同,存储器芯片存储容量大小由单元数乘以每个单元的位数确定。存储器一般分为随机读写存储器(RAM)和只读存储器(ROM)。2存储器存储器随机存取存储器(RAMRandomAccessMemory):简称随机存储器或读写存储器。是一种既能写入又能读出数据的存储器。但当机器断电或关机时,存储器中存储的信息会立即消失。只读存储器(ROMReadOnlyMemory)
9、:是计算机内部一种只能读出数据信息而不能写入信息的存储器。但当机器断电或关机时,只读存储器中的信息不会丢失。存储器可以形象的把它理解成装了很多元件盒的元件储存柜,元件储存柜放很多元件盒,每个元件盒中放不同的元件,当用户需要某一元件时,必须知道该元件放在那个元件盒中,即需要对元件盒进行编号,否则只能一个个元件盒查找。对应于存储器,编号即为存储器的地址,元件盒内的元件就是存储数据。例如一个大小为5128位的存储器芯片有512个存储单元,每个单元8位就可以理解成元件柜共512个元件盒,那么如果想找到对应的元件盒里的元件就必须对元件盒进行编号,若采用二进制编号,则512个单元共需要9位二进制,即对应存
10、储器的地址。对元件盒里元件个数可以采用8位计数,即一个元件盒最多可存放255个元件,即可以得到对应元件盒中的数据信息。存储器芯片的地址输入选择它其中的一个单元,有个单元的存储器芯片需要N位的地址输入,通常标记A【N10】,对于大小为5128位的存储器芯片而言,其地址总线为A【8.0】。存储器芯片中的数据引脚常用于访问数据,数据总线的每一位都有一个引脚,对于M位的数据总线在,这些引脚通常标记为D【M10】,对于大小为5128位的存储器芯片而言,其数据总线为D【7.0】。问:为什么数据总线不是三根?答:若数据总线是三根,则存储器中存储的数据最大只能为8,若数据总线8根,则存储的数据最大为256这一
11、节描述和设计一个非常简单的CPU,这个CPU在现实中是没有任何应用价值的,因为它太简单了,但是目的是为了读者理解CPU的具体工作原理。为了说明CPU的设计过程,考虑一个小型的有点不实用的CPU,这款CPU的特点是:CPU仅能够访问64字节的存储空间(程序存储器和数据存储器共用)每个字节是8位 CPU只包含一个程序员可以访问的寄存器,即一个标记为ACC的8位累加器3 3 非常简单的非常简单的CPUCPU设计与实现设计与实现指令集通常由三大类指令组成,传送类指令、运算(包括逻辑运算)类指令、转移类指令三部分组成。在这款CPU中,仅设计4条指令,按照等长编码模块,利用高二位对指令类型进行编码,低6位
12、AAAAAA表示地址线,如下表11所示。MOV指令代表“传送类”指令,ADD指令代表“运算类”指令,AND指令代表“逻辑运算类”指令,LJMP指令代表“转移类”指令。该CPU的指令集对上面这个CPU而言,可以说:麻雀虽小,五脏具全,从系统结构的指令集设计而言,这个系统包括运算类、传送类、转移类、逻辑运算类指令。根据该款CPU的特点,可以看出该CPU可访问64字节的存储器空间,所以其地址总线是A5.0。由于每个字节是8位,所以其数据总线为D70。CPU设计到这里,还缺什么?除了ACC累加器以外,CPU还需要一些其他的寄存器,以便完成取数据、译码和执行指令所必须的内部操作,这些寄存器为:一个6位的
13、程序计数器(PC),它的内容为将被执行的指令在程序存储器中的存储地址。一个6位的地址寄存器(AR),CPU不能直接将地址信息送往地址总线,CPU首先将地址信息送给地址寄存器AR,AR通过地址总线A5.0向存储器提供地址。一个8位的数据寄存器(DR),CPU不能直接将数据信息送往数据总线,CPU首先将数据信息送给数据寄存器DR,DR通过数据总线D70从存储器读写指令数据。一个2位的指令寄存器(IR),它用来存放从存储器中取回指令的操作码。至此,一个简单的CPU总算设计完成,一个CPU该有的都有了,能够完成一些简单的操作。在CPU能够执行某条指令之前,它必须将这条指令从存储器中取出来,CPU从程序
14、存储器中取程序数据的具体操作过程将当前要执行指令的存储地址送到程序计数器中,由于地址总线A【5.0】的内容必须从地址寄存器送出,因此第一步就是要把程序计数器PC的内容拷贝到AR中,这样,取指令周期的第一步状态就是:第一步:ARPC4如何从程序存储器中取程序数据如何从程序存储器中取程序数据CPU从存储器中读取指令数据:CPU必须发一个READ信号,该信号从CPU控制总线输出到存储器控制总线上,CPU给存储器足够的时间按照CPU提供的地址访问相应的存储单元M,同时存储器将访问的数据(即指令的机器码)发送到数据总线D【70】上,CPU通过数据总线将这些数据读入并且存储到DR中。实际上另一个操作也将在
15、这里完成,增加程序计数器,以便能访问下一条指令。所以第二步实际上是完成如下操作。其中(M)表示存储单元M中的内容。第二步:DR(M),PCPC1上述两步完成后,CPU已经得到程序的机器码,作为取指令的一部分,CPU还必须完成两件事情,首先,它必须将DR的高两位拷贝到IR,这两位表示那条指令将要执行,同时在取指令阶段CPU将DR的低6位拷贝到AR中,这样这两个操作可以表示如下。第三步:IRDR7.6,ARDR5.0完成上面三步操作后,CPU将程序存储器内容取出,其高二位存放在指令寄存器IR中,为操作码信息,通过IR的值可以判断该指令为四条指令中的哪一条。低6存放在地址寄存器AR中,为执行指令操作
16、的操作数的地址编码。例如进行ADD加法操作,则必须以AR单元的内容为地址去访问存储器,并取出该存储单元的内容和累加器ACC中的内容进行相加,那么如何以AR单元的内容为地址去访问存储器,该存储单元的内容又是如何得到呢?即CPU完成对存储器的读操作。CPU以AR单元的内容为地址去访问存储器,从存储器中读取操作数。CPU发一个读信号,该信号从CPU控制总线输出到存储器控制总线上,CPU给存储器足够的时间按照CPU提供的AR单元的内容作为地址访问相应的存储单元,同时存储器将访问的数据(即指令的操作数)发送到D【7.0】上,CPU通过数据总线将这些数据读入并且存储到DR中。所以第四步实际上是完成如下操作
17、。(AR)表示以AR单元的内容为地址所对应的存储单元的内容。第四步:DR(AR)1.2.3CPU读出指令码和操作数后如何执行当CPU把一条指令从存储器中取出来以后,它必须判断所取的是那条指令,对于这个最简单的CPU而言,有四条指令,根据等长编码原理,可以将四条指令依次编码为00,01,10,11。指令寄存器IR的值由当前指令类型决定,指令寄存器IR中的值将决定调用那个执行周期,为执行“传送类”指令,CPU必须完成两件事情。首先必须从存储器中取出一个操作数,然后将这个操作数送入累加器中。操作数的取值通过对存储器的读操作已经将操作数取出。现在两个操作数分别放在ACC和DR中,因此对于ADD指令,主
18、要进行下面的操作。第五步:MOV:ACCDR当前指令执行完毕后,开始取下一条指令。即将当前PC值送入AR中,重新开始下一条指令的执行。1MOV指令执行周期为执行“加法”指令,CPU必须完成两件事情。首先必须从存储器中取出一个操作数,然后必须将这个操作数和累加器中当前的值相加,并把结果存回到累加器中。操作数的获取通过第四步对存储器的读操作已经完成。现在两个操作数分别放在ACC和DR中,因此对于ADD指令,主要完成下面的操作。第五步:ADD:ACCACCDR2ADD指令执行周期与加法指令类似,为执行“与操作”指令,CPU必须完成两件事情。首先必须从存储器器中取出一个操作数,然后必须将这个操作数和累
19、加器中当前的值相“与”操作,并把结果存回到累加器中。现在两个操作数都在ACC和DR中,因此对于AND指令,主要进行下面的操作。第五步:AND:ACCACCDR3AND指令执行周期由于LJMP指令中不需要操作数,所以LJMP指令与上述三条指令执行略有不同,不需要第四步操作。CPU只需要完成将要跳转的目标地址送给程序计数器即可。因此与上述指令第四和第五步操作不同,LJMP指令执行周期相对简单,由于地址已经存储在AR,仅需要将AR的值送给PC指针,因此对于LJMP指令,仅需要如下操作即可。第四步:LJMP:PCAR为了更形象的说明上述过程,可以用图来说明所设计的CPU的状态图,包括了取指、译码和执行
20、周期。4LJMP指令执行周期1.3 单片机发展历史单片机发展历史1971年intel公司研制成功世界上第一台4位微处理器;1973年intel公司研制成功80808位微处理器;1976年intel公司推出MCS-48系列8位单片机;80年代初在MCS-48单片机基础上推出MCS-51系列单片机。计算机系统通常由多块印刷电路板制成:计算机系统通常由多块印刷电路板制成:多板机多板机主板显卡显卡声卡声卡存储器接口存储器接口网卡网卡输入输出接口输入输出接口内存条内存条CPU芯片芯片内存条内存条存储器接口存储器接口存储器芯片存储器芯片输入输出接口输入输出接口输入输出接口输入输出接口芯片芯片定时计数器定时
21、计数器芯片芯片A/D、D/A芯片芯片单板机印印刷刷电电路路板板单单硅硅晶晶片片CPU存储器存储器控制电路控制电路定时器定时器时钟电路时钟电路I/O口口单片机1.4 单片机发展趋势单片机发展趋势1低功耗CMOS化2微型单片化3主流与多品种共存1小巧灵活、成本低,易于产品化。它能方便的组小巧灵活、成本低,易于产品化。它能方便的组装成各种智能化的控制设备及各种智能仪器仪表。装成各种智能化的控制设备及各种智能仪器仪表。2面向控制,能针对性地解决从简单到复杂的各类面向控制,能针对性地解决从简单到复杂的各类控制任务,因而能获得最佳的性能价格比。控制任务,因而能获得最佳的性能价格比。3抗干扰能力强,适应温度
22、范围宽,在各种恶劣的抗干扰能力强,适应温度范围宽,在各种恶劣的环境条件下都能可靠地工作,这是其他机种无法比环境条件下都能可靠地工作,这是其他机种无法比拟的。拟的。4可以很方便地实现多机和分布控制。使整个控制可以很方便地实现多机和分布控制。使整个控制系统的效率和可靠性大为提高。系统的效率和可靠性大为提高。1.5单片机特点单片机特点Intel公司:公司:8048、8051(8位);8096(16位);80960(32位)。Motorola公司:公司:MC-6801(8位);68H16(16位);68HC332(32位)。另外日本NEC公司;荷兰Philips公司等由于8位单片机基本能满足目前大多数
23、应用系统的要求,所以目前8位单片机仍是应用主流应用主流。1.6主要单片机厂商主要单片机厂商 MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如80318031,80518051,87518751,89518951,80328032,80528052,87528752,89528952等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机,而8031是早些年在我国最流行的单片机,所以很多场合会看到8031的名称。MCS-51系列 INTEL公司将MCS
24、-51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。AT89系列 补充 单片机的开发过程1、任务分析2、设计并制作硬件3、编写软件。在编写软件之前,首先要确定一些常数、地址,然后用文本编缉器编写软件,编写好后,用编译器对源程序文件编译、查错,直到没有语法错误4、应用仿真机对软件进行调试,直到程序运行正确5、运行正确后,就可以写片(将程序固化在EPROM中)仿真是单片机开发过程中非常重要的一个环节,除了一些极简单的任务,一般产品开发过程中
25、都要进行仿真,仿真的主要目的是进行软件调试,当然借助仿真器,也能进行一些硬件排错。一块单片机应用电路板包括单片机部份及为达到使用目的而设计的应用电路,仿真就是利用仿真器来代替应用电路板(称目标机)的单片机部份,对应用电路部份进行测试、调试。仿真分软件模拟仿真和利用仿真器仿真两类。仿真、仿真器软件模拟仿真 是指用仿真软件来模拟单片机运行情况,一般我们学习指令系统时常用这种方式,它不能进行硬件系统的调试和故障诊断。利用仿真器仿真 利用仿真器以及微机可以进行软硬件系统的调试和故障诊断。在仿真调试过程中,可以以各种运行方式运行程序(断点、单步、跟踪),还可以观察到单片机内部存储器、寄存器等的状态。源程
26、序源程序 ORG 0000H LJMP START ORG 040HSTART:NOP LOOP:NOP LJMP LOOP;循环循环 END;结束结束目标文件目标文件也就是最终写入也就是最终写入EPROMEPROM的文件:的文件:02 00 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FFFF FF FF FF FF FF FF FFFF FF FF FF FF FF FF FFFF FF FF FF FF FF FF FFFF FF FF FF FF FF FF FFFF FF FF FF FF FF FF
27、FF 00 00 02 00 41 FF FF FF举例说明举例说明(完成一段空操作程序)完成一段空操作程序)问:如何学习单片机?1、了解单片机外部硬件接口以便设计硬件电路2、熟悉单片机指令系统和程序设计方法学习单片机的方法:1、预习、复习;2 2、多动手(硬件、软件实验);3 3、多看参考书(包括利用网上资料);4、其它(上课、作业、答疑)第2章MCS-51单片机结构和原理2.1MCS-51系列单片机特性系列单片机特性2.2从外部引脚初看从外部引脚初看51单片机单片机2.3从引脚使用二看单片机从引脚使用二看单片机2.4从内部结构三看从内部结构三看51单片机单片机2.5并行输入并行输入/输出端
28、口输出端口MCS-51系列单片机特性系列单片机特性MCS-51系列单片机虽已有10多种产品,但可分为两大系列:MCS-51子系列与MCS-52子系列。MCS-51子系列中主要有8031、8051、8751三种类型。而MCS-52子系列也有3种类型8032、8052、8752。各子系列配置见下表所示。图2-1MCS-51系列单片机特性v从图2-1所示可以看出,MCS-51系列单片机的两个子系列在性能上略有差异。8031、80C31芯片仅在制造工艺上有所不同,其他完全相同,对于8051、80C51、8751、87C51、MCS-52系列单片机的制造工艺也是如此,即C系列芯片采用CHMOS工艺。v对
29、于制造工艺为CHMOS的单片机,由于采用CMOS技术制造,因此具有低功耗的特点。如8051功耗约为630mW,而80C51的功耗只有120mW。v8031没有片内ROM,即8031芯片外部必须外扩程序程序器。8051芯片片内集成4K容量的ROM,8751芯片片内集成4K容量的EPROM,与MCS-51相比,MCS-52子系列片内程序存储器ROM从4KB增至8KB。片内数据存储器由128个字节增至256个字节。定时器/计数器增加了一个,中断源增加了12个。MCS51系列单片机芯片均为40个引脚,HMOS工艺制造的芯片采用双列直插(DIP)方式封装,其引脚示意及功能分类如图23所示。CMOS工艺制
30、造的低功耗芯片也有采用方型封装(PLCC)的,但为44个引脚,其中4个引脚是不使用的2.2从外部引脚一一看51单片机vVCC(40脚):接+5V电源正端;vVSS(20脚):接+5V电源地端1.主电源引脚Vcc和VssXTAL1:接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟时,该引脚必须接地。XTAL2:接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。2.外接晶体引脚XTAL1和XTAL2:地址锁存允许信号当8051上电正常工作后,ALE引脚不断向外输出脉冲信号,此频率为振荡器频率的1/6,
31、当CPU访问外部存储器时(振荡频率的1/12),ALE输出信号作为锁存低8位地址的控制信号,不访问片外存储器时,ALE端以振荡频率的1/6固定输出脉冲,因此ALE信号可用作对外输出时钟或定时信号。所以利用ALE引脚可以很方便的判断单片机是否正常工作。当单片机上电复位后,用示波器测ALE引脚,若有脉冲输出,则说明单片机最小系统外围电路连接正确,单片机正常工作。该引脚的第二功能在对片内带有4K容量EPROM的8751编程时作为编程脉冲输入端。但是目前市面上很难买到8751芯片,通常都是89C51或89S51,所以该引脚的第二功能可以不必了解RST(9脚):复位引脚对于微机系统都是必不可少的,该引脚
32、可以保证程序跑飞后重新开始执行程序。对51单片机复位而言,高电平有效,只要在该引脚上输入两个机器周期以上的高电平,就可完成复位操作。(29脚):脚):访问外部程序存储器选通信号,低电平有效。(不必了解)引脚为高电平时,CPU访问内部ROM,但当PC指针超过0FFFH时(4K),自动转向执行外部ROM,引脚为低电平,则访问外部ROM。:访问内部或外部ROM选择信号四个8位双向I/O端口(P0、P1、P2、P3);每一条I/O线都能独立地作输入或输出。P0口(3239)低8位地址/数据线复用或I/O口。P1口(18)常用的I/O口。P2口(2128)常用I/O口或高8位地址线。P3口(1017)常
33、用I/O口,每个引脚还具有第二功能I/O口引脚(口引脚(32个引脚)个引脚)P3口第二功能2.3从引脚使用二看单片机单片机最小系统的必备条件1、电源2、EA引脚3、晶体振荡电路4、复位电路2.3.1单片机最小系统的实现单片机最小系统的实现单片机的定时控制功能是由片内的时钟电路和定时电路来完成的,而片内的时钟产生有两种方式:一种是内部时钟方式;一种是外部时钟方式片内振荡器及时钟信号的产生v采用内部时钟方式时,片内的高增益反相放大器通过XTAL1、XTAL2外接作为反馈元件的片外晶体振荡器(呈感性)与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。振荡器的频率主要取决于晶体的
34、振荡频率,一般晶体可在1.212MHz之间任选,电容C1、C2可在530pF之间选择,电容的大小对振荡频率有微小的影响,可起频率微调作用。复位电路通过某种方式通过某种方式,使单片机内各寄存器的值使单片机内各寄存器的值变为初始状态的操作称为复位。变为初始状态的操作称为复位。复位是单复位是单片机的初始化操作,其主要功能是把片机的初始化操作,其主要功能是把PC指指针初始化为针初始化为0000H,使单片机从,使单片机从0000H单元单元开始执行程序开始执行程序。如何进行复位呢?只要在单片机的只要在单片机的RSTRST引引脚上脚上给出给出2个机器周期的高电平就可以完成个机器周期的高电平就可以完成复位操作
35、(一般复位正脉冲宽度大于复位操作(一般复位正脉冲宽度大于10ms)。复位分为上电复位和外部复位两种方)。复位分为上电复位和外部复位两种方式式。(a)上电复位电路;(b)上电/外部复位电路单片机最小系统计算机在执行指令时,通常将一条指令分解为若干基本的微操作,这些微操作所对应的脉冲信号在时间上的先后次序称为计算机的时序。为便于理解时序,先介绍几个常用名词振振荡荡周周期期:振荡周期指为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。时时钟钟周周期期(状状态态周周期期):2个振荡周期为1个状态周期,用S表示。它分为P1节拍和P2节拍,通常在P1节拍完成算术逻辑操作,在P2节拍完成内部寄存器之间
36、的传送操作。2.3.2时钟信号机器周期:机器周期:一个机器周期是指CPU访问存储器一次所需要的时间。MCS51的一个机器周期包括12个振荡周期,分成6个状态:S1S6,每个状态又分为两拍,称为P1和P2,因此一个机器周期中的12个振荡周期表示为S1P1、S1P2S6P1、S6P2指令周期:指令周期:指令周期即执行一条指令所占用的全部时间,通常为14个机器周期例如:外接晶振为12MHz时,MCS51单片机的4个时间周期的具体值为:振荡周期=1/12s;状态周期=1/6s;机器周期=1s;指令周期=14s2.3.3复位状态MCS51单片机复位后,程序计数器PC和特殊功能寄存器复位的状态如下表。复位
37、不影响片内RAM存放的内容,而ALE、在复位期间将输出高电平vPC=0000H表示复位后程序的入口地址为0000H;vPSW=00H,其中RS1(PSW.4)=0,RS0(PSW.3)=0,表示复位后单片机选择工作寄存器0组;vSP=07H表示复位后堆栈在片内RAM的08H单元处建立;vP0口P3口端口电平为全1状态;v定时器/计数器、串行口、中断系统等特殊功能寄存器复位后的状态对各功能部件工作状态的影响,将在后续有关章节介绍2.4从内部结构三看51单片机8051内部集成了一台微型计算机的各个部分。其中主要有CPU、存储器(4KB ROM、128B RAM)、四个8位可编程I/O、定时/计数器
38、、串行口等。很多工作寄存器及特殊功能寄存器(SFR),各部分通过内部总线相连。单片机结构框图单片机结构框图 频率基准源计数器内部总线内部总线中断中断控制并行I/O口串行输入/输出8051振荡器及定时电路4 K/8K字节程序存储器ROM128/256字节数据存储器RAM2个16位定时器/计数器8051CPU64K字节总线扩展控制可编程I/O口48位可编程串行口2.4.1中央处理器CPU中央处理器是单片机内部的核心部件,它决定了单片机的主要功能特性。它由运算部件和控制部件两大部分组成运算部件以一个可进行8位算术运算和逻辑运算的单元ALU为核心,加上8位累加器A、寄存器B、暂存器TMP1和TMP2、
39、程序状态寄存器PSW及专门用于位操作的布尔处理机组成的,它能实现数据的算术逻辑运算,位变量处理和数据传送操作。1运算部件ALU:可对4位、8位和16位数据进行操作。不仅能完成加(带进位加)、减(带借位减)、乘、除、加1、减1及BCD加法的十进制调整等算术运算,还能进行逻辑“与”、“或”、“异或”、求补、清零等逻辑运算,并具有数据传送,程序转移等功能算术逻辑单元ALUACC简称累加器A,为一个8位寄存器,它是CPU中使用最频繁的寄存器。进入ALU作算术和逻辑运算的操作数多来自于A,运算结果也常送回A保存。累加器ACC程序状态字寄存器PSW(8位)是一个标志寄存器,它保存指令执行结果的特征信息,以
40、供程序查询和判别。寄存器B8位寄存器,寄存器B是为ALU进行乘除法设置的,在进行乘除运算时,B寄存器用来存放一个操作数,也用来存放运算后的一部分结果,若不作乘除运算,则作为通用寄存器使用程序状态字CY(PSW.7)进位标志位。AC(PSW.6)辅助进位(或称半进位)标志。F0(PSW.5)由用户定义的标志位。RS1(PSW.4)、RS0(PSW.3)工作寄存器组选择位。OV(PSW.2)溢出标志位。由硬件置位或清零PSW.1未定义位。P(PSW.0)奇偶标志位。POVRS0RS1F0ACCYPSW.7PSW.0程序状态字格式及含义布尔处理(即位处理)是MCS51单片机ALU所具有的一种功能。单
41、片机指令系统中的布尔指令集(17条位操作指令),存储器中的位地址空间,以及借用程序状态标志寄存器PSW中的进位标志CY作为位操作“累加器”,构成了单片机内的布尔处理机。布尔处理机2控制部件控制部件是单片机的神经中枢,它包括程序计数器PC、指令寄存器IR、指令译码器ID、振荡和定时电路等部件。程序计数器PC:由两个8位的计数器PCH和PCL组成,共16位,PC实际上是程序的字节地址计数器,PC中的内容可对64KB的ROM(程序存储器)直接寻址,也可对片外RAM寻址。指令寄存器IR、指令译码器ID仅限于CPU对其操作,用户没有办法编程改变这些寄存器的值。2.4.251单片机存储器及存储空间MCS5
42、1单片机存储器从物理结构上可分为:片内、片外程序存储器(8031和8032没有片内程序存储器)与片内、片外数据存储器4个部分;从寻址空间分布可分为:程序存储器、内部数据存储器和外部数据存储器3大部分;从功能上可分为:程序存储器、内部数据存储器、特殊功能寄存器、位地址空间和外部数据存储器5大部分MCS51系列单片机存储器包括片内ROM(或EPROM)和RAM外,另外还有128个字节的RAM区作为特殊功能寄存器(SFR)区。片内、片外程序存储器和数据存储器各自总容量为64KB。2.4.3程序存储器1、程序存储器的编址计算机的工作是按照事先编制好的程序一条条顺序执行的,程序存储器就是用来存放这些已编
43、好的程序和表格常数,它由只读存储器ROM或EPROM组成。2.程序运行的入口地址实际应用时,程序存储器的容量由用户根据需要扩展,而程序地址空间原则上也可由用户任意安排。但程序最初运行的入口地址,MCS51单片机是固定的,用户不能更改。程序存储器中有复位和中断源共7个固定的入口地址见下表MCS51单片机复位和中断入口地址2.4.4内部数据存储器MCS51系列单片机的内部数据存储器由读写存储器RAM组成,用于存储数据。它由RAM块和特殊功能寄存器(SFR)块组成,其结构如图所示。内部RAM块的00H1FH区,共分4个组,每组有8个工作寄存器R0R7,共32个内部RAM单元。由PSW中的2位RS1、
44、RS0来决定选哪一组为当前工作寄存器:1工作寄存器区(00H1FH)注:工作寄存器共有4组,通过程序状态字PSW中的PSW.3(RS0)和PSW.4(RS1)两位来选择哪1组寄存器工作。单片机上电复位后,RS1=RS0=0,CPU自动选择第0组为当前工作寄存器组。根据需要,可利用传送类指令对PSW字节操作或用位操作指令改变RS1和RS0的状态,以切换当前工作寄存器组。用户通过软件编程修改PSW中RS0和RS1两位的状态,就可任选一个工作寄存器工作,这个特点使MCS-51单片机具有快速现场保护功能,对于提高程序的效率和响应中断的速度是很有利的。若程序中并不需要4个工作寄存器组,那么剩下的工作寄存
45、器组所对应的单元也可以作为一般的数据缓冲区使用2位寻址区(20H2FH)20H2FH单元为位寻址区,这16个单元(共计128位)的每1位都有一个8位表示的位地址,位地址范围为00H7FH3数据缓冲区30H7FH30H7FH是数据缓冲区,也即用户RAM区,共80个单元。用户变量的定义都是在该缓冲区内。数据缓冲区主要为用户进行字节操作指令时提供字节变量定义。在程序实际运行中,往往需要一个后进先出的RAM区,在子程序调用、中断服务处理等场合用以保护CPU的现场,这种后进先出的缓冲区称为堆栈。MCS51单片机堆栈区不是固定的,原则上可设在内部RAM的任意区域内,但为了避开工作寄存器区和位寻址区,一般设
46、在60H以后的范围内,栈顶的位置由专门设置的堆栈指针寄存器SP(8位)指出。4堆栈与堆栈指针MCS51单片机在使用堆栈之前,先给SP赋值,以规定堆栈的起始地址,称为栈底。当数据压入堆栈后,SP自动加1,即RAM地址单元加1,以指出当前堆栈位置,8051的这种堆栈结构属向上生长型,如下图注:用户编程只需要规定栈底地址后,不对堆栈操作,堆栈操作由编译器完成。2.4.5特殊功能寄存器(SFR)特殊功能寄存器SFR,又称为专用寄存器。它专用于控制、管理单片机内算术逻辑部件、并行I/O口锁存器、串行口数据缓冲器、定时器/计数器、中断系统等功能模块的工作,SFR的地址空间为80HFFH先介绍部分特殊功能寄
47、存器,其他在以后课程中介绍1、累加器ACC(E0H)2、寄存器B(F0H)3、程序状态寄存器PSW(D0H)4、堆栈与堆栈指针5、数据指针寄存器DPTR注:PC也为双字节寄存器,但是不在80H FFH范围内数据指针寄存器DPTR 16位寄存器,包括两个8位寄存器DPL和DPH,地址分别为82H和83H。DPTR既可以作为一个16位寄存器来处理,也可以作为两个独立的8位寄存器来使用。DPTR主要用于访问外部RAM时作为地址指针,也可访问ROM中的表格常数。注:单片机中唯一的16位寄存器注:PC也为16位寄存器,但存在控制部件中,不属于特殊功能寄存器2.5并行输入/输出接口1.P0口结构P0口作为
48、低八位地址/数据分时复用口,也可作为通用I/O接口。P0口作为通用I/O使用时,必须外接上拉电阻2、P1口结构P1只有一种功能,即通用输入输出I/O接口3.P2口结构P2口作为高八位地址线,也可作为通用I/O接口。4、P3口结构P3除作为通用输入输出I/O接口,还拥有第二功能,大多数情况下P3口作为第二功能。负载能力全部针对端口作为输出而言,P0作为输出时可驱动8个LS型TTL负载P1、P2、P3作为输出时可驱动4个LS型TTL负载端口负载能力和接口要求第4章汇编语言程序设计4.1伪指令4.1.1为什么要使用伪指令4.1.2MCS51单片机的伪指令4.2汇编语言程序设计4.2.1顺序结构4.2
49、.2分支程序4.2.3循环结构4.2.4子程序设计和子程序调用4.1.1为什么要使用伪指令为什么要使用伪指令汇编源程序是由一条条汇编语句构成,汇编语句是汇编源程序的基本元素。前一章详细介绍了MCS51单片机的111条汇编语句,但是当需要利用这些汇编语句进行编程时,会发现这些问题:存储空间分配问题:在利用高级语言(如C语言)编程时,用户无需考虑存储空间的分配,因为操作系统和软件编译器帮助用户解决了这些问题,使得存储空间分配对用户来说是透明的,但是对MCS51单片机而言,存储空间分配是用户必须解决的一个问题,即存储空间分配对用户不再是透明的。但是在指令系统一章却没有介绍任何指令能够实现对存储空间的
50、分配。变量和常量的定义:在高级语言(C语言)编程中,首先介绍了常量和变量的定义(Define、int,char等),但是在指令系统一章却没有介绍任何指令能够实现对常量和变量的定义。数组的定义:在高级语言(C语言)编程中,可以定义数组,数组在编程中被大量使用,但是在指令系统一章却没有介绍任何指令能够实现对数组的定义。综上所述,仅靠MCS51单片机的111条汇编指令还是无法解决编程中遇到的上述问题,所以MCS51单片机提供了伪指令来解决上述问题。为什么要使用伪指令(续)为什么要使用伪指令(续)4.1.2 MCS51单片机的伪指令单片机的伪指令伪指令不是真正的指令,无对应的机器码,在汇编时不产生可供