51单片机资源扩展:扩展片外RAM

合集下载

51单片机外部ram扩展c程序及硬件结构

51单片机外部ram扩展c程序及硬件结构

c程序#include<reg52.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned intint n,m;void main(){unsigned int i;while(1){for(i=0x0000;i<=0x7fff;i++){XBYTE[i]=n;//写入ram}for(i=0x7fff;i>0x0000;i--){m=XBYTE[i];//读外部存储器}}}62256外部ram芯片相关知识:XBYTE是一个地址指针(可当成一个数组名或数组的首地址),它在文件absacc.h中由系统定义,指向外部RAM(包括I/O口)的0000H单元,XBYTE后面的中括号[ ]0x2000H 是指数组首地址0000H的偏移地址,即用XBYTE[0x2000]可访问偏移地址为0x2000的I/O端口。

这个主要是在用C51的P0,P2口做外部扩展时使用,其中XBYTE [0x0002],P2口对应于地址高位,P0口对应于地址低位。

一般P2口用于控制信号,P0口作为数据通道。

比如:P2.7接WR,P2.6接RD,P2.5接CS,那么就可以确定个外部RAM的一个地址,想往外部RAM的一个地址写一个字节时,地址可以定为XBYTE [0x4000],其中WR,CS为低,RD为高,那就是高位的4,当然其余的可以根据情况自己定,然后通过XBYTE [0x4000] = 57;这赋值语句,就可以把57写到外部RAM的0x4000处了,此地址对应一个字节。

XBYTE 的作用,可以用来定义绝对地址,是P0口和P2口的,其中P2口对应的是高位,P0口对应的是低位如XBYTE[0x1234] = 0x56;则等价于mov dptr,#1234hmov @dptr,#56h谢谢大家。

51单片机的RAM区域划分以及常遇到的问题

51单片机的RAM区域划分以及常遇到的问题

51单片机的RAM区域划分以及常遇到的问题前几天群里有一位同学使用AT89S51这个单片机编程,遇到了一个情况:keil软件的options for Target的Target选项中,其中的Memory Model选项,同样的程序,如果选择Small模式进行编译,把程序下载到单片机内,程序就工作正常;如果选择Large模式进行编译,下载到单片机内程序就工作不正常,这个就是新手偶尔遇到,但是很难分析出原因的内存使用溢出问题。

51单片机的问题,是历史问题,比较复杂,那现在一般一些新型单片机这种问题就简单一些,但是也得注意关于RAM的溢出问题。

RAM是用来保存临时数据的,一旦我们的使用量超过了RAM的大小或者区域,那就可能造成一些不可预知的错误问题。

51单片机的RAM分为片内和片外,标准的51内核是0x00~0x7F 一共128B,而现在的大多数半导体厂商开发的51系列单片机都带了扩展片内RAM,即片内RAM区域一般是从0x00到0xFF一共256B。

随着功能需求越来越多,程序量越来越大,那片内这256B也不够用了,因此又扩展了片外RAM,片外RAM的预留比较大,最大可以从0x0000到0xFFFF一共64KB,当然了,每个具体型号有多大不一定,具体看通过芯片的手册来了解。

而现在的51单片机的片外RAM,“片外”只是一个名词而已,实际上很多也是直接做到了单片机内部,但是访问地址,还是以外部的起始地址的方式。

就是说,片内RAM的地址从0x00到0xFF,而片外是从0x0000到0xFFFF;其中最开始的256B是重复的地址,这部分通常情况下只要RAM够用就可以不理会,软件编译器会自动给我们处理好。

当选默认small模式,优先使用内部的前128B,而选Large 模式,优先使用的是片外的64K。

因此上面那个同学的问题就在这里了,因为他用的是AT89S51单片机,而这个单片机是没有片外RAM 的,如果选择了Large模式,那优先使用的是片外,因此编译完成,下载到单片机里,程序运行时用了这个单片机所没有的区域,那肯定就不行了。

哈工大51单片机存储器扩展

哈工大51单片机存储器扩展

