地址

1.前言

MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。

MCS-51单片机在物理结构上有四个存储空间

1、片内程序存储器(片内ROM)
2、片外程序存储器(片外ROM)
3、片内数据存储器(片内RAM)
4、片外数据存储器(片外RAM)

在逻辑上(即从用户的角度上)MCS-51单片机有三个存储空间

1、片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC)
2、256B的片内数据存储器(片内RAM)的地址空间(MOV)
3、以及64K片外数据存储器(片外RAM)的地址空间(MOVX)

注:在访问三个不同的逻辑空间时,应采用不同形式的指令以产生不同的存储器空间的选通信号。

2.存储空间划分

2.1 片内RAM

MCS-51单片机存储地址空间划分
图:片内AM地址空间划分

地址范围是00H到7FH (52系列延伸到FFH),为8位地址,所以最大可寻址的范围为256个单元地址

• 00H到1FH
共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。
对此区域,可以使用 R0~R7 来操作,代码短捷,但是,只有一个当前工作区是可以这样读写的。
对此区域,也可以使用字节地址,来读写。

• 20H-2FH
共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。
此区域,也可按照字节寻址,来读写。

• 30H-7FH
没有什么特色,只进行字节寻址。

• 80H-FFH
共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。
(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。

注:对上述空间读写,必须使用 MOV 指令。

2.2 片外RAM

片外RAM的地址范围是0000H到FFFFH,容量即为64KB。对片外RAM读写,必须使用 MOVX 指令。

对片外RAM采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。

也就是说在寻址片外RAM时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。

2.3 ROM

ROM的地址范围是0000H到FFFFH,容量即为64KB,地址长度16位,作用是 存放程序及程序运行时所需的常数。

其中0000~0FFFH,即4K,在片内,其它在片外。

EA = 1,寻址内部ROM;EA = 0,寻址外部ROM
对ROM读出,必须使用 MOVC 指令。

3. 参考文献

[1] http://blog.163.com/asm_c/blog/static/24820311320112208130269/

转自: jasonactions

围观 648

一片外围芯片具有一定的地址空间。例如11根地址线的芯片,其地址空间为2KB(2048)。这2KB地址空间在微处理器的内存空间(如8位微处理器有16根地址线,能寻址64KB)中被分配在什么位置,由高位地址线A11~A15产生的片选信号来分别确定。当外围芯片多于一片时,为了避免误操作,必须利用片选信号来分别确定各芯片的地址分配。产生片选信号的方式不同,存储器的地址分配也就不同。片选方式有线选、全译码和局部译码。

线选方式

线选方式,就是把一根高位地址线直接连外围芯片的片选端,如图1。图中Ⅰ、Ⅱ、Ⅲ都是2KB×8位存储器芯片,地址线 A10~A0 实现片内寻址B。现用3根高位地址线A11、A12、A13实现片选,均为低电平有效。为了不出现寻址错误,当All、A12、A13之中有一根地址线为低电平时,其余两根必须为高电平,即每次操作只能选中其中一个芯片,假设剩下的两根高位地址线 Al4、A15都为低电平,这样可得到3个芯片的地址分配,见表1。

图1 用线选方式实现片选

表1 线选方式地址分配表

可以看出 3 个芯片的内部寻址 A10~A0与都是从0~0(共11位),为2KB空间,而依靠不同的片选信号---高位地址线A11、A12、A13之中某一根为0,来区分这3个芯片的地址空间。
也可以用一根高位地址线加一“非门”,对两片存储器实现片选,如图2所示。图中当A11为低电平时选通芯片Ⅰ,当A11为高电平时选通芯片Ⅱ。类似上例方法,可得到两芯片的地址空间为:

芯片Ⅰ 0000H 一 07FFH

芯片Ⅱ 0800H 一 0FFFH

线选方式的接口电路简单,其缺点是芯片的地址空间相互之间可能不连续,不能充分利用微处理器的内存空间或者存在着地址重叠现象。不能充分利用内存空间的原因是:用作片选信号的高位地址线的信号状态得不到充分利用。在图1中,All、A12、A13这3根地址线的信号状态从000到111应有8种,若采用译
码方式能选通8个2KB 芯片,存储空间共计16KB。但在线选方式下,只能使用其中3种状态(即 3 位数码中只允许1位为“0”) ,选通3个2KB芯片,存储空间减为6KB。

图2 用一根高位地址线对两片储器实现片选

所谓“地址重叠”是指一个存储器芯片占用

一个以上的地址空间,或者说不同的地址会选通同一存储单元。这是因为作为片选信号的某根高位地址线有效而选通该芯片时,其它的高位地址线可能闲置未用,它们的电平可以为高也可以为低,这并不影响这个芯片的选通,但这样该芯片就会有不同的地址空间。以图1为例,当 Al1为低电平选通芯片I 时,此时 A12 、 A13 必须为高电平,然而表1中的 A14、A15的电平可高可低,这样对于芯片I ,实现上存在 4 个地址空间,它们是 3000H 一 37FFH 、 7000H 一 77FFH 、 B000H 一 B7FFH 和 F000H 一 F7FFH 。同理,芯片Ⅱ和Ⅲ也有4个地址空间。对于地址重叠现象,使用者要清楚,并认定其中一个地址空间进行编程使用。

由于线选方式不能充分利用内存空间,因此这种方式一般适用于存储容量较小的系统。

来源:玩转单片机

(直接点击图片可进入调查页面)

开发板测评图片
围观 407
订阅 RSS - 地址