mcs—51单片机数据存储器RAM分布情况,说明片内和片外如何区分

如题所述

51单片机有以下几个内存模块组成:
1】ROM或者Flash,叫程序存储区,你写的程序是存在这里面的,上电后从这里面执行。
程序存储区也分为片内和片外,一般来说,现在的51很多已经做到了64K,所以很少有外扩
片外Flash或者片外的Rom了,Flash或者Rom不管是片内还是片外的,只能用来定义常量,是用code来修饰,也就是说,用code来修饰的东西,在程序运行过程中,不能修改;
2】RAM有------内部RAM的低128位(00-7F),对应C语言就是data,比如我定义一个变量,
data unsigned char Var = 0;
那么,这个 Var变量就是放在内部的低128位Ram中
-------内部RAM的高128位(80-FF),对应C语言就是idata,比如我定义一个变量,
idata unsigned char Var = 0;
那么,这个 Var变量就是放在内部的高128位Ram中
-------特殊功能寄存器(SFR)(80-FF),对应C语言就是Sfr比如我定义一个变量,
Sfr unsigned char Var = 0x90;
那么,这个 Var变量就是放在内部的特殊功能寄存器中,这是你对Var操作,相当于操作一个特殊的寄存器,但是小心,不能随便定义Sfr变量,很危险
------外部RAM 64K(0000-FFFF)
外部的RAM可以扩展到65536个,但是前256个算是一页,这一页比较特殊,是用
pdata来修饰的,当然,也可以用xdata来修饰。
除了第一页的256个以外的其他65280个空间,只能用xdata来修饰;
回过头来讨论pdata和xdata,这两个都能修饰外部Ram的第一页,但是,Pdata只能修饰第一页,即最前面的256个外部Ram,那么,这最前面的256个到底用Pdata还是Xdata好的呢?
答案是Pdata,因为Xdata修饰的变量,用的是DPTR寻址,Pdata用的是R0和R1.DPTR因为是16位的,所以可以覆盖整个的64K外部Ram,R0和R1是8位,所以只能寻址最前面的256个,也就是外部Ram的第一页,但是,用R0寻址,比DPTR快一倍,代码也小的很多

楼主又疑惑了,好多地址是重复的,比如,我向80H地址写一个数值,单片机怎么知道读的是内部的高128位RAM?还是SFR?还是外部64K的RAM呢?

答案是用指令,如果是直接寻址,那么访问的就是SFR,如果是R0或者R1间接寻址,就是内部高128位RAM,如果是DPTR或者是R0,R1间接寻址,且配合的是MovX指令,那么就是访问外部64KRAM中的第80H个地址。

概括一下来说,51的内存由以下组成:
1----程序存储器(包括片内Flash或Rom,也包括片外Flash或Rom,C语言用Code定义)
2----内部低128位Ram,C语言用data定义
3---内部高128位Ram,C语言用idata定义
4---内部SFR,C语言用Sfr定义
5---外部65536个Ram(通常,很多单片机厂家不会给你扩展那么多的,一般来说扩展256个字节或者1024个字节就差不多了,最近宏晶的出了个扩展4096字节的。这65536字节的Ram,前256个可以用Pdata修饰,也可以用Xdata修饰,超过256个之后的,只能用Xdata修饰)

以上所说的只是针对51内核的单片机,其他内核的,像ARM之类的,不是这种结构的。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-03
  mcs—51单片机数据存储器RAM分布情况及区分:片内 RAM,是买来一片 51 单片机芯片时,里面自带的。片外 RAM,需要另外再买几块 RAM 芯片,焊接到电路板上。
  单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
第2个回答  推荐于2017-09-15
mcs—51单片机的数据存储器 RAM分布情况:
片内,00H~7FH,共 128 字节;
片外,0000H~FFFFH,共 65536 字节,即 64K。

如何区分:
是要求用肉眼区分吗?
片内 RAM,是买来一片 51 单片机芯片时,里面自带的。
片外 RAM,需要另外再买几块 RAM 芯片,焊接到电路板上。
用肉眼观察,立即就可以区分出来。本回答被提问者和网友采纳