并行接口特点
串行接口特点
串行接口具有数据传输速度较慢、数 据总线宽度较小等缺点,但电路连接 简单、占用引脚少。
并行接口具有数据传输速度快、数据 总线宽度大等优点,但电路连接复杂。
51单片机存储器的访问方式
01
02
03
直接寻址方式
直接寻址方式是指直接给 出存储单元的地址,通过 该地址访问存储器中的数 据。
通过哈工大51单片机的外部存 储器接口,将存储器芯片与单 片机连接。
根据存储器芯片的规格书,设 计相应的电路和连接方式。
根据实际需求,编写相应的程 序来读写扩展的存储器。
05 扩展存储器的应用与优化
扩展存储器在系统中的应用
数据存储
01
扩展存储器用于存储大量数据,如传感器采集的数据、用户数
据等。
程序存储
02
扩展存储器用于存储应用程序的代码,以支持更复杂的功能和
更大的程序。
缓存
03
扩展存储器可以作为高速缓存,提高系统的整体性能。
扩展存储器的性能优化
读写速度
通过优化硬件设计和软件算法,提高扩展存储器的读写速度。
可靠性
采用错误检测和纠正技术,提高扩展存储器的可靠性。
兼容性
确保扩展存储器与主控制器和其他组件的兼容性,以实现无缝集 成。
间接地址映射
扩展存储器的地址通过特 定的寄存器映射到单片机 的地址空间,可以实现更 灵活的地址管理。
段地址映射
将扩展存储器分成若干段, 每段独立映射到单片机的 地址空间,可以实现较大 的存储空间扩展。
04 哈工大51单片机存储器扩 展方案
扩展方案的比较与选择
方案一:并行扩展 优点:扩展速度快,适用于对速度要求较高的应用。

RAM和ROM

RAM和ROM

典型外部ROM和RAM器件的使用实例详解来源:开拓电子()录入: autumn1 实例功能在很多应用场合,51单片机自身的存储器和I/O口资源不能满足系统设计的需要,这时就要进行系统扩展。

在本例中,将结合片外ROM和片外RAM的典型芯片的应用,说明如何扩展单片机的数据存储器和程序存储器。

本例中3个功能模块描述如下:∙单片机系统:扩展单片机的存储器,实现片外存储器的访问。

∙外围电路:分为3个内容。

首先是用地址锁存器完成单片机系统总线的扩展,其次是扩展片外ROM器件2764,第三是扩展片外RAM6264.∙C51程序:用C51完成对片外存储器的读写。

本例目的在于希望keiltop读者在读完本例后,能完成相关的电路设计。

∙器件原理本实例中将首先介绍单片机的三总线概念和形成,随后介绍单片机弦叫线的扩展。

在单片机系统扩展时,引入片外典型存储器件,最后给出典型片外ROM和RAM的电路连接和使用方法。

2.1单片机的三总线(1)什么是单片机的三总线?单片机三总线指数据线、地址线和控制线。

单片机CPU所要处理的就是这3种不同的总线信号。

数据线:数据总线用来传送指令和数据信息。

P0口兼做数据总线DB0~DB7.地址线:用来指定数据存储单元的志趣分配信号线。

在8051系列中,提供了引脚ALE,在ALE为有效高电平,在P0口上输出的是地址信息,A7-A0。

另外,P2口可以用于输出地址高8位的A15~A8,所以对外16位地址总线由P2和P0锁存器构成。

控制线:8051系列中引脚输出控制线,如读写信号线、PSEN、ALE以及输入控制信号线,如EA、TST、T0、T1等构成了外部的控制总线。

(2)如何实现外部总线的扩展?由于单片机的输入输出引脚有限,一般的,我们采用地址锁存器进行单片机系统总线的扩展。

常用的单片机地址锁存器芯片有74LS373,图1-22所示为74LS373的引脚以及它们用作地址锁存器的连接方法。

74LS373是带三态输出的8位锁存器。

实验十二 SRAM外部数据存储器扩展实验 (1)

实验十二 SRAM外部数据存储器扩展实验 (1)

实验十二SRAM外部数据存储器扩展实验一、实验目的1.掌握51单片机扩展外部RAM的方法。

2.掌握SRAM62256读写数据的方法。

二、实验说明MCS-51型单片机内有128B的RAM,只能存放少量数据,对一般小型系统和无需存放大量数据的系统已能满足要求。

对于大型应用系统和需要存放大量数据的系统,则需要进行片外扩展RAM。

