MCS-51单片机存储器采用哈佛结构(har-vard)(哈佛结构就是一个计算机架构,类似于冯诺伊曼结构,但是两者有很大区别)在物理结构上分为程序存储器空间和数据存储器空间,也就是我们常说的ROM和RAM
程序存储器主要用来存放程序和表格常数
数据存储器主要用来存放中间结果,采集数据灯,细分为:片内、片外程序存储器和片内、片外数据存储器
从图中可看出,这4个存储空间存在地址冲突问题:数据存储器与程序存储器的64KB地址空间重叠;程序存储器中片内与片外的低4KB地址重叠;数据存储器中片内与片外最低的256B地址重叠。
程序存储器存放已编好的程序和固定数据,CPU用16位程序计数器PC做指针,取指令、数据,可寻址64k地址空间,程序存储器内部的资源分布如图所示
由于片内、外统一编址,所以片内4KB存储空间地址000H-0FFFH与片外存储器地址000H-0FFFH发生冲突。但是,CPU是访问片内存储器还是访问片外存储器,可由引脚上所接的电平来确定。
1)当EA引脚接高电平时,若程序计数器(PC)值超出片内存储空间,则自动转向片外程序存储器空间执行程序;
2)当EA引脚接低电平时,单片机只能执行片外程序存储器的程序。
MCS-51程序存储器中,有6个存储单元具有特殊用途
0000H单元为系统启动地址。MCS-51单片机启动复位后,程序计数器(PC)的内容为0000H,所以系统将从0000H单元取指令,并开始执行程序。程序设计时一般在该地址存放一条绝对跳转指令,转入主程序的入口地址。
另外0003H一002AH日被均匀地分成5段,用于5个中断服务程序的入口。
其中0003H、000BH、0013H、O01BH、0023H为5个中断源的中断服务程序的入口地址。
中断源的中断服务程序的入口地址,即当中断产生相应的中断服务程序的起始地址被装入程序计数器(PC),系统将从该地址取指令,并执行程序
数据存储器可读可写,物理上分为两个地址空间:
片外数据存储器共64K地址空间(0000H-FFFFH)
片内数据存储器共256B地址空间,分为低128B和高128B(00H-FFH)。
低128B又分为工作寄存器区、位寻址区和用户RAM区,如图所示;高128B又叫特殊功能寄存器,这些寄存器的功能具有专门的规定,用户不能修改其结构。存储器中共有11个可位寻址的位地址。其中,片内数据存储器中有128个;特殊功能寄存器中有83个
在00H-1FH共32个单元,被均匀地分为四组工作寄存器堆:RB0、RB1、RB2、RB3,每组寄存器堆包含8个工作寄存器,均以R0-R7来命名,这些寄存器被称为通用寄存器。工作寄存器用于临时存放8位信息。在使用时,由程序状态字寄存器(PSW)中的RS0、RS1来选择工作寄存器堆。
片内数据存储器的20H-2FH存储区为位寻址区,既可作为一般单元按字节寻址,也可按位进行寻址。位寻址区有16个字节,位地址为00H-1FH,做一般RAM用
用户RAM区主要用作数据缓冲区和堆栈。这个存储区只能按字节寻址,用作存放数据及作为堆栈区。通常堆栈区被设置在这块存储区,由堆栈寄存器SP指定。
单片机中的存储器
-----------------------------------------对于特殊功能寄存器的介绍可等待之后的博客更新,以上内容属于原创,欢迎转载----------------------------------------