单片机原理实用教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 8051单片机的存储器结构

图1.5所示为8051系列单片机的存储器结构图。在物理上它有4个存储器空间:片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器。在访问这几个不同的存储器时应采用不同形式的指令。

8051系列单片机的程序存储器ROM地址空间为64 KB,其中带片内ROM型单片机具有4 KB的片内ROM。CPU的控制器专门提供一个控制信号来区分片内ROM和片外ROM的公用地址区:当接高电平时,单片机从片内ROM的4 KB存储器区取指令,当指令地址超过0FFFH后,就自动地转向片外ROM取指令;当接低电平时,所有的取指操作均对片外程序存储器进行,这时片外程序存储器的地址范围为0000H~0FFFFH。

目前一些新型的8051单片机已经可以将64 KB的ROM存储器全部集成到芯片内部,使用时将接高电平,可以减少外部辐射干扰。对于无ROM型的单片机,端必须接地。程序存储器中有些单元是保留给系统使用的:0000H~0002H单元是所有执行程序的入口地址,复位后CPU总是从0000H单元开始执行指令;0003H~002AH单元均匀地分为五段,用于5个中断服务程序的入口。

图1.5 8051系列单片机存储器结构图

8051系列单片机的片外数据存储器RAM也有64 KB的寻址区,在地址上是与ROM重叠的。8051单片机通过不同的信号来选通ROM或RAM。当从外部ROM中取指令时,用选通信号,而从外部RAM中读/写数据时则采用读/写信号来选通,因此不会因地址重叠而发生混乱。在某些特殊应用场合,如单片机的开发系统等,需要执行存放在数据存储器RAM内的程序,这时可采用将信号作逻辑与的方法,将8051单片机的外部程序存储器和数据存储器合并为一个64 KB的存储器空间,信号逻辑与的结果产生一个低电平有效的读选通信号,用于合并的存储器空间寻址。

8051 系列单片机的片内数据存储器RAM有256字节,其中00H~7FH地址空间是直接寻址区,该区域内00H~1FH地址为工作寄存器区,安排了4组工作寄存器,每组占用8个地址单元,记为R0~R7,在某一时刻,CPU只能使用其中任意一组工作寄存器,究竟选择哪一组工作寄存器由程序状态字寄存器PSW中RS0和RS1的状态决定,见表1.1。片内RAM的20H~2FH地址单元为位寻址区,共16字节,每个字节的每一位都规定了位地址,该区域内每个地址单元除了可以进行字节操作之外,还可进行位操作,图1.6所示为片内RAM的位地址分配。

图1.6 8051单片机片内RAM的位地址分配

片内RAM的80H~FFH地址空间是特殊功能寄存器(SFR)区,8051子系列单片机只在该区域内安排了21个特殊功能寄存器,8052子系列单片机则在该区域内安排了26个特殊功能寄器,同时扩展了128字节的间接寻址片内RAM,地址也为80H~FFH,与SFR区地址重叠,但在使用时,可通过指令加以区别。表1.2所示为8051单片机特殊功能寄存器地址及符号表,表中带*号的为可位寻址的特殊功能寄存器。

内部RAM中的各个单元,都可以通过其地址来寻找,而对于工作寄存器,一般使用R0~R7表示,对于特殊功能寄存器,也是直接用其符号名较为方便。需要指出的是,8051单片机的堆栈必须使用片内RAM,而片内RAM空间十分有限,因此要仔细安排堆栈指针SP的值,以保证不会发生堆栈溢出而导致系统崩溃。

表1.2 8051单片机特殊功能寄存器地址及符号表