51单片机如何进行ROM外扩
- 格式:docx
- 大小:10.14 KB
- 文档页数:2
51MCU内部有RAM,ROM,不同于8031。
尽管如今的增强行51MCU的内部RAM,ROM可能已经很大的空间。
但就技术而言,扩展RAM,ROM还是需要学会的。
对于不同的设计方案需求,扩展可能基于以下任何一种设计:A,只扩展RAMB,只扩展ROMC,扩展ROM,RAM****************************总线扩展时,P2口是否可用做普通IO口************************************这种扩展是基于总线扩展的,所以,P0P2口就已经不可以再做它用了(有网友提供信息,总线扩展P2还可以做普通IO口用,有两种可能:1,P2口复用,如同P1利用373锁存器。
2,在总线扩展时,只用到了低地址总线,P2口未用到。
就作为普通IO口应用。
由于技术还不到位,不做评论。
)*******************************************扩展RAM****程序************************************************扩展RAM,在程序中定义的xdata类型XBYTE类型等地址范围在外部RAM的变量,对其读写的过程。
用C51语言编写程序,且使用总线扩展的RAM,则时序电路不用考虑,WR RD等信号由编译器/硬件自动完成。
**************************************编译器设置*****************************************内部RAM:0x00~~0xFF外部RAM:0x0000~~0xFFFFRAM的地址虽重复,但是两个RAM是没有关系的,所以不会造成干扰使用了外部RAM,就在工程选项---off-chip xdata memory中设置start:0x0000 size:0xFFFF(根据具体的RAM大小设置size)。
*******************************扩展RAM时的变量定位及连续读取问题********************************* ROM,RAM的扩展时,需要用到变量的绝对地址定位,函数定位等。
存储器的扩展程序存储器的扩展MCS-51单片机程序存储器的寻址空间为64KB,对于8051/8751片内程序存储器为4KB的ROM或EPROM,在单片机的应用系统中、片内的存储容量往往不够,特别是8031,片内没有程序存储器,必须外扩程序存储器。
8051外扩程序存储器结构图如图6-1所示。
扩展程序存储器常用芯片有EPROM(紫外线可擦除型),如2716(2KB)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)等,另外还有+5V电擦除E2PROM,如2816(2KB)、2864(8KB)等等。
1. 选择芯片原则在选择程序存储器芯片时,首先满足程序容量,其次在价格合理情况下尽量选用容量大的芯片。
芯片少,接线简单,芯片储存容量大,程序调整余量大。
如估计程序总长4KB左右,最好扩展一片8KB的EPROM2764,留有一定的余量。
另外,能用一片8KBEPROM2764则不要选2片2732(4KB),多一个芯片接线就复杂许多,且功耗增多,尽量减少扩展芯片个数使电路结构简单,提高可靠性。
2. 程序存储器扩展举例例选用8031单片机,程序总量3KB左右,考虑程序存储器的最小扩展系统。
分析:8031单片机内部无ROM,无论程序长短都必须扩展程序存储器,考虑本例的程序量,扩展一片4KB的EPROM最合适。
8031单片机扩展一片4KB的2732程序存储器电路如图6-2所示。
图中74LS373是带三态缓冲输出的8D锁存器,与其功能相同的一组芯片还有8282、74LS273等。
在存储器芯片扩展电路设计时,重点弄清地址线,数据线及控制线的连接方法。
(1) 地址线图中2732共12根地址线AO~All(212=4096B=4KB),低8位A0~A7通过74LS373与P0接口连接,高四位A8~A11直接与P2接口的P2.0~P2.3连接,P2接口有锁存功能。
(2) 数据线2732数据线D0~D7共8位直接与P0接口的P0.0~P0.7相连。
51 单片机内存扩展:从片内ROM 跳转到片外ROM
源于一年前想自己动手给51 写个OS,编译选Large 模式,调试时整个流程都跑的好好的,可是烧写到片上后得不到预期的效果,后来查书才知道
51 单片机片上只有4KRom,如果没有扩展片外Rom,当访问4K 以外的程序空间,程序指针又会回到最开始执行。
参考手册扩展片外Rom 后,能访问达64K 的程序空间。
网上能搜索到的扩展方式都是将EA 引脚接地,让MCU 上电后从外部ROM 开始执行。
但查看芯片手册,明明说EA 为高时,程序从
片内ROM 执行,当执行到0x1000 以上地址时(标准51 单片机),会跳转到片外ROM 执行。
按网上的做法,为了扩展个片外ROM,片内的基本ROM 都
不用了,有点浪费了,于是开始找资料如何从片内跳转到片外执行。
射人先射马,发帖先上图,仿真图如下:
此处EA 脚没有接地。
如果想简单粗暴的加电时从片外ROM 执行,EA 引
脚接地,双击U2(27C64)Image File 选Hex 然后就可以了,这不是本文的重点,略过,后面可能会写到。
跳转,最简单的方式用LJMP,当然也可以用把跳转地址压入栈,然后ret 过去,不过这种方式我没尝试成功。
实验九用EEPROM扩展单片机ROM实验一、实验目的1.用EEPROM 27C64扩展51单片机ROM(27C64为外ROM)。
2.用proteus设计、仿真基于AT89C51单片机ROM的扩展实验。
3.借助proteus VSM的虚拟逻辑分析仪,观测单片机访问外ROM(即27C64)时地址、数据和控制总线的信号状态。
二、电路设计1.从PROTEUS库中选取元件①AT89C51.BUS:总线式的单片机;②RES:电阻;③7SEG-BCD- GRN:带BCD译码七段绿光数码管;④CAP、CAP-ELEC:电容、电解电容;⑤CRYSTAL:晶振;⑥74LS373:8D锁存器;⑦27C64:EEPROM存储器。
2.放置元器件3.放置电源和地4.连线5.元器件属性设置6.电气检测三、源程序设计、生成目标代码文件1.流程图2.源程序设计(1)通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。
若编译失败,可对程序进行修改调试直至汇编成功。
(1)加载单片机目标代码文件对AT89C51单片机先右击后左击,打开其属性编辑窗口,在“Program File”栏中添加目标代码文件2764.HEX;在“Clock Frequency”栏中输入晶振频率为120HZ。
(2)加载27C64目标代码文件对2764先右击后左击,打开其属性编辑窗口,在映像文件“Image File”栏中输入外ROM程序的目标代码文件P2764.HEX。
四、PROTEUS仿真1.加载目标代码文件2.仿真单击按钮,启动仿真。
启动仿真后,因单片机的EA脚接电源,从单片机内ROM地址0H开始执行指令LJMP 1000H。
因内ROM的最大地址为0FFFH,而外ROM 27C64的地址从0H到1FFFH,当指令地址大于0FFFH时就自动转到外ROM中去执行程序,所以执行LJMP 1000H是跳转到外ROM 27C64的地址1000H处执行外ROM 27C64中的程序。
51 单片机外扩ROM 方法
51 单片机外扩ROM 方法
强烈建议用户尽可能不要考虑外扩程序存储器,如果非扩不可,可以仿照
下图所示电路进行扩展
图中P0 口输出外部ROM 的低8 位地址信号,P2 口输出高8 位地址信
号;ALE 端输出地址锁存信号,/PSEN 输出程序存储器输出使能信号。
两个模块
P89V51RD2 单片机内部有64K 用户ROM 区和8K BOOT ROM 区两个模块
两个模块在物理上是分开的,尽管地址重合,但一般不会发生冲突。
用户程序存储区
P89V51RD2 内部有64K Flash ROM,不需要用户再进行ROM 扩展
地址范围:0000H~FFFFH
其内部分配和其他51 系列单片机是相同的
Flash ROM 可以反复擦除和下载程序
擦除和编程的方法
并行编程器
ISP (在系统编程:In-System Program)。
1.外扩存储器(1)如选27512,不用译码器,可外扩多大容量?答:最大可扩1024K。
因为27512是ROM芯片,它与8051单片机连接时,8051单片机的必须接低电平,8051单片机的接27512的,27512的低8位地址线---分别接8051单片机口的—,---分别接单片机的---,外扩各片ROM的片选分别接8051单片机的口和口(如:外扩第一片ROM的与的相连,第二片ROM的与的相连......,第八片ROM的与的相连,....,第十六片的ROM的与的相连),数据线接口--分别接单片机, 所以最大可扩容量=64K16=1024K.(2)如选62512,不用译码器,可外扩多大容量?答:最大可扩896K.。
因为62512是RAM芯片,RAM同时具有读和写的功能,它与8051单片机连接时,8051单片机的必须接低电平,单片机的()和()分别接62512的和,62512的低8位地址线---分别接8051单片机口的—,高8位地址线---分别接单片机的---,外扩各片RAM的片选分别接单片机的口和口(如:外扩第一片RAM的与的相连,第二片RAM的与的相连......,第八片RAM的与的相连,....,第十四片的RAM的与的相连), 数据线接口--分别接单片机所以最大可扩容量=64K14=896K.(3) 如果突破地址界限,如何连接2MB的芯片?答:所用的2MB的芯片是MBM29F016,连接图及管脚分布如下图所示:①2M存储器芯片MBM29F016地址线引脚为:A0~A20 ;②单片机P0.0~P0.7经过锁存器74LS373依次与A0~A7相连,P2.0~P2.7依次与A8~A15相连;③单片机P1.0~P1.4依次与A16~A20相连作为高位地址。
..附:MBM29F016简介MBM29F016是Fuitsu公司生产的一种闪速存储器, 其内部带有2M字节的可重复编程的EEPROM且在掉电时数据不会丢失。
51单片机扩展外部RAM
今天这个是是以前做过的,没做成,扩展ROM的时候失败了~~不过今天主要的就是扩展外部的RAM,这个相对比较简单点,不想外部的ROM还要设置太多的编译器~~
单片机扩展外部RAM
一、扩展总线
1、简介(这种扩展是基于总线扩展的,所以,P0、P2口就已经不可以再做它用了)
1)数据总线宽度为8位,由P0口提供;
2)地址总线宽度为16位,可寻址范围2的16次,也就是64K。
低8位
A7~A0由P0口经地址锁存器提供,高8位A15~A8由P2口提供。
由于P0口是数据、地址分时复用,所以P0口输出的低8位必须用地址锁存器进行锁存;
3)控制总线由RD、WR、PSEN、ALE和EA等信号组成,用于读/写控制、片外RAM选通、地址锁存控制和片内、片外RAM选择。
地址锁存器一般选用带三态输出缓冲输出的8D锁存器74LS373。
2、片外RAM的操作时序
进行RAM的扩展,其扩展方法较为简单容易,这是由单片机的优良扩展性
能解决的。
单片机的地址总线为16位,扩展的片外RAM的做大容量为
64KB,地址为0000H~FFFFH。
1)由于51单片机采用不同的控制信号指令,尽管RAM和ROM地址是重
叠的,也不会发送混乱。
2)51单片机对片内和片外ROM的访问使用相同的指令,两者的选择是由。
51单片机如何进行ROM外扩
强烈建议用户尽可能不要考虑外扩程序存储器,如果非扩不可,可以仿照
下图所示电路进行扩展
图中P0 口输出外部ROM 的低8 位地址信号,P2 口输出高8 位地址信号;ALE 端输出地址锁存信号,/PSEN 输出程序存储器输出使能信号。
两个模块
P89V51RD2 单片机内部有64K 用户ROM 区和8K BOOT ROM 区两个模块两个模块在物理上是分开的,尽管地址重合,但一般不会发生冲突。
用户程序存储区P89V51RD2 内部有64K Flash ROM,不需要用户再进行ROM 扩展地址范围:0000H~FFFFH 其内部分配和其他51 系列单片机是相同的Flash ROM 可以反复擦除和下载程序擦除和编程的方法并行编程器ISP (在系统编程:In-System Program)直接调用单片机BOOTROM 区的IAP 函数IAP (在应用编程:In-Application Program)一般情况下优先使用ISP 方式,更方便、更快捷
关于BOOT ROM 区存储介质:Flash Memory 容量:8K 字节存储内容:ISP 引导程序和IAP 函数这些程序出厂时已经由PHILIPS 已经写入,用户可以对其修改,但建议一般用户不要试图修改它。
单片机在复位后会等待400ms,如果
在此期间用户在上位计算机上运行了FlashMagic 等类似ISP 软件,且串口通信正常,单片机将进入BOOT ROM 区运行ISP 引导程序;否则,单片机在400ms 以后将自动从用户ROM 区0000H 单元开始运行用户程序关于ISPISP 在系统编程:In-System Program,指用户不必把单片机从目标板上取下来,在特定的软件配合下直接通过串口(或其他端口)就可以对单片机进行读取、擦除、设置和程序下载等操作,从而取代了并行编程器的很多功能。
现在越来越。