1.8051单片机的存储空间配置。 8051单片机存储器分为四个存储空间,分别为片内ROM(4KB)、片外ROM(64KB)、片内RAM(256B)、片外RAM(64KB),其存储空间配置如图3-4所示。 由于片内与片外ROM统一编址,因此,从用户使用的角度看,8051单片机的存储器地址空间有三个:片内外统一编址的64K字节程序存储器地址空间、片内256字节的数据存储器地址空间和片外64K字节的数据存储器地址空间。 访问不同的逻辑空间时,应使用不同类型的指令。片内数据存储器使用MOV指令访问,片外数据存储器使用MOWX指令访问,而片内、外程序存储器使用MOVC指令访问。
2.程序存储器(ROM)。
(1)程序存储器ROM的访问方式。
片内、片外程序存储器均使用MOVC指令访问,程序计数器(PC)产生访问ROM的地址码。如果EA=1,访问从片内ROM开始,即程序从片内ROM开始执行,当程序计数器PC的地址码超出片内ROM的容量(>0FFF)时,则自动转向访问片外ROM;如果EA=0则只能访问片外ROM。
(2)程序存储器(ROM)的访问地址。
程序计数器PC为16位,因此可访问64KB的地址空间。当访问了ROM的一个存储单元(执行了一条指令后),CPU使PC+1,因此,读取ROM中的程序是按各存储单元的地址从低到高的顺序进行的。当需要跳转到其他的存储单元读取相应的程序或数据时,通过相应的指令修改PC即可。
(3)程序存储器ROM的空间结构。
64KB的ROM中设有特殊存储区,用户不能按排其他内容。单片机在复位后PC值为0000H,所以0000H是系统的启动地址,所以用户在设计程序时一般会在该存储单元存放条绝对跳转指令,跳转到放主程序的存储区入口地址。其他5个用作中断指令存放的地址区为:
3.数据存储器(RAM数据存储器(RAM)分为内部数据存储和外部数据存储,访问片内RAM用“MOVX”指令,访问片外RAM用“MOVX”指令。RAM用于存放运算的中间结果、过程数据和数据缓冲,数据存储器均可读写,部分单元还可以位寻址。
(1)片内数据存储器。
8051单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间:数据存储器空间(低128单元)和特殊功能寄存器空间(高128单元)。这两个空间是相连的,对用户而言,低128单元才是真正的数据存储器。
1)低128单元RAM(00H~7FH):由工作寄存器区、位寻址区和数据缓冲区组成,如图3-5所示。
工作寄存器区(00H~1FH)占32字节,有4组工作寄存器,每组有8个工作寄存器(RO~R7),共占32个存储单元。R0~R7用来储存数据或中间结果,使用灵活任一时刻CPU只能使用其中的一组寄存器区,由程序状态寄存器(PSW)中RS1、RS0的状态决定当前工作寄存器组。
位寻址区(20H~2FH)占16字节,既可以按字节寻址,作为一般的RAM单元使用,又可以按位寻址。即该区各单元有字节地址,且字节中每位还有位地址。位寻址位操作是指按位地址对该位进行置1、清零、求反或判转等布尔操作。
数据缓冲区(30H~7FH)占80字节,是供用户使用的数据区,用户的大量数据存放在此区域,在实际使用时,常把堆栈开辟在此。
2)高128单元RAM(80H~FFH)。该存储区为具有特殊功能的专用寄存器(SFR)区,8051单片机将CPU中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分布在80H~FFH的范围内。特殊功能寄存器只能通过直接寻址的方式进行访问,其字节地址分配情况见表3-1。
(2)常用特殊功能寄存器简介。
累加器ACC:通常用A表示。它是一个实现各种寻址及运算的寄存器,而不是一个仅做加法的寄存器,在MCS51指令系统中所有算术运算、逻辑运算几乎都要使用它,而对程序存储器和外部数据存储器的访问只能通过它进行。
程序状态字寄存器(PSW):用来表示程序运行的状态,如当前累加器(ACC)中数据的奇偶性(P)、做加减法时的进位与借位(CY)、四个工作区的选择(RS1、RS0)以及辅助进位(AC)和溢出标志位(OV)等。它是编程时需要特别关注的一个寄存器。
通用寄存器B:在做乘除运算时需要用到该寄存器,也是一个具有专用功能的寄存器。
数据指针(DPTR,包括DPL和DPH):DPH为DPTR的高8位,DPL为DPTR的低8位。访问外部数据存储器和程序存储器时,必须以DPTR为数据指针通过ACC进行访问。
堆栈指针SP:进栈时SP加1,出栈时SP减1。
端口锁存器P0、P1、P2、P3:8051单片机有四个双向10口PO、P1、P2、P3,如果需要从指定端口输岀一个数据,只需将数据写入指定端口锁存器即可;如果需要从指定端口输人一个数据,只需先将数据0FFH(全部为1)写入指定端口锁存器,然后再读指定端口即可。如果不先写入0FFH(全部为1),则读入的数据有可能不正确。
(3)片外数据存储器。
片外RAM的读写控制信号是P3口中的WR和RD,是访问外部数据存储器,可以用16位数据存储器地址指针DPTR,用P2口输出地址高8位,用PO口输出地址低8位,用ALE(30脚)输出地址锁存信号。单片机CPU通过产生相应的RD和WR控制信号来控制读写操作。
外部数据存储器的容量最大可扩展到64KB。最常采用的外部数据存储器芯片是静态RAM。