MCS-51单片机存储器结构的特点之一是将程序存储器和数据存储器分开(称为“哈佛结构”),并用各自的指令对这两个不同的存储器空间进行访问。对存储器的划分在物理上分为4个空间,片内ROM、片外ROM、片内RAM和片外RAM,其结构示意图如图4-3所示。
其中,ROM存储器地址空间有片内ROM和片外ROM,其地址范围为0000H~FFFFH,片内RAM地址空间的地址范围为OOH~FFH,片外RAM地址空间的地址范围为0000H~FFFFH。
4.2.3.1 程序存储器ROM
程序设计人员编写的程序就存放在程序存储器中。
单片机重新启动后,程序计数器PC的内容为0000H,所以系统将从程序存储器地址为0000H的单元处开始执行程序。但是考虑到中断系统的应用,用户程序一般不是从0000H处开始连续存放,因为接下来的一段程序区要用来存放中断向量表,所以用户不能占用。要求地址分配如下:
0000H 存放转移指令,跳转到主程序。
0003H 外部中断0的中断地址区。
000BH 定时/计数器0中断地址区。
0013H 外部中断1的中断地址区。
001BH 定时/计数器1中断地址区。
0023H 串行通信中断地址区。
图4-3 单片机存储器结构图
用户程序一般从0030H处开始,而在0000H处放置一条跳转指令,这样单片机复位后能从0000H处跳转到用户的主程序。
另外,当单片机的引脚接地时,程序存储器全部使用片外的ROM,单片机的引脚接高电平时,CPU先从内部的程序存储器中读取程序,当程序计数器PC值超过内部ROM的容量时,才转向外部的程序存储器读取程序。
4.2.3.2 片内RAM
MCS-51的片内RAM存储器共有128字节,可分为4个区域,具体为工作寄存器区、位寻址区、用户区、特殊功能寄存器区。
(1)工作寄存器区。
从00H~1FH为4组工作寄存器区,每组占用8个RAM字节,记为R0~R7。工作寄存器组的选择由程序状态字PSW中的RS1~RSO位确定。
(2)位寻址区。
从20H~2FH为位寻址区,16个字节的128位可以单独操作,可对每一位进行读取或写操作。每一位都有其自身位地址00H~7FH与之对应。位单元与其地址对应关系参见表4-6。
(3)用户区。
用户区共80个RAM单元,用于存放用户数据或作为堆栈区。用户区中的存储区按字节进行存取。
表4-6 位单元与其地址对应关系
(4)特殊功能寄存器。(www.daowen.com)
MCS-51有21个特殊功能寄存器SFR(Special Function Register),每个RAM地址占用一个RAM单元,离散地分布在80H~FFH地址中。这些寄存的功能已做了专门的规定,用户不能修改其结构。表4-7是特殊功能寄存器分布一览表。
1)ALU相关SFR。
①累加器A(Accumulator)。累加器A是最常用的寄存器,专门用来存放操作数或运算结果,大部分的数据操作都要通过累加器A进行。
②通用寄存器B。通用寄存器B是专门为乘法和除法设置的寄存器,为8位二进制寄存器。
③程序状态字PSW。该寄存器中保存了程序的运行状态。
2)指针相关SFR。
①SP(Stack Pointer)。SP为程序的堆栈指针,指向栈顶元素,在操作堆栈时需要用到。
②数据指针DPTR。数据指针DPTR是一个16位寄存器,由两个8位寄存器DPH和DPL组成。其中DPH为高8位,DPL为低8位。
3)中断相关SFR。
IE(Interrupt Enable)中断允许位寄存器:用来设置全局、定时器、串行口以及外部中断。
IP(Interrupt Priority)中断优先级寄存器:用来设置各种中断的优先级,各中断源可以设置为高优先级或低优先级。
4)端口相关SFR。
P0、P1、P2、P3:可以通过端口寄存器对端口进行读或写操作。
PCON(电源控制及波特率选择寄存器):用来设置电源工作方式以及串行通信口中的比特率。
SCON(串口控制寄存器):用来控制串口工作模式、数据格式、发送及接收中断标志等。
SBUF(串行数据缓冲寄存器):是为接收或发送数据而设置的,为8位二进制寄存器,通过移位操作进行数据的接收或发送。
5)定时/计数器相关SFR。
TCON(定时/计数器控制寄存器):用来设置中断请求方式、定时模式。设置定时/计数器的启动停止等。
TMOD(定时/计数器工作方式寄存器):定时/计数器有4种工作模式,通过设置TMOD来决定工作方式。
TL0、TH0、TL1、TH1在设置定时器初值时要用到TL和TH,TL为数据低8位,TH为数据高8位,也可以直接访问16位寄存器T0或T1。
另外,对于特殊功能寄存器SFR,当其末位地址为0或8时可以进行位寻址。比如P1的地址为90H,可以进行位寻址,而SP的地址为81H,不能进行位寻址。
表4-7 特殊功能寄存器一览表
4.2.3.3 片外RAM
如果片内RAM容量太小,不能满足系统需求,则可以外接RAM,但外部RAM大小不能超过64 KB,因为8051的寻址范围为64 KB。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。