- 51 系列单片机的数据存储器分片内 RAM 和片外 RAM 两部分。通常片内数据存储器有 128B,对应的地址范围是 00H~7FH;增强型片内数据存储器有 256B,
对应的地址范围是 00H~0FFH。片外数据存储器 RAM 最多可扩展至 64KB,地址范围为0000H~0FFFFH。 - 256B 片内数据存储器空间,可分为两个部分。低 128B RAM 区(00H~7FH)与一
般型单片机的 RAM 区相同,用直接或间接地址方式访问。高 128B RAM 区(80H~0FFH)与特殊功能寄存器 SFR(Special Function Register 80H~0FFH)区的地址重叠。需用不同的访问方式来区分,访问 SFR 采用直接地址方式,访问 RAM 区(80H~0FFH)采用寄存器间接地址方式。 - 片内 RAM 和片外 RAM 的低地址 0000H~007FH 范围是重复的,但这是两个不同的物理空间,用不同的指令访问以区分它们。
(1) 低128字节的区域
①工作寄存器区(00H~1FH)
②可位寻址区(20H~2FH)
③用户RAM区(30H~7FH)
(1)工作寄存器区
工作寄存器区是内部 RAM 区的 00H~1FH 单元,共 32 字节,分为 4 个工作寄存器组。每组 8 个工作寄存器,分别用 R0~R7 标记。由于他们的功能及使用不做预先的规定,因此也称为通用寄存器组。在任一时刻,CPU 只能使用其中的一组工作寄存器,这一组寄存器也称为当前寄存器组。究竟使用那一组,由程序状态字寄存器 PSW(Program Status Word)中的 RS1、RS0 位的状态组合来决定。
(2)位寻址区
片内数据存储器的 20H~2FH 单元、共 16 个字节,既可按字节进行操作,也可以对字节中的每一位进行位操作(共 128 位),因此该区称为位寻址区。位地址为 00H~7FH。
(3)用户 RAM 区。片内数据存储器的 30H~7FH 单元,用来存储用户数据,操作指令丰富,数据处理方便灵活。在应用中通常把堆栈设置在此区域中。
(2)高128字节RAM区
特殊功能寄存器区域,片内数据存储器的高 128 字节单元供专用寄存器使用,它们分布在单元地址为80H~0FFH 的空间中。由于这些寄存器的功能已经作了特殊规定,通常用来存储当前要执行的指令的存储地址、操作数和指令执行后的状态等信息。因此也称为特殊功能寄存器,简称为 SFR 寄存器。访问 SFR 只能使用直接地址方式。其中的 11 个具有位寻址功能,它们的字节地址能够被 8 整除,即字节地址的十六进制数最低位是 0或 8。