8051单片机片内RAM仅128B,没有高128B,特殊功能寄存器会存在于高位128B呢?初学单片机很疑惑,

如题所述

关于51单片机内存问题,一直是个疑惑大家的问题,因为51单片机是个很另类的单片机。
下面我给楼主讲解一下:
51单片机之所以另类,是因为,他寻址内存的空间,不是靠总线,是用指令的方式。
51单片机有以下几个内存模块组成:
ROM或者Flash就不说了。
RAM有------内部RAM的低128位(00-7F)
-------内部RAM的高128位(80-FF)---【89C51单片机没有这一段空间】
-------特殊功能寄存器(SFR)(80-FF)
------外部RAM 64K(0000-FFFF)

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

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

明白以上原理,楼主就明白了为什么地址只有8位,52却号称有512B,因为他的内部低128B RAM+内部高128B RAM+外部64KB RAM中的前256B,所以有512B,另外还有个SFR,但是,SFR不算是内存,这个楼主要搞清楚!
而51仅有内部低128B,所以51远不如52高级。

那么,为什么说外部可以扩展到64K呢,因为DPTR是16位的,2的16次方是65536 = 64 KB
但是通常单片机不会用那么多内存的,所以基本外部就是256B--1024B之间,现在STC据说准备出一款4096B外部RAM的单片机。

以上所说的只是针对51内核的单片机,其他内核的,像ARM之类的,不是这种结构的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-21
RAM是RAM,特殊功能寄存器 是 特殊功能寄存器,怎么混在一块来说?

特殊功能寄存器,是独立存在的,只能用直接寻址对它操作。

8051单片机片内的地址分配:
0~127:RAM; --可以直接寻址,也可以间接寻址
128~255:有21个特殊功能寄存器。 --只可以直接寻址

8052单片机片内的地址分配:
0~127:RAM; --可以直接寻址,也可以间接寻址
128~255:RAM; --只可以间接寻址
128~255:有21个特殊功能寄存器。 --只可以直接寻址追问

谢谢你的解答,我终于明白了

第2个回答  2012-03-21
特殊功能寄存器“会”存在于高位128B呢?

这个“会”是啥意思?你可以把128内存与寄存器当作一共256内存,其中低128是自由使用,高128是专用,这样能明白吗?其实Ram与寄存器是为了用同样的指令寻址,不能有重合的地址,才合并使用256的地址空间的。

而像访问code是专用指令,就是单独的从0开始编地址的。
此外,52片子增加了128内存,其地址与寄存器重合,为了区分二者,高128内存只能用间接寻址,而寄存器只能用直接寻址,就OK了。
相似回答