MCS-51型单片机在片外扩展RAM的地址空间为0000H~FFFFH共64KB。

读写外RAM 时用MOVX指令,用RD选通RAM OE端,用WR选通RAM WE端。

本实验使用SRAM 62256芯片进行片外RAM扩展。

62256具有32KB(256Kbit)空间,因此它需要15位地址(A0~A14)。

62256的全部地址空间为0000H~7FFFH。

62256芯片引脚如图1.4及管脚功能介绍:D0~D7:数据线A0~A7:地址线图1.4 62256芯片引脚WE:写允许,低电平有效OE:读允许,低电平有效CS:片选端,低电平有效三、实验内容本实验示例程序向外部RAM指定地址写入数据,并读出数据验证。

四、实验电路本实验所需电路请参见系统原理图的第一部分和图14-1。

存储器扩展接口。

图1.4 62256芯片引脚五、实验程序参考框图图1.5程序流程框图六、实验步骤1)系统各跳线器处在初始设置状态(参见附录四),将MCU模块的JT12跳线器的C、D、E、F四只短路帽置位下边(2、3短接),G短路帽置位下边(2、3短接)。

J1打在左边,J3打在2,3处(CS7279处),J2的 WE,RD接在左边。

2)在所建的Project文件中添加“62256.ASM”文件,分析、理解程序,编译、下载、运行程序。

观察数码管显示,读写正确则显示‘Good’!七、实验参考程序:见附件:实验指导参考程序。

51单片机的扩展

51单片机的扩展

(a)程序存储器的扩展
.程序存储器的作用----存放程序代码或常数表格
.扩展时所用芯片----一般用只读型存储器芯片(可以是 EPROM、E2PROM、 FLASH芯片等)。 .扩展电路连接 ---- 用EPROM 2732扩展程序存储器。 .存储器地址分析----究竟单片机输出什么地址值时,可以
一、系统扩展的含义
单片机中虽然已经集成了CPU、I/O口、定时器、 中断系统、存储器等计算机的基本部件(即系统资 源),但是对一些较复杂应用系统来说有时感到以 上资源中的一种或几种不够用,这就需要在单片机 芯片外加相应的芯片、电路,使得有关功能得以扩 充,我们称为系统扩展(即系统资源的扩充)。 需要解决的问题是单片机与相应芯片的接口电 路连接(即地址总线、数据总线、控制总线的连接) 与编程。
指向存储器中的某一单元。
.扩展时所用芯片
2732----4K EPROM
A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 GND Vcc A8 A9 A11 OE/Vpp A10 CE O7 O6 O5 O4 O3
2732引脚功能
A0-A11 CE 地址线 选片 输出允许/ 编程电源 数据线
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
A8 A9 A10 A11
2732
CE OE
ALE
PSEN 图4.2 扩展电路
8031
2732
数据总线的连接: P0.0-P0.7(数据总线)----------------------------------------O0-O7 地址总线的连接: 经过锁存器373 P0.0-P0.7(地址总线低8位)---------------------------------- A0-A7 P2.0-P2.3(地址总线高8位中的4位)--------------------------- A8-A11 控制总线的连接: PSEN(程序存储器允许,即读指令) -------------------------- OE ALE(地址锁存允许)-------------------------------------接373的使能端 G

四 MCS-51单片机存储器系统扩展

