‘壹’ 为什么要对单片机系统进行存储器扩展
如果单片机系统原有的资源不够充足、不能满足应用所需的要求,那么就需要进行存储器的扩展。
可能需要扩展片外的程序存储器,也可能需要扩展片外的数据存储器,某些情况下还需要结合软件进行更复杂的存储器接口扩展(例如大容量的SPI Flash或者走SPI子协议的SD卡等等)。
‘贰’ 单片机存储器扩展问题
单片机使用地址锁存器进行扩展时,需要ALE做为地址锁存的选通信号,以实现低8位地址的锁存。
P0口送出低8位有效地址信号是在ALE信号变高的同时出现,并在ALE由高变低时,将出现在P0口的地址信号锁存到地址锁存器中,直到下一次ALE信号变高时,地址才会发生变化。
固定脉冲也是有高低电平变化的。
‘叁’ 在MCS-51单片机存储器扩展中,区分扩展的是片外程序存储器还是片外数据存储器的最可靠的方法是
硬件上,控制信号不一样:片外程序存储器工作,要PSEN信号有效;片外数据存储器工作,要RD或WR信号有效;
软件上,寻址不一样,片外程序存储器工作,要用MOVC,
片外数据存储器工作,要用MOVX;
虽然说他们的地址都是0000H~FFFFH,不会发生冲突的
‘肆’ 51单片机的外部存储器扩展
不对啊。外部存储器可以存放不同的程序。比如在同一个系统中使用不同的程序会完成不同的工作,直接换外部程序存储器就能很方便的换程序而不用换芯片或再烧写。
‘伍’ 51单片机存储器扩展地址问题
对于一个扩展地址 如 FFE0来说,可能是数据RAM的地址,也可能是程序ROM的地址
由于是采用不同的指令来访问,所以是不会有冲突的
访问片外RAM用: MOVX
访问片外ROM用:MOVC
‘陆’ 51单片机程序储存器扩展。
你定义一个xdata类型的变量就可以了。
例
unsigned char xdata *p;//p就是你的RAM地址,
你要取地址为addr的数据,你可以这样。
p=addr;
temp=*p;
‘柒’ 单片机程序存储器扩展的问题
单片机在置位或者重启时,会根据EA端是否接低电平来选择片内还是片外,如果片内存储器已满,则自动跳转到片外程序存储器,此时EA控制信号就不起作用了。
比如说51系列单片机,片内只有4KB的容量,如果EA接的是高电平,则选用内部程序存储器,当超出4KB,PC计数器自动转到片外60KB的范围继续读程序(程序计数器PC为16位,可寻址空间为64KB),而且片内ROM和ROM地址是不重复的。
这样说你明白了吗?
‘捌’ 如何确定单片机外部存储器扩展的地址范围
地址线,地址线的作用就是确定内存空间的
‘玖’ 单片机存储器扩展
不应该这样问。。
首先51肯定是可以接flash存储器的。
容易最大是不是64K ,,看你问的具体意思
如果说指的是扩展的是程序存储器或者数据存储器呢。
那么确实是64K。
如果你那些所谓存储器。。想存的不是 代码而是一下 图片什么的资源
那么扩展到1M那也是可以的。
因为51是16位地址线 。所以程序数据存储器只能扩展到64K
c8051这种。他做了内部扩展。。属于非标准的51了
如果是单单是存储器。那些指用来存资源用的。。像电脑的硬盘一样。
什么时候用什么时候去读取的这种。
那么你扩个1M的 flash也没人说你。。只要你能买到1m的串口flash就可以了。
呵呵 o(∩_∩)o...哈哈
如果是程序存储器。。要1M 那么你也是n人了。
1024*1024/2 = 大约500,000行代码。。