8051单片机存储器结构如图1-10所示。存储器分为4KB片内程序存储器(片内ROM)、64KB片外程序存储器(片外ROM)、256B片内数据存储器(片内RAM)、64KB片外数据存储器(片外RAM)4部分。
图1-10 8051单片机存储器的结构
在8051单片机存储器中,片内ROM用于存放8051单片机控制程序,并可扩展至64KB,地址范围为0000H~0FFFH,与4KB片内ROM地址重叠,使用过程中要用 对其进行区分。对于带片内ROM的8051单片机,当 引脚为高电平时,程序运行时将从片内ROM的0000H地址开始执行,当程序计数器(PC)的值超过0FFFH时,自动转换到片外ROM的1000H~FFFFH地址空间执行。
8051单片机片内RAM空间中,00H~7FH的128B空间是真正的RAM区,可读/写各种数据;片内RAM 80H~FFH的128B空间大部分被专门用于特殊功能寄存器(Special Function Register,SFR),8051单片机在这个空间安排了21个特殊功能寄存器(SFR)。无论是用汇编语言还是用C语言编写单片机程序,都要熟练掌握这些特殊功能寄存器。
STC15系列单片机片内数据存储器(SRAM)及其扩展空间如表1-2所示。
表1-2 STC15系列单片机片内数据存储器(SRAM)及其扩展空间
片内RAM共256B,可分为3个部分:低128B RAM(与8051单片机兼容)、高128B RAM及特殊功能寄存器区(SFR)。其中,低128B数据存储器可直接或间接寻址;高128B RAM与特殊功能寄存器区都使用地址80H~FFH,但在物理上二者是独立的,使用时通过不同的寻址方式加以区分,高128B RAM只能间接寻址,特殊功能寄存器区只可直接寻址。STC15系列单片机存储器结构如图1-11所示。
图1-11 STC15系列单片机存储器的结构
根据表1-2可知,STC15除了集成256B片内RAM外,还集成了3840B扩展RAM,地址范围为0000H~0EFFH,访问扩展片内RAM的方法和8051单片机访问扩展片外RAM的方法相同,但是不影响P0(数据总线和低8位地址总线)、P2(高8位地址总线)、WR/P4.2、RD/P4.4和ALE/P4.5。
对于扩展的片内RAM,是否允许被访问受辅助寄存器AUXR(地址为8EH)中的EXTRAM位控制。EXTRAM位默认为0,表示扩展的片内RAM可以被存取。以STC15W4K32S4单片机为例,访问00H~0EFFH单元(3840B)要使用MOVX @DPTR指令;0F00H及以上单元均指片外RAM,而MOVX @Ri指令只能访问0F00H~0FFFH单元。将EXTRAM位置1时,禁止访问扩展的片内RAM,此时MOVX @DPTR/MOVX @Ri指令的使用与普通8052单片机相同,且访问的均为扩展的片外RAM。STC15W4K32S4单片机扩展片外RAM的应用电路如图1-12所示。
图1-12 STC15W4K32S4单片机扩展片外RAM的应用电路