单片机数据存储器扩展
❶ 为单片机拓展外部程序存储器时,多片ROM芯片的容量不同如何拓展
拓展外部存储器,通常都会选择相同容量的芯片,因为这样构建译码电路会比较简单。如果因一些特殊需要,必须使不同容量的器件,那要看扩展的存储空间是否要求连接的地址。若必须是连接地址,地址译码电路比较复杂,适合采用CPLD或FPGA等可编程器件来实现。如果每片扩展存储器之间,并不要求连续地址,也可考虑按最大容量器件的地址范围来设计译码。
❷ 51单片机扩展外部数据存储器6264,怎么用C语言实现对其操作
2.扩展RAM编程基础
(1)弄清扩展器件的地址
在图7.2.5中,U3的ABC接单片机A13,A14,A15,所以片选信号对应地址最高位,即:“CBAxxxxx xxxxxxxx”(x为任意)。U4片选接CS1,即Y1,CBA=001,可得U4的地址范围是0x2000~0x3fff。U5接CS3,即Y3,CBA=011,地址为0x6000~0x7fff。U6接CS4,即Y4,CBA=100,地址为0x8000~0x9fff。知道了器件地址,可以利用直接地址、外部数据指针来访问存储器。通过设置,也可以让编译器在扩展RAM中自动分配存储单元。
(2)直接地址访问
①向U4写数据:
XBYTE[0x2000+addr]=dat; //addr为U4内部地址,取值为0~0x1fff;dat为数据。
②读出U4数据:
dat=XBYTE[0x2000+addr];
也可以用页访问方式。页访问方式,实际就是先把16位地址高8位送P2口,通过低8位地址读写。
③按页读写U4:
P2=0x20+page; // page为页,取值为0x00~0x1F。
PBYTE[addr]=dat; // addr为页内地址,取值为0x00~0xFF。
dat=PBYTE[addr];
④读U6
dat=XBYTE[0x8000];//读U6,地址取0x8000~0x9fff任何值,都一样。
⑤写U5
XBYTE[0x6000]=dat; //写U5,地址取0x6000~0x7fff任何值,都一样。
(3)数据指针
如,读写U4,可以这样写:
unsigned char xdata *p=0x3000; //声明指针p,并初始指向0x3000单元
x=*p; //读指针所指向的位置
p=p+1; //指针指向下一单元
*p=0x16; //向指针所指向的位置写入数据
(4)让编译器自动分配存储空间
①为了能让编译器自动分配存储空间,并使用扩展RAM,必须设置扩展RAM地址。在Keil编程软件中,点击工具栏快捷图标“ ”,弹出目标选项对话框。按图7.2.6所示,设置RAM起始地址和长度。
②变量声明时使用xdata关键词。如:
unsigned char xdata a;//变量a使用扩展RAM空间。
特别注意,扩展RAM直接地址访问方式与自动分配存储空间方式最好不要混用,否则可能产生冲突。
摘自《单片机控制装置安装与调试》下册,雷林均主编
❸ 存储器的扩展方式哪三种
存储器的扩展方式有字扩展、位扩展、字位同时扩展。存储器芯片与单片机扩展连接具有共同的规律。即不论何种存储器芯片,其引脚都呈三总线结构,与单片机连接都是三总线对接。另外,电源线接电源线,地线接地线。
目前生产的存储器芯片容量有限,在字数或字长方面与实际存储器要求有所差距,所以要在字向与位向两方面进行扩充,才能满足实际存储器的要求。
cpu对存储器进行读写操作时,首先由地址总线给出地址信号,然后再发出有关进行读操作与写操作的控制信号,最后在数据总线上进行信息交换。
(3)单片机数据存储器扩展扩展阅读:
存储器的扩展技术:
总片数=总容量/(容量/片)。
例:存储器容量为8K×8b,若选用2114芯片(1K×4b),则需要的芯片数为:(8K×8b)/(1K×4b)=16(片)。
(1)位扩展。
只在位数方向扩展(加大字长),而芯片的字数和存储器的字数是一致的。即b前面不一样,K前面保持一样。
例:用64K×1b的SRAM芯片组成64K×8b的存储器,所需芯片数为:(64K×8b)/(64K×1b)=8(片)。
位扩展的关键就是将两个存储芯片当成一个存储芯片来用,让两个存储芯片同时工作,同时被选中,同时做读操作,同时做写操作,要想保证同时,就是把两个芯片的片选,用相同的信号进行连接。
(2)字扩展。
仅在字数方向扩展,而位数不变。即K前面不一样,b前面保持一样。
例:用16K×8b的SRAM组成以64K×8b的存储器,所需芯片数为:(64K×8b)/(16K×8b)=4(片)。
(3)字和位同时扩展。
参考资料来源:网络-位扩展
参考资料来源:网络-字扩展
❹ 为什么要对单片机系统进行存储器扩展
如果单片机系统原有的资源不够充足、不能满足应用所需的要求,那么就需要进行存储器的扩展。
可能需要扩展片外的程序存储器,也可能需要扩展片外的数据存储器,某些情况下还需要结合软件进行更复杂的存储器接口扩展(例如大容量的SPI Flash或者走SPI子协议的SD卡等等)。
❺ 单片机系统扩展的主要扩展
单片机的系统扩展主要有程序存储器(ROM)扩展,数据存储器(RAM)扩展以及I/O口的扩展。
外扩的程序存储器与单片机内部的程序存储器统一编址,采用相同的指令,常用芯片有EPROM和EEPROM,扩展时P0口分时地作为数据线和低位地址线,需要锁存器芯片,控制线主要有ALE、。
扩展的数据存储器RAM和单片机内部RAM在逻辑上是分开的,二者分别编址,使用不同的数据传送指令。常用的芯片有SRAM和DRAM以及锁存器芯片,控制线主要采用ALE、、。
常用的可编程I/O芯片有8255和8155。用8255扩展并行I/O口时需要锁存器,8155则不用。对扩展I/O口的寻址采用与外部RAM相同的指令,因此在设计电路时要注意合理分配地址。8255和8155的工作方式是通过对命令控制字的编程来实现的,在使用时首先要有初始化程序。
MCS-51单片机有很强的扩展功能,外围扩展电路、扩展芯片和扩展方法都非常典型、规范。