扩展存储器的地址分配
A. MCS-51单片机可扩展的程序存储器和数据存储器的地址空间各为多少
51的存储器从功能上来说可以分为程序存储器和数据存储器,至于到底能扩展多少存储空间,要看你扩展的是哪一类存储器。
访问存储空间时,需要用到两个指针变量,为DPTR何PC。其中pc为程序计数器,指向下一条需要执行的指令的地址,DPTR为数据指针寄存器,这两个变量的长度都为16位,这是51单片机内部结构决定的,无法改变。所以这两个指针的寻址能力都为64K。这样看来,两类存储器的扩展能力都为64K
。但是,如果你实际扩展过存储器,你就可以发现程序存储器的扩展能力并没有64K!!!
这是为什么呢????
这得从51单片机的存储空间的编址说起。这里仅作简单说明,具体可以看教科书。简单地说,内部程序存储器和外部程序存储器是一起编址的,它们分别占用64K地址的一部分,所以外部扩展时要减去内部的地址空间,当然小于64K啦。而数据存储器是内外部分别编址,内外部数据存储器用不同的指令进行访问,所以不用担心单片机会混淆内外部数据存储器,所以外部数据存储器扩展能力有64K
B. 当89C51单片机外部的程序存储器和数据储存器同时扩展时的地址分配
外部程序存储器和数据存储器扩展,地址可以重叠,互不干扰,因为控制信号不一样,读写指令也不一样。
C. 存储器的容量扩展的连接方式和扩展后的地址范围
容量扩展主要有两种方式,并位和串位,举个例子,有个2KB的存储器,我再扩展个2KB的存储器,如果是并位扩展方式,地址范围还是2k的空间,不过每次读出的是16bit;如果是串位方式,则直接扩展成4KB,有4k的地址范围,每次读出8bit,不知道你明白了没有?这个跟片选信号连接方式,以及地址、数据线连接方式有关.
一般来说是以Byte为读取单位,通常都是串行扩展,即地址线性扩展,2KB的空间,再增加2KB,一共就4KB的存储器,也是最常用的方式,地址线的高位通过译码电路构成片选信号,低位为每片的地址信号.
至于地址范围,跟你扩展的总空间容量有关,如果4KB的空间,需要地址线就是12条(0~11),关系是2的12次方为4K,同理,扩展后总空间为8KB的话,地址线就是13条(0~12)。
D. 51单片机在外扩存储器时如何确定每块存储器的首地址
每块存储器的首地址是由存储器的片选信号决定的,而片选信号有两种形式,一种是线选,即用单片机P2口某条高位地址线做片选,这种方式地址有重叠。另一种是全地址译码方式,用译码器选片。其实,教材上凡是讲扩展存储器时都会讲这些的,也讲地址是怎么计算的,那计算出来的地址就是首地址。而末地址是首地址+存储器容量。
E. 51单片机外扩存储器时如何确定存储器的地址范围
51单片机外扩存储器时,用地址线确定存储器的地址范围。
用一个IO口的口涎作为数据存储器的片选信号。比如8051单片机,P2:P0口提供的地址A15~A0(实际是A12~A0)用来访问8K的数据存储器。
用单片机的P1口作为存储器的片选信号:P1.0接一个存储器的CS,P1.1接另一个存储器的CS,这样8个存储器正好用完P1口,当要访问其中一个时,只把相应的P1.x=0而其他为1,这样就可以了。
工作原理
存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和CPU直接交换信息的是主存。
主存的工作方式是按存储单元的地址存放或读取各类信息,统称访问存储器。主存中汇集存储单元的载体称为存储体,存储体中每个单元能够存放一串二进制码表示的信息,该信息的总位数称为一个存储单元的字长。