51单片机最大寻址空间是64K,超过64K可以用P1口对存储器进行分页,512K 存储器,可用P1.0,P1.1,P1.2接EPROM的A16,A17,A18;将其分成8个64K 的存储器页.
在页间跳转必须精确定位,在页间跳转指令后面加入几条NOP空操作,在跳入的页面也加入几条NOP空操作,如果你扩展ROM只是为了扩充数据存储空间,那么你可以在每页开始的一段内都放入(相同的)指令程序。
如从0页换1页,当前PC=FFF0H,ROM地址:00FFF0H
SET P1.0
NOP
NOP
NOP
NOP
SET P1.0切换后:PC=FFF2H,ROM地址:01FFF2H
要特别注意的是,中断子程序必须放在每页相同的位置安排入口,单片机上电时P1.0,P1.1,P1.2都是高电平,所以,你的初始化程序入口应在ROM的070000H处。
这么高难度,您只有5分,哎!!!!
1、地址范围为2000H-5FFFH,只有16K。
2、将16KRAM的寻址地址脚a0-a12连接到单片机的16位扩展后的低13位地址线A0-A12上。A14接到a13上。然后用异或逻辑,将单片机A13,A14这两位做逻辑得到RAM的/CS=(A14^A13)。
=====
建议更换内部扩展RAM,或变换寻址地址范围。
你是指单片机吗?8位单片机的寻址范围本身就是64K,只不过某些单片机将其中部分寻址空间另作他用了。
如果原寻址空间是32K,增加一个IO口,寻址高32K时,设置输出为1,反之为0。对于单片机而言,主要就是这种方法,如果有其它方法,也是换汤不换药!
如果要三种方案,假设单片机原始寻址范围是32768~65535,以下就是:
方案一:外部存储器是64K,那么,单片机A15不用,将IO口连接到RAM的A15
方案二:外部存储器是32K两片,除片选线之外,其它都并联至单片机,地址线用A0~A15,采用两个IO口,低32K和高32K,分别使其中一个IO口有效。
方案三:外部存储器是32K两片,除片选线之外,其它都并联至单片机,地址线用A0~A15,采用一个IO口,外接一个反相器,反相器前后分别接两片存储器的片选。
前一个图:
每片27128的容量是128kbit,也就是8根数据线、14根地址线。4片27128刚好分完51的全部外部寻址空间。
因此P2口的最高两位通过2-4译码器连接4片27128的片选,分配了映射空间。
第1片:分配了最低的128kbit空间,当P2[7:6]为00时选通,也就是[0000H:3FFFH]。
第2片:分配了次低的128kbit空间,当P2[7:6]为01时选通,也就是[4000H:7FFFH]。
第3片:分配了次高的128kbit空间,当P2[7:6]为10时选通,也就是[8000H:BFFFH]。
第4片:分配了最高的128kbit空间,当P2[7:6]为11时选通,也就是[C000H:FFFFH]。
后一个图类似,你自己分析分析应该没什么问题。
这个常用翻页访问的方法。如果口线资源有富余的话就用口线直接做高位地址线,比如用P1口,那么就相当与多了8条地址线,这样总寻址空间就到了16M了。如果口线资源用做其他功能了,就在64K空间中划一个地址出来连接一个锁存器(比如74HC273)或者接口芯片(如8255/8155等)用这些扩展的芯片的输出做高位地址,这样也可以扩展到足够大。
单片机如何拓展寻址空间的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:单片机如何拓展寻址空间