⑴ 51单片机如何扩展512K的程序存储器(EPROM)芯片是M27C4001
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分,哎!!!!
⑵ MCS-51单片机可扩展的程序存储器和数据存储器的地址空间各为多少
51的存储器从功能上来说可以分为程序存储器和数据存储器,至于到底能扩展多少存储空间,要看你扩展的是哪一类存储器。
访问存储空间时,需要用到两个指针变量,为DPTR何PC。其中pc为程序计数器,指向下一条需要执行的指令的地址,DPTR为数据指针寄存器,这两个变量的长度都为16位,这是51单片机内部结构决定的,无法改变。所以这两个指针的寻址能力都为64K。这样看来,两类存储器的扩展能力都为64K
。但是,如果你实际扩展过存储器,你就可以发现程序存储器的扩展能力并没有64K!!!
这是为什么呢????
这得从51单片机的存储空间的编址说起。这里仅作简单说明,具体可以看教科书。简单地说,内部程序存储器和外部程序存储器是一起编址的,它们分别占用64K地址的一部分,所以外部扩展时要减去内部的地址空间,当然小于64K啦。而数据存储器是内外部分别编址,内外部数据存储器用不同的指令进行访问,所以不用担心单片机会混淆内外部数据存储器,所以外部数据存储器扩展能力有64K
⑶ mcs 51系列单片机在扩展了外部程序存储器时,为何需要在P0口接地址锁存器
MCS-51单片机与外部扩展的存储器相连时,P0口是作为地址/数据准双向口(可输入又可输出),ALE输出信号的负跳变用于单下机发出的低8位地址锁存器的锁存控制信号。如果地地址超过8位,由P2口的A8-15来选取外部存储器,其中又可作为讯问外部存储器的控制端,你想想看,我要对外扩充的存储器进行读或者写,首先是不是要让单片机知道外部存储器的地址,这个地址就是由单片机从P0口输出(如果地址超过8位,由P0、P2组合),以选通外部器件,接下来,就是传送数据,但在传送数据之前,单片机是不是要把之前传送的地址要进行锁存呢,这个任务就是由ALE口的负跳变来完成的。一旦知道地址了,那么,单片机就可以方便面的和外设进行交流了。
但愿,我的解说,能够对你有帮助。
⑷ 51单片机的内存扩展
你先告诉你们这出题 的老师,现这2764可是不好购买了,也可能你们以后一辈子用不上的了。如真是在学习的最好选用一片存贮器再加一片I/O芯片来做那才更实在点。
⑸ 在51单片机的外部,需要扩展2KB的程序存储器,请将以下电路原理图连接完整
因为是在仿真软件上画,楼主耐心点看。
注:1.你图中的74LS373的G端就是连我图中的LE端;
2.其地址范围是:0000H~07FFH。
⑹ 51单片机需要扩展程序存储器吗
不用扩展。
程序存储器是用来存储“程序代码”的,还没有见到谁编写的“程序代码”能超过32K字节。
有人编写的大规模的程序,说是超过了多少多少K,其实往往都是包括了大量的数据表格,如汉字点阵等等,根本不是程序代码。
这样的内容,都可以用IIC总线的EEPROM来存储,这样就可以代替三总线的程序存储器。
⑺ 51单片机程序储存器扩展。
你定义一个xdata类型的变量就可以了。
例
unsigned char xdata *p;//p就是你的RAM地址,
你要取地址为addr的数据,你可以这样。
p=addr;
temp=*p;
⑻ 51单片机程序存储器扩展的一些问题
RAM还是RAM,当然有起作用了,如果RAM不够就要扩展,51RAM只有128B,有时确实不够用,也可以用52、53的单片机,看看程序有没写错了。
有点奇怪,为什么要用AT28C64呢,可以用AT89S52内部就有8KB的FLASH,而且两种价格相当,我这52跟51是一样的。
还是建议你不要用扩展的ROM,用来玩还可以,用来做设计不实用,占用太多IO口不说,安全性不高,你也不想自己苦写的程序被人盗走吧。
你可以提高编程技巧,使程序简捷,减少占用空间。或改用其它内带大容量ROM的芯片。
51的ROM确实小,不过我还没写出超出8K的(汇编),用AVR的吧如:ATmega32吧,内部就有32K的FLASH,2KBRAM,1KBEEPROM跟51一样40个脚,速度大约是51的8倍。ATmega128有128K的FLASH(不过管脚有点多),跟AT89S51是同一个厂家.
⑼ C51单片机外部中断扩展程序设计
外部中断0设置为低电平触发,去掉while循环后一直按下按键实际代码为
delay();
p1=0xfe;
delay();
ex0=0;
p1=_crol_(p1,1);
delay();
ex0=1;
p1=0x00;
一直重复.
之前的代码进入中断后会一直循环,并不会退出中断。正确做法中断应该改为:
void
tx0()
interrupt
0
using
0
{
unsigned
char
i;
delay();
p1=0xfe;
delay();
ex0=0;
while(1)
{
p1=_crol_(p1,1);
delay();
if(p3&0x04)
//判断是否松开中断0的按键
{
break;
}
}
ex0=1;
p1=0x00;
}
⑽ 51单片机串行口扩展并行输入口的C语言程序
那需要看你用什么芯片了,不同的芯片程序也就 不同,没有芯片怎么能编程呢?