收藏 分销(赏)

《单片机原理及基于单片机的嵌入式系统设计》第二版全套电子整本书电子教案教学教程.ppt

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

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服