• 注册
    • 查看作者
    • 二、单片机基础入门——(二)89C52单片机内部存储器配置

      2.2.2  89C52单片机内部存储器配置

      所有的ATMEL Flash单片机都将程序存储器和数据存储器分为不同的存储

      空间。89系列单片机的典型存储器的结构如图2-2所示。

      程序和数据存储器分为不同的逻辑空间,使得可用8位地址来访问数据存储器。这样可提高8位CPU的存储和处理速度。尽管如此,也可通过数据指针(DPTR)寄存器来产生16位的数据存储器地址。

      程序存储器只可读不可写,用于存放编好的程序和表格常数。89系列单片机可寻址的程序存储器总空间为64KB。外部程序存储器的读选通脉冲为PSEN(程序存储允许信号)。

       

      图 2-2  89系列单片机内部存储器结构图

       

      数据存储器在物理上和逻辑上都分为两个地址空间:一个内部和一个外部数据存储器空间。外部数据存储器的寻址空间可达64KB。访问外部数据存储器时,CPU发出读和写的信号——RD和WR。

      将RD和PSEN两个信号加到一个与门的输入端,然后用与门的输出作为外部程序/数据存储器的读选通脉冲。这样就可将外部程序存储器空间和外部数据存储器空间合并在一起。

      ①  程序存储器

      89系列单片机可寻址的内部和外部程序存储器总空间为64KB。每个外部程序和数据存储器的可寻址范围高达64KB。它没有采用程序存储器分区的方法,64KB的地址空间是统一的。

      EA引脚接低电平时,单片机就从外部程序存储器中取指。

      对于AT89S52,EA引脚接高电平时,程序直接从单片机内部存储器中的0000H到1FFFH单元执行,2000H到FFFFH单元到外部存储器中执行。

      程序存储器中有几个单元专门用来存放特定的程序。这几个单元的配置情况如图2- 3所示。

       

      图2-3  程序存储器的的中断入口配置

       

      由图2- 3可知,0000H~0002H单元用于初始化程序。单片机复位后,CPU总是从0000H单元开始执行程序。另外,每个中断在程序存储器中都分配有一个固定的入口地址。中断响应后,CPU便跳到该单元,在这里开始执行中断服务子程序。例如,外部中断0的入口地址被放在0003H单元,如果使用外部中断0,则它的中断服务子程序必须从0003H单元开始。如果中断没有使用,那么它的服务单元也可作一般用途的程序存储器用。

      每个中断入口地址的间隔为8个单元;外部中断0的入口地址为0003H;定时器0的入口地址为000BH;外部中断1的入口地址为0013H;定时器1的入口地址为001BH;以此类推。如果一个中断服务子程序足够短的话,则可全部存放在这8个单元中。对较长的服务子程序,则可利用一条跳转指令跳过后续的中断入口地址。

      程序存储器最低端的地址可以在片内Flash中,或在外部存储器中。将外部存取(EA)引脚接Vcc或接地,就可进行这种选择。例如,在带有4KB片内Flash的AT89C51中,如果把EA引脚连到Vcc,当地址为0000H~0FFFH时,则访问内部Flash;当地址为1000H~FFFFH时,则访问外部程序存储器。在AT89C52(8KB Flash)中,当EA端保持高电平时,如果地址不超过1FFFH,则访问内部Flash;地址超过1FFFH(即为2000H~FFFFH)时,将自动转向外部程序存储器。如果EA端接地,则只访问外部程序存储器,不管是否有内部Flash存储器。

      外部程序存储器读选通信号PSEN用于读取所以的外部程序;读取内部程序时,不产生PSEN信号。

      执行外部程序是的硬件连接方法如图2-4所示。

       

      图2-4  访问外部程序存储器的连接

       

      在访问外部程序存储器时,16条I/O线(P0和P2)作为总线使用。P0端口作为地址/数据总线使用。它先输出16位地址的低8位PCL,然后进入悬浮状态,等待程序存储器送出的指令字节。当有效地址PCL出现在P0总线上时,ALE(允许地址锁存)把这个地址锁存到地址锁存器中。同时,P2端口输出地址的高8外PCH。然后PSEN选通外部程序存储器,使指令送到P0总线上,由CPU取入。

      即使所用的程序存储器的实际空间可能小于64KB,程序存储器的地址总是为16位的。在访问外部程序存储器时,要用到两个8位端口——P0和P2来产生程序存储器的地址。

      ②  数据存储器

      数据存储器在物理上逻辑上都分为两个地址空间:一个为内部数据存储器空间;一个为外部数据存储器空间。

       

      图2-5是访问8KB外部RAM时的硬件连接图。在这种情况下,CPU执行内部Flash中的指令(EA接Vcc)。P0端口作用RAM的地址/数据总线,P2端口中的3位也作为RAM的页地址。访问外部RAM期间,CPU根据需要发送RD和WR信号。

       

      2-5  访问外部数据存储器的连接

       

      外部数据存储器的寻址空间可达64KB。外部数据存储器的地址可以是8位或16位的。使用8位地址时,要连同另外一条或几条I/O线作为RAM的页地址,如图2-5所示。这时P2的部分引线可作为为通用的I/O线。若采用16位地址,则由P2端口传送高8位地址。

      内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节。高于7FH的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,在图2-6中,虽然高128字节区与专用寄存器,即特殊功能寄存器(SFR)区的地址是重合的(80H~FFH),但实际上它们是分开的。究竟访问哪一区,是通过不同的寻址方式加以区分的。访问高128字节区时,采用间接寻址方式;访问SFR区时,采用直接寻址方式;访问低128字节区时,两种寻址方式都可采用。

      2-6  内部数据存储器的结构

       

      低128字节区的分配情况如图2-7所示。最低32个单元(00H~1FH)是4个通用工

        作寄存器组。每个寄存器组含有8个8为寄存器,编号为R0~R7。专用寄存器PSW(程序 状态字)中有2位(PS0,RS1)用来确定采用哪一个工作寄存器组。这种结构能够更有效

      地使用指令空间,因为寄存器指令比直接寻址指令更短。

       

      图2-7  内部RAM的低128字节区

      工作寄存器组上面的16个单元(20H~2FH)构成了布尔处理机的存储器空间。这16个单元的128位各自都有专门的位地址,如图2.8所示,它们可以被直接寻址,这些位地址是00H~7FH。在89系列单片机的指令系统中,还包括了许多位操作指令,这些位操作指令可直接对这128位寻址。

      低128字节区中的所以单元都既可通过直接寻址方式访问,又可通过间接寻址方式访问,又可通过间接寻址方式访问。而高128字节区则只能通过间接寻址方式来访问。仅在带有256字节RAM的单片机中才有高128字节区。

       

      图2-8 内部RAM中可寻址位的地址

       

      专用寄存器即特殊功能寄存器(SFR)区的分配情况如图2-9所示。这些专用寄存器包括端口锁存器(P0/P1/P2/P3)、程序状态字(PSW)、定时/计数器方式控制(TMOD)、定时/计数器控制(TCON)、定时/计数器(THx/TLx)、累加器(ACC/B)、栈指针(SP),以及其他控制寄存器等等。专用寄存器只能通过直接寻址方式来访问。通常,在所有ATMEL单片机的专用寄存器(SFR)区中,寄存器的分配情况是相同的。

       

      图2-9   特殊功能寄存器(SFR)区的分配及其复位值

       

      专用寄存器区中有一些单元是即可字节寻址又可位寻址的(见图2-9)。凡是地址以“0”和“8”结尾(能被8整除)的单元都是可位寻地址的,地址的范围是80H~FFH。


       

      天津
    • 0
    • 0
    • 0
    • 38
    • 单栏布局 侧栏位置: