单片机程序设计实践教程 第02章_mcs 51单片机内部结构_第1页
单片机程序设计实践教程 第02章_mcs 51单片机内部结构_第2页
单片机程序设计实践教程 第02章_mcs 51单片机内部结构_第3页
单片机程序设计实践教程 第02章_mcs 51单片机内部结构_第4页
单片机程序设计实践教程 第02章_mcs 51单片机内部结构_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1,单片机程序设计实践教程,第二讲 MCS 51单片机内部结构,2,MSC单片机内部结构,在第1章已经介绍过,MCS-51是指由美国Intel公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如8031,8051,8751等,其中8051是最早最典型的产品,该系列其他单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机。MCS-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能及特点如下:,3,(1)、8位CPU。 (2)、4KB 程序存储器(ROM)。 (3)、128B的数据存储器(RAM)。 (4)、32条I/O口线。 (5)、111条指令,大部分为单字节指令。 (6)、21个专用寄存器。 (7)、2个可编程定时/计数器。 (8)、5个中断源,2个优先级。 (9)、一个全双工串行通信口。 (10)、外部数据存储器寻址空间为64Kb。 (11)、外部程序存储器寻址空间为64KB。 (12)、逻辑操作位寻址功能。 (13)、双列直插40PinDIP封装。 (14)、单一+5V电源供电。,4,MCS-51以其典型的结构和完善的它总线、专用寄存器集中管理方式、众多的逻辑位操作功能及面向控制的丰富指令系统,为其他单片机的发展奠定了基础,导致后来的许多厂商在研发产品时多沿用或参考了其体系结构。全球许多大的电气商丰富和发展了MCS-51单片机,像PHILIPS、Dallas、ATMEL等著名的半导体公司都推出了兼容MCS-51的单片机产品。,5,2.1内部结构与引脚,2.1.1内部结构,图2-1 MCS-51系列单片机的内部结构示意图,6,MCS-51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线三大总线。它的主要部件如下。 (1)、中央处理器(CPU)中央处理器是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入/输出功能等操作。 (2)、数据存储器(RAM)8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据。所以,用户能使用的的RAM只有128个,可存放读写的数据、运算的中间结果或用户定义的字型表。,7,(3)、程序存储器(ROM)8051共有4096个(4KB)8位掩膜ROM,用于存放用户程序、原始数据或表格。 (4)、定时/计数器(T/C)8051有两个16位的可编程定时/计数器,以实现定时或计数,产生中断用于控制程序转向。 (5)、并行输入输出口(I/O)8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 (6)、全双工串行口(UART)8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。,8,(7)、中断系统8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 (8)、时钟电路8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构;另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。图2-1给出了MCS-51系列单片机的内部结构示意图。,9,2.1.2 CPU部件及特殊功能寄存器,图2-1给出的8位MCS-51单片机CPU内部有数术逻辑单元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序状态字PSW(8位)、程序计数器PC(有时也称为指令指针,即IP,16位)、地址寄存器AR(16位)、数据寄存器DR(8位)、指令寄存器IR(8位)、指令译码器ID、控制器等部件组成 。,10,(1)、运算器(ALU)的主要功能 算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和单字节数据进行操作。 加、减、乘、除、加1、减1、比较等算术运算。 与、或、异或、求补、循环等逻辑运算。 位处理功能(即布尔处理器)。由于ALU内部没有寄存器,参加运算的操作数必须放在累加器A中。累加器A也用于存放运算结果。,11,(2)、程序计数器PCPC的作用是用来存放将要执行的指令地址,共16位,可对64KB ROM直接寻址。PC低8位经P0口输出,高8位经P2口输出。也就是说,程序执行到什么地方,程序计数器PC就指到哪里。由于用户程序是存放在内部的ROM中,执行程序就要从ROM中一个个字节的读出来,然后到CPU中去执行,在ROM中具体执行的指令就要由程序计数器PC来指定。程序计数器PC具有自动加1的功能,即从存储器中读出一个字节的指令码后,PC自动加1(指向下一个存储单元)。,12,(3)、指令寄存器IR指令寄存器的作用是用来存放即将执行的指令代码。CPU指令的执行过程可以被简单地描述为,由程序存储器(ROM)中读取指令代码送入到指令寄存器,经译码器译码后再由定时与控制电路发出相应的控制信号,从而完成指令的功能。 (4)、指令译码器ID用于对送入指令寄存器中的指令进行译码,所谓译码就是把指令转变成执行此指令所需要的电信号。当指令送入译码器后,由译码器对该指令进行译码,根据译码器输出的信号,CPU控制电路定时地产生执行该指令所需的各种控制信号,使单片机正确的执行程序所需要的各种操作。,13,(5)、地址寄存器AR(16位)AR的作用是用来存放将要寻址的外部存储器单元的地址信息,指令码所在存储单元的地址编码由程序计数器PC产生,而指令中操作数所在的存储单元地址码由指令的操作数给定。地址寄存器是通过地址总线AB与外部存储器相连的。 (6)、数据寄存器DR用于存放写入外部存储器或I/O端口的数据信息。数据寄存器与外部数据总线DB直接相连,并对输出数据具有锁存功能。 (7)、程序状态字PSW用于记录运算过程中的状态,如是否溢出、进位等。 (8)、时序部件由时钟电路和脉冲分配器组成,用于产生微操作控制部件所需的定时脉冲信号。,14,从图2-1中可以看出,在51单片机内部有一个CPU用于运算、控制;有四个并行I/O口(P0、P1、P2、P3)和有ROM,用来存放程序;RAM则用来存放中间结果;此外还有定时/计数器、串行I/O口、中断系统以及一个内部的时钟电路。对图2-1进行进一步分析可知,对并行I/O口的读写只要将数据送入到相应I/O口的锁存器就可以了。对于定时/计数器、串行I/O口等。在单片机中有一些专门的存储单元来控制这些器件,被称之为特殊功能寄存器(SFR)。在8051单片机中,共有21个特殊功能寄存器,它们被离散地分布在内部RAM的80HFFH地址中,这些寄存器的功能已作了专门的规定,用户不能修改其结构。表2-1给出了这些寄存器的名称、符号和地址分配。,15,表2-1 特殊功能寄存器的名称、符号和地址分配表,16,下面对表2-1中的几个常用SFR进行介绍。 (1)、累加器AA是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除运算的指令和运算结果都存放于累加器A或AB寄存器(累加器A和寄存器B)中。大部分的数据操作都会通过累加器A进行。它形同于一个交通要道,在比较复杂的程序运算中,累加器因此成了制约软件效率的“瓶颈”, 可以通过提高单片机软件效率的办法,解决累加器的“交通堵塞”问题。 (2)、寄存器B在乘除法指令中,乘法指令中的两个操作数分别取自累加器A和寄存器B,其结果存放于AB寄存器对中。除法指令中,被除数取自累加器A,除数取自寄存器B,结果商存放于累加器A,余数存放于寄存器B中。,17,(3)、程序状态字PSW程序状态字PSW(Program Status Word)是一个很重要的8位寄存器,用于存放程序运行的很多状态信息。这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置。程序状态字寄存器的各位定义如表2-2所示,其中PSW.1是保留位,未使用。 下面逐一介绍各位的用途: CY 进位标志位。8051中的运算器是一种8位的运算器,只能表示0255,加法运算中的两数之和可能会超过255,这样最高位就会丢失,从而造成运算的错误。如果将最高位存入CY,这样就解决了运算错误的问题。有进、借位,CY1;无进、借位,CY0,18,AC 辅助进位标志位。当进行加、减运算出现低4位向高4位进位或借位时,AC置位,否则被清零。AC辅助进位位也常用于十进制调整。 F0 用户标志位。由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0 工作寄存器组选择位。其相关内容将在后面存储器组织中进行介绍。 OV 溢出标志。带符号加减运算中,超出了累加器A所能表示的符号数有效范围(128127)时,即产生溢出,OV=1,表明运算运算结果错误。如果OV=0,表明运算结果正确。执行加法指令ADD时,当位6向位7进位,而位7不向C进位时,OV=1;或者位6不向位7进位,而位7向C进位时,同样OV=1。乘法指令,乘积超过255时,OV=1,乘积在AB寄存器对中。若OV=0,则说明乘积没有超过255,乘积只在累加器A中。除法指令,OV=1,表示除数为0,运算不被执行;否则,OV=0。,19,P 奇偶校验位。它用来表示ALU运算结果中二进制数位“1”个数的奇偶性。若为奇数,则P=1;否则为0。 运算结果有奇数个1,P1;运算结果有偶数个1,P0。例,某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。 (4)、I/O口专用寄存器(P0、P1、P2、P3)I/O口寄存器P0、P1、P2和P3分别是MCS-51单片机的四组I/O口锁存器。MCS-51单片机并没有专门的I/O口操作指令,而是把I/O口也当作一般的寄存器来使用,数据传送都统一使用MOV指令进行,这样的好处是,四组I/O口可以当作寄存器以直接寻址方式参与其它操作。,20,(5)、程序计数器PC(program Counter)PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64KB。PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按要求去执行。 (6)、数据指针(DPTR)数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器(即高位字节寄存器DPHR和低位字节寄存器DPLR)来使用。DPTR主要是用来保存16位地址,当对64KB的外部数据存储器寻址时,可作为间址寄存器使用。在访问程序存储器时,DPTR可用来作基址寄存器,采用“基址+变址寻址”方式访问程序存储器,常用于读取程序存储器内的表格数据。,21,(7)、堆栈指针SP(Stack Pointer)堆栈是一种数据结构,堆栈指针SP(Stack Pointer)是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置。系统复位后,SP的初始值为07H,实际上堆栈是从08H开始的。从RAM的结构分布可知,08H1FH隶属13工作寄存器区(见图2-5所示),若编程时需要用到这些数据单元,必须对堆栈指针SP进行初始化。原则上堆栈设在任何一个区域均可,但一般设在30H7FH较为适宜。 数据的写入堆栈称为入栈,从堆栈中取出数据称为出栈。堆栈的最主要特征是“后进先出”,即最先入栈的数据放在堆栈的最底部,而最后入栈的数据放在栈的顶部,因此,最后入栈的数据出栈时则是最先的。这和往一个箱子里放书本一样,需将最先放入箱子底部的书取出,必须先取走最上层的书籍。,22,图2-2 堆栈操作示意图,23,图2-2给出了一个堆栈操作例子的示意图,图2-2(a)中的栈底已存放数据38,其上是栈顶,存放数据24,当前栈指针SP指向栈顶,地址为40H,此时假设有数据78要被压入堆栈;图2-2(b)为数据78已被压入栈中,在该数据进栈之前,(SP)1的值必须先赋予SP,这时栈指针SP为41H,假如数据78准备出栈;图2-2(c)给出了数据78出栈后的示意图,注意这时的顺序是数据78先被读出,然后(SP)1的值才赋给SP,SP为40H。堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据保存起来,否则返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何。所以,在转入执行其它子程序前,先将需要保存的数据压入堆栈中保存,以备返回时,再复原当时的数据,供主程序继续执行。,24,转入中断服务程序或子程序时,需要保存的数据可能有若干个,都需要一一地保存。如果微处理器进行多重子程序或中断服务程序嵌套,那么需保存的数据就更多,这要求堆栈还要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。MCS-51的堆栈是在RAM中开辟的,即堆栈要占据一定的RAM存储单元。同时,MCS-51的堆栈可以由用户设置,SP的初始值不同,堆栈的位置则不一定;不同的设计人员,使用的堆栈区不同;不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,SP就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间,CPU都是根据SP指示的地址与相应的RAM存储单元交换数据。,25,堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给PC,以保证程序从断点处继续执行。这种方式是不需要编程人员干预的,在C51的程序编译时,即采用这种方法。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操。这种方式只有两条指令:进栈为PUSH指令,在中断服务程序或子程序调用时作为现场保护;出栈操作POP指令,用于子程序完成时。为主程序恢复现场,汇编程序设计中必须采用这种方式。 (8)、定时/计数器 定时器方式寄存器:TMOD。 定时器控制寄存器:TCON。 计数寄存器:TH0、TL0、TH1、TL1,可用于设定计数初值。 (9)、串行数据缓冲器串行数据缓冲器SBUF用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行的。,26,2.1.3 引脚功能,图2-3 MCS-51单片机引脚配置和兼容机STC单片机实物图,27,MCS-51单片机及其兼容机中一般都采用40Pin封装的双列直接DIP结构,图2-3所示为MCS-51单片机的引脚配置和兼容机之一(中国台湾宏晶公司生产的STC单片机)的实物图。MCS-51单片机的40个引脚中,有正电源和地线(分别为一根,即分别为一个口(也称端口或脚),外置石英振荡器的时钟线两根,即两个口,4组8位共32个I/O口,中断口、串口、计数器输入和读写控制线与P3口复用。以下对这些引脚的功能加以介绍。,28,Pin20 接地脚GND。 Pin40 正电源脚Vcc。正常工作或对片内EPROM烧写程序时,接+5V电源。 Pin19 时钟XTAL1脚,片内振荡电路的输入端。 Pin18 时钟XTAL2脚,片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(212MHz)和振荡电容,振荡电容的值一般取1030pF;另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。 输入输出(I/O)引脚 Pin39Pin32为P00P07输入输出脚,Pin1Pin8为P10P17输入输出脚,Pin21Pin28为P20P27输入输出脚,Pin10Pin17为P30P37输入输出脚,29,Pin9 RESET复位信号复用脚。当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统初始复位。初始化后,程序计数器PC指向0000H,P0P3输出口全部为高电平,堆栈指针写入07H,其他专用寄存器被清0。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。8051的复位方式既可以是自动复位,也可以是手动复位,应根据不同的应用场合进行选择设计。 Pin30 ALE(地址锁存),当访问外部程序器时,ALE脚的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE脚将输出一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。,30,Pin29 当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。 Pin31 程序存储器的内外部选通脚,8051和8751单片机,内置有4KB的程序存储器,当EA为高电平并且程序地址小于4KB时,读取内部程序存储器指令数据;而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令数据。显然,对内部无程序存储器的8031,EA脚必须接地。,31,2.2 并行I/O(输入/输出)接口,2.2.1输入功能,I/O 口作为输入口时有两种工作方式,即所谓的读端口(读锁存器)与读引脚。读端口实际上并不从外部直接读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器,比如取反,置位,清零等指令。而读引脚方式才是真正地把外部数据读入到内部总线。以图2-4(a)为例,图中上下两个三角形分别表示读端口和读引脚的输入缓冲器,CPU根据不同的指令由硬件自动发出“读端口”或“读引脚”信号,以完成不同的操作。,32,图2-4 MCS-51单片机P0、P1、P2和P3 口的内部结构图,33,值得一提的是,读引脚方式可以直接从端口引脚上读入信息,前提是CPU首先必须使欲读端口引脚所对应的锁存器置位(Q端为1, 为0),以便使驱动器中晶闸管T2截止,然后打开输入三态缓冲器2,使相应端口引脚线上的信号输入到MCS-51内部数据总线。由于在读引脚时必须连续使用两条指令(对端口置1和读指令),因此附加了一个准备动作,所以这类I/O 口被称为“准双向”口,MCS-51 的P0,P1,P2,P3 口作为输入/输出口时都是“准双向”口。从图2-4中可以看出,这四个端口还有一个差别,除了P1 口外,P0和P2还具有地址/数据复用功能,P3口都还有第二功能,这些第二功能分别起不同的作用,下面将具体讨论这个问题。,34,2.2.2输出功能及负载配置,(1)、P0口 由图2-4(a)给出的P0口内部结构图可以看到,其内部有一个2选1的选择器,受内部信号的控制。图中的位置正处在I/O口工作方式,此时相当于一个“准双向口”。输入时须先将口置“1”,每根口线可以独立定义为输入或输出口,但是须在口线上加上拉电阻。如果将开关扳至另一个方向,口线即作为地址/数据复用总线用,此时不能逐位定义为输入/输出口。这种方式下,作数据总线用时,输入8位数据;作为地址总线用时,则输出8位地址。值的一提的是,当P0口作为地址/数据总线用之后,就不能作I/O口使用了。,35,(2)、P1口图2-4(b)为P1口一个位的内部结构,P1口只能作为I/O 口使用,它的内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻。这一点P1、P2、P3 口都一样,读者在进行使用时一定要加以注意。 (3)、P2口由图2-4(c)可以看出,P2口作为I/O 口用时,与P0口一样,当内部开关向扳至另一个方向作为地址输出口时,可以输出程序存储器或外部数据存储器的高8位地址,并与P0口输出的低8位地址一起构成16 位的地址线,从而可以分别寻址64K的程序存储器或外部数据存储器。同样,地址线是8位一起自动输出的,不能像I/O口那样逐位定义。,36,(4)、P3口P3口的电路如图2-4(d)所示,P3口也是“准双向口”,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。第二功能信号有输入输出两种情况,下面分别加以介绍。P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。P3口的第二功能各引脚定义如表2-3所示。,37,P3口的第二功能各管脚定义如表2-3所示:,表2-3 P3口的第二功能引脚定义,38,在图2-4(d)中,对于第二功能为输出引脚,作为I/O口使用时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出口数据输出通路畅通无阻。而当作第二功能口使用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口上的输入通路增设了一个缓冲器3,输入的第二功能信号即从这个缓冲器3的输出端取得。而作为I/O口输入端时,取自三态缓冲器2的输出端。这样,不管是作为输入口使用还是第二功能信号输入口,输出电路中的端口锁存器输出Q和第二功能输出信号线均应置“1”。 CPU区分单片机的引脚是否有第二功能其实很简单,即只要CPU执行到相应的指令,就自动转成了第二功能。这一点很重要,在后面的项目章节中会有具体的应用,希望读者能够认真加以体会。,39,2.3 存储器配置方法,MCS-51单片机的存储器组织结构(见图2-5)可以分为四个不同的存储空间,分别是: 片内4KB程序存储器(ROM),地址为0000H0FFFH。 片外64KB程序存储器(ROM),地址为0000HFFFFH。 64KB外部数据存储器(外RAM),地址为0000HFFFFH。 256B内部数据存储器(内RAM)(包括特殊功能寄存器),地址为00HFFH。,40,图2-5 MCS-51单片机的存储器组织结构图,41,2.3.1 程序存储器配置,一个微处理器能够准确地执行某种任务,除了强大的硬件外,还需要运行软件。这种软件完全是人们预先编写的,设计人员编写的程序就存放在微处理器的程序存储器中,称为只读程序存储器(ROM)。对于程序来说,相当于给微处理器提供处理问题的一系列命令。程序和数据一样,都是由机器码组成的代码串,只是程序代码存放于程序存储器中。由图2-5所示的MCS-51单片机的存储器组织结构图可以看出,MCS-51具有64KB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无ROM的8031单片机,它的程序存储器必须外接,容量为64KB,此时单片机的EA端必须接地,强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,EA端则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。,42,CS-51单片机片内有4KB的程序存储单元,其地址为0000H0FFFH,单片机启动复位后,程序计数器PC的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,在使用中应加以注意。其中一组特殊单元是0000H0002H,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。另一组特殊单元是0003H002AH,这40个单元各有用途,它们被均匀地分为五段,定义如下: 0003H000AH 外部中断0中断地址区。 000BH0012H 定时/计数器0中断地址区。 0013H001AH 外部中断1中断地址区。 001BH0022H 定时/计数器1中断地址区。 0023H002AH 串行中断地址区。,43,可见,以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此,以上地址单元不能用于存放其他内容,只能存放中断服务程序。通常情况下,每段的8个地址单元是不能储存完整中断服务程序的。解决这个问题的办法就是在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。,44,读ROM是以程序计数器PC作为16位地址指针,依次读ROM中的指令和数据,每读一个字节,PC+1PC,由CPU自动完成的。当读取外ROM地址时,CPU从PC中取出当前ROM的16位地址,分别由P0口(低8位)和P2口(高8位)同时输出。ALE信号有效时由地址锁存器锁存低8位地址信号、地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到外部ROM 16位地址输入端;当PSEN信号有效时,外部ROM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。,45,2.3.2 数据存储器配置,数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。MCS-51系列单片机及其兼容机的片内数据存储器除RAM块外,还有特殊功能寄存器(SFR)块,前者占128B,其编址为00H7FH;后者也占128B,其编址为80HFFH,两者连续而不重叠。片内数据存储器的容量很小,常需扩展片外数据存储器。MCS-51系列单片机有一个数据指针寄存器,可用于寻址程序存储器或数据存储器单元,它有16位,寻址范围可达64KB。故,片外数据存储器的容量可大到与程序存储器一样,其编址自0000H开始,最大可至FFFFH。 这样,可把数据存储器分为片外数据存储器、片内数据存储器和特殊功能存储器,特殊功能存储器已在2.1.2节进行过介绍,这里不再赘述。,46,(1)、外部数据存储器(外RAM)地址范围:0000HFFFFH ,共64KB。外部RAM的16位地址分别由P0口(低8位)和P2口(高8位)同时输出。ALE信号有效时由地址锁存器锁存低8位地址信号,地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到外部RAM 16位地址输入端;当RD信号有效时,外部RAM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。 (2)、内部数据存储器(内RAM) 从广义上讲,MCS-51内RAM(128B)和特殊功能寄存器(128B)均属于片内RAM空间,为加以区别,内RAM通常指00H7FH的低128B空间。 MCS-51内RAM又可分成三个物理空间,即工作寄存器区、位寻址区和数据缓冲区,图2-6所示为它的内部存储区的分布情况。,47,图2-6 MCS-51单片机的内部存储区的分布,48,1)工作寄存器区 工作寄存器区专用于存储工作寄存器操作的指令,读写速度比一般内RAM要快,指令字节比一般直接寻址指令要短,还具有间接寻址功能,能给编程和应用带来方便。工作寄存器区分为4个区:0区、1区、2区、3区。每区有8个寄存器,即R0R7,寄存器名称相同。在程序中使用的当前工作的寄存器区只能有一个,区分和使用它们是由前文介绍的程序状态字寄存器(PSW)中第3和第4位(RS0和RS1)来设置的,CPU只要定义RS0和RS1的值,就可选中这四组工作寄存器区中的一个。表2-4 给出了程序状态字寄存器(PSW)和工作寄存器对应关系。,49,表2-4 程序状态字寄存器和工作寄存器对应关系,2)位寻址区位寻址区共16B、128位,范围从20H2FH。每一位均有一个位地址,可进行位寻址、位操作,即按位地址对该位进行置1、清0、求反或判转。 表2-5给出了位寻址区的位地址映象表。,50,表2-5 位寻址区的位地址映象表,51,位寻址区主要是用来存放各种标志位信息和位数据的,使用时应注意位地址与字节地址编址相同。读者初学期间容易混淆,其实区分它们之间的方法很简单,即位操作指令中的地址是位地址,字节操作指令中的地址是字节地址。 3)数据缓冲区 数据缓冲区也称为用户RAM区,是内RAM中30H7FH的地址区域,用于存放各种数据和运算的中间结果,起到数据缓冲的作用。,52,2.4 时钟电路与CPU时序,2.4.1 时钟电路,单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲由单片机控制器中的时序电路发出。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地按时序进行工作。MCS-51单片机内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路。MCS-51的时钟产生方式有两种,即内部时针方式和外部时钟方式。,53,图2-7 MCS-51单片机时钟电路接线方法,54,(1)、内

温馨提示

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

评论

0/150

提交评论