第二节 存储器结构
MCS-51单片机的存储器结构与常见的微型计算机的配置方式不同,它把程序存储器与数据存储器分开编址,各有自己的寻址方式、控制信号和功能。MCS-51单片机的存储器结构如图2-6所示。
图2-6 MCS-51单片机的存储器结构
一、程序存储器
MCS-51的程序存储器空间为64KB,其地址指针为16位的程序计数器PC,程序存储器如图2-6(a)所示。低4KB的程序存储器(某些单片机为8KB或16KB)可以在单片机的内部也可以在单片机的外部,这是由输入到引脚EA的电平所确定的。
对于内部有4KB程序存储器的单片机(如8051或8751),若EA接VCC(+5V),则
程序计数器PC的值在0~0FFFH之间时,CPU取指令时访问内部的程序存储器;PC值大于0FFFH时,则访问外部的程序存储器。如果EA接VSS(地),则内部的程序存储器被忽略,CPU总是从外部的程序存储器中取指令。MCS-51的引脚PSEN输出外部程序存储器的读选通信号,仅当CPU访问外部程序存储器时,PSEN才有效。
对于内部没有程序存储器的单片机(如8031)必须在外部接程序存储器,引脚EA必须接地。
二、内部数据存储器RAM
MCS-51单片机内部RAM的空间为256B,但实际提供给用户使用的RAM容量,各个不同型号的单片机是不同的,有的为128B(如8051),有的为256B(如8032)。内部RAM中不同的地址区域从功能和用途方面来分,可以划分为如图2-6(b)所示的三个区域:工作寄存器区、位寻址区、堆栈和数据缓冲器区。
内部RAM的00H~1FH为四组工作寄存器,每个区有八个工作寄存器R0~R7。寄存器和RAM单元地址对应关系如表2-2所示。
表2-2
工作寄存器和RAM单元地址对应关系
四个寄存器组中的每一组都可被选为CPU的工作寄存器,这是通过程序状态字寄存
器PSW中的PSW.3(RS0)和PSW.4(RS1)两位的状态来选择确定的,见表2-3。通
过程序改变RS1、RS0的状态,就可更换工作寄存器组,这对提高CPU的工作效率和响应中断的速度是很有利的。
表2-3
工作寄存器区选择
内部RAM中的20H~2FH单元除可作为一般的字节寻址单元使用外,这16个单元共128位中的每一位又可单独视作一个软件触发器,用于存放各种程序标志、位控制变量,具有位寻址功能,其位地址范围为00H~7FH。
字节地址为30H~7FH(或30H~0FFH)的这部分存储区域可作为8位数据缓冲区使用。一般用户把堆栈就设置在这部分区域中。
内部RAM中除了作为工作寄存器、位标志和堆栈区以外的单元都可以作为数据缓冲器使用,存放输入的数据或运算结果。
三、特殊功能寄存器SFR
MCS-51内部的I/O口锁存器以及定时器、串行口、中断等各种控制和状态寄存器都称为特殊功能寄存器,它们离散地分布在80H~0FFH的特殊功能寄存器地址空间。在这空间中有些单元是空着的,这些单元是为MCS-51的新型单片机保留的。不同型号的单片机内部I/O功能不同,实际存在的特殊功能寄存器数量差别较大。MCS-51最基本的特殊功能寄存器列于表2-4中。其中带*的是8052所增加的特殊功能寄存器。
表2-4
特殊功能寄存器地址映象
这些特殊功能寄存器在以后的I/O口、定时器、串行口和中断等章节中作详细的讨论。
四、位存储器
位存储器空间由两部分组成:一部分是在内部RAM中字节地址为20H~2FH的128个位,这些位编址为00H~7FH,如表2-5所示;另一部分在特殊功能寄存器中,其中地址码能被8整除的特殊功能寄存器,可以按位寻址,如表2-6所示。
表2-5
RAM位寻址区地址映象
表2-6
特殊功能寄存器位地址映象
续表
五、外部数据存储器和I/O口
MCS-51的外部RAM存储器和输入/输出端口是统一编址的,都在同一个64KB外部数据存储器空间内,如图2-6(c)所示,CPU对它们具有相同操作功能。