本文档详细介绍了51单片机的存储器结构,主要关注其程序存储器和数据存储器的特性。51单片机在物理上由四个存储空间构成,但在逻辑上,用户通常看到的是三个不同的存储空间。
51单片机的片程序存储器(ROM)寻址范围是从0000H到FFFFH,总共64KB。这个空间主要用于存放用户编写的程序和程序运行时所需的常数。当EA引脚置1时,CPU将从片内ROM开始执行程序,如果程序计数器PC的值超过了片内ROM的容量(对于8051来说是4KB,地址范围0000H-0FFFH),程序会自动转移到片外ROM继续执行。在片内ROM的起始地址0000H,系统复位后,程序计数器PC的值为0000H,因此系统从这个地址开始执行程序。需要注意的是,0000H到0002H这三个单元在复位后会被执行,如果程序不从这里开始,需要在这三个单元中放置无条件转移指令,引导CPU执行用户指定的程序。此外,特定的中断服务子程序地址分布在0003H到002AH之间。
51单片机的片数据存储器(RAM)分为两个区域:00H到7FH的128B RAM区和特殊功能寄存器(SFR)区。这个区域主要用于数据缓冲和临时存储。SFR区包含了多个具有特定功能的寄存器,如累加器A、寄存器B、程序状态字PSW等,这些寄存器在程序运行过程中起到关键作用。
8051单片机还有一个64KB的片外数据存储器寻址空间,通过MOVX指令访问。这个空间可以扩展额外的数据存储需求,例如存放大量的数据变量或表格。
在实际应用中,对于没有内置ROM的8031单片机,需要外接ROM,并将EA引脚接地,使得CPU从外部ROM开始执行程序。而对于8051等带有内置ROM的单片机,正常情况下EA引脚应接高电平,以优先从内部ROM执行程序。
51单片机的存储器结构是其核心功能之一,理解其工作原理和组织方式对于编写有效的C语言程序和进行硬件设计至关重要。在编写程序时,需要合理安排程序存储器和数据存储器的使用,确保中断服务子程序的正确配置,以及根据需要扩展外部存储器。在遇到程序跳转或中断处理时,必须考虑到这些存储空间的特性,以确保程序的正常运行。