mcs—51单片机数据存储器RAM分布情况,说明片内和片外如何区分
1】ROM或者Flash,叫程序存储区,你写的程序是存在这里面的,上电后从这里面执行。程序存储区也分为片内和片外,一般来说,现在的51很多已经做到了64K,所以很少有外扩 片外Flash或者片外的Rom了,Flash或者Rom不管是片内还是片外的,只能用来定义常量,是用code来修饰,也就是说,用code来修饰的东...

MCS-51单片机片内RAM的组成的划分方式和功能分别是什么?
数据存储器(RAM)为 256 字节, 地址范围为00H~FFH, 分为两大部分: 低 128 字节(00H~7FH)为真正的RAM区; 高 128 字节(80H~FFH)为特殊功能寄存器区SFR。程序存储器(ROM)的内部地址为 0000H~0FFFH, 共 4 KB; 外部地址为 1000H~FFFFH, 共 60 KB。 当程序计数器由内部 0FFFH执行到...

51的内部存储器和片外存储器有什么区别?
1)MCS-51单片机的存储器从物理结构上分为:片内和片外数据存储器,片内和片外程序存储器。2)从逻辑上分别可划分为:片内统一寻址的64K程序存储器空间(0000H---FFFFH);64KB的片外数据存储器空间(0000H---FFFFH);256B的片内数据存储器空间(00H---FFH)。

MCS-51单片机的存储器地址空间如何划分?各地址空间的地址范围和容量如何...
MCS-51单片机的存储器地址空间划分如下:1. 片内RAM:地址范围从00H到7FH(52系列延伸到FFH)。其中,00H到1FH的32字节空间分配给四个工作寄存器区,每个区包含寄存器R0至R7。这一区域可以通过使用R0至R7进行操作,但当前只有一个区域是可读写的。此外,也可以通过字节地址进行读写。20H至2FH的16字...

MCS-51 单片机的存储器地址空间如何划分?各地址空间的地址范围和容量如...
MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间.片内RAM:地址范围是00H到7FH (52系列延伸到FFH).其中00H到1FH,共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7.对此区域,可以使用 R0~R7 来操作,但是,当前只有一个区是可以这样读写的.对此区域,也可以使用字节地址,来读写.20H-2...

“MCS-51系列单片机中,片内程序存储器为4KB”,而同时又说“程序存储器...
0000~FFFFH,共 64KB。片内数据存储器,51 系列是:00~FFH,共 256B。52 系列是:00~7FH,共 128B。片外数据存储器:0000~FFFFH,共 64KB。特殊功能寄存器:80H~FFH,只有 21 个单元。位寻址区,RAM 功能:00~7FH,共 128 bit 。SFR 功能:80~FFH,有效的不多。存储空间分布如下所示:...

MCS-51单片机ROM,内部RAM,外部RAM从软件上怎么区分
ROM只能读,不能写,MOVC A,@A+DPTR MOVC A,@A+PC 内部RAM 可以读写 ,读MOV A,写MOV **,A 外部RAM可以读写 ,读MOVX A,写MOVX **,A

MCS-51单片机内部RAM可分为几个区?各区的主要作用是什么
MCS-51单片机的内部RAM被划分为五个主要区域,各自承担不同的功能:1. 存储矩阵区:作为RAM的核心,这个区域承担着存储信息的关键角色,通常被称为存储矩阵。2. 地址译码器区:该区域的职责是将寄存器的地址转换为对应的二进制数,进而生成有效的行和列选择信号,以便准确地选中所需的存储单元。3. 读\/...

在MCS-51单片机存储器扩展中,区分扩展的是片外程序存储器还是片外数据...
硬件上,控制信号不一样:片外程序存储器工作,要PSEN信号有效;片外数据存储器工作,要RD或WR信号有效;\\x0d\\x0a软件上,寻址不一样,片外程序存储器工作,要用MOVC,\\x0d\\x0a片外数据存储器工作,要用MOVX;\\x0d\\x0a虽然说他们的地址都是0000H~FFFFH,不会发生冲突的 ...

mcs51内部ram的分区情况是怎样的?
MCS-51单片机内部RAM可分为5个区:1、存储矩阵区:RAM的核心区域是一个寄存器矩阵,用来存储信息,称为存储矩区。2、地址译码器区:地址译码器区的作用是将寄存器地址所对应的二进制数译成有效的行选信号和列选信号,从而选中该存储单元。3、读\/写控制器区:访问RAM时,对被选中的寄存器进行读操作...

相似回答