四 MCS-51单片机存储器系统扩展
RD、WR为数据存储器和 I/O口的读、写控制信号。执 行MOVX指令时变为有效。
74LS373引脚
1、控制位OE: OE=0时,输出导通 2、控制位G: 接ALE 3、Vcc=+5V 4、GND接地
1 74LS373为8D锁存器,其主要特点在于:
控制端G为高电平时,输出Q0~Q7复现输入D0~ D7的状态;G为下跳沿时D0~D7的状态被锁存在Q0 ~Q7上。
MOV DPTR, #0BFFFH ;指向74LS373口地址
MOVX A, @DPTR ;读入
MOV @R0, A
;送数据缓冲区
INC R0
;修改R0指针
RETI
;返回
用74LS273和74LS244扩展输入输出接口
地址允许信号ALE与外部地址锁存信号G相连;
单片机端的EA与单片机的型号有关;
存储器端的CE与地址信号线有关。
P... 2.7 P2.0
ALE 8031
P... 0.7 P0.0
EA
PSEN
外部地址
G
锁存器
I...7
O... 7
I0 O0
A... 15
CE
A8
外部程序
存储器
A... 7 A0
D7. . . D0 OE
6264的扩展电路图
图中CS(CE2)和CE引脚均为6264的片选信号,由于该扩展电路 中只有一片6264,故可以使它们常有效,即CS(CE2)接+5V ,CE接地。6264的一组地址为0000H~1FFFH。
存储器地址编码
SRAM6264:“64”—— 8K×8b = 8KB 6264有13根地址线。 地址空间: A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 最低地址: 0 0 0 0 0 0 0 0 0 0 0 0 0 0000H 最高地址: 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH MCS-51单片机寻址范围:64KB 26×210 = 216即16位地址线 地址空间: A15A14A13A12A11A10A9A8A7······A0 单片机

51单片机外扩RAM

51单片机外扩RAM

单片机外部RAM扩展模块MCS-51系列单片机外部RAM为64K,在一些特殊场合下,远不能满足需要,本文就AT89C51讨论MCS-51系列单片机大容量RAM的扩首先介绍128K随机读取RAM HM628128。

HM628128是32脚双列直插式128K静态随机读取RAM,它具有容量大、功耗低、价格便宜、集成度高、速度快、设计和使用方便等特点。

如若在系统中加入掉电保护电路,保护数据有很高的可靠性,可以和EEPROM相媲美。

技术特性:(1)最大存取时间为120ns;(2)典型选通功耗75mW;典型未选通功耗10uW;(3)使用单一5V电源供电;(4)全静态存储器,不需要时钟及时序选通信号;(5)周期时间与存取时间相等;(6)采用三态输出电路,数据输入和输出端公用;图6 HM628128外部引脚(7)所有输入和输出引脚均与TTL电平直接兼容;(8)有两个片选端,适合于低功耗使用,即为了保存信息,用电池作为后备电源。

保存信息的最低电源电压Vcc=2V。

引脚安排及功能表:图6是HM628128的外部引脚排列图,各引脚名称及功用分别如下:A0~A16是17条地址线;I/O0~I/O7是8条双向数据线;CS1是片选1,低电平有效,CS2是片选2,高电平有效;WR是写控制线,当CS1为低电平,CS2为高电平时,WR的上升沿将I/O0~I/O7上的数据写到A0~A16选中的存储单元中;OE是读出允许端,低电平有效。

HM628128的功能表如表3所示。

其中,H表示高电平,L表示低电平,X表示任意状态由于AT89C51直接外部RAM容量为64K,地址线为16条,其中低8位地址和数据分时复用,因此需要外部地址锁存器和ALE锁存信号来锁存低8位地址。

又由于AT89C51的外部数据和外设地址通用,若扩展外设必然占用数据地址。

因此本系统采用P2.7(A15)口来区分数据和外设:当P2.7(A15)口为高电平时,选择外部数据;P2.7(A15)口为低电平时,则为外设。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51 单片机资源扩展:扩展片外RAM
上一文中扩展了单片机的程序存储器,4KB 存储空间提升到64KB。


实,4K 的代码空间还凑合,但是51 自带的256B 数据存储空间使用起来还
真紧张,其中留给用户的连128B 都不到,所以不得不扩展片外RAM。

扩展RAM 方法和扩展ROM 差不多,都是占用P0/P2 口做地址线,同时P0 用锁
存器74373 分时复用地址和数据信号。

以前扩展RAM 是用汇编语言访问存储器,好处是定位精准,指哪打哪,
坏处就是:程序规模一大就有点难维护了,所以还得改用C 实现。

对应于汇编语言用R1,R0/DPTR 访问外部RAM,keil C 扩展了存储类型,增加了如pdata(等同用movx @Rn 访问方式)/xdata(等同于movx @DPTR 访问方式)存储类型用于访问片外ram。

同时,还提供了绝对地址访问的宏,
如PBYTE/XBYTE,查看定义:
[cpp] view plain copy#define PBYTE((unsigned char volatile pdata*)0);
#define XBYTE((unsigned char volatile xdata*)0);。

相关文档
最新文档