历史上的今天

今天是:2024年11月19日(星期二)

2018年11月19日 | 教你给51单片机扩展片外RAM

发布者:传邮万里 来源: eefocus关键字: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);


其实,也还是定义相应存储类型的指针~。


上仿真图和代码前,整理一下keil c提供访问绝对地址的方法:


1._at_定义变量:


变量类型 [存储类型] 变量名 _at_ 常数,指定变量存放在常数所指定的ram位置,注意bit型变量不能使用_at_指定位置;


2.绝对地址访问:


头文件absacc.h提供了绝对地址访问宏,用于字节/字寻址,如


val=XBYTE[0x0000];读片外ram 0x00处内存值


XBYTE[0x0200]=val;写片外ram 0x0200处内存值


扩展ram仿真图:


c语言版本:

2.jpg

最后看下程序运行后6264内部存储的数据:

3.jpg


后记:


本来想自己扩展ram的,可是ram芯片属于高速信号,自己布板就省了,还是玩泥巴去了。。


关键字:51单片机  扩展  片外RAM 引用地址:教你给51单片机扩展片外RAM

上一篇:单片机startup.a51文件内容的详解
下一篇:51单片机内存扩展:从片内ROM跳转到片外ROM

推荐阅读

梳理下下ARM代码编译链接的工作流程,以及过程中需要的相关概念信息,不具体关注编译链接的具体命令。一、编译过程编译过程就是把源代码编译生成目标代码的过程。而采用ARM编译命令,可以将源代码编译成带有ELF格式的目标文件。除了编译命令可以选择相应的编译选项之外,源代码中的pragmas以及特别的关键字也会对编译过程/结果产生一定影响。1、makefile...
传统的传感技术已被用于解决人数统计、运动检测、工业区域扫描和检测目标并避免碰撞的机器人技术等具有挑战性的问题。随着越来越多的工业应用向自动化方向发展,传感对于生成和处理各种数据变得尤为重要,这使得系统可以变得自主并做出实时决策。德州仪器(TI)高度集成的毫米波(mmWave)雷达传感器内部可进行大量数据处理,从而实现边缘智能化。TI毫米波...
诺基亚、Elisa和高通技术公司宣布,三方已基于芬兰商用网络实现全球最快的高达8Gbps的5G基站吞吐量,首次实现同时为两部5G毫米波终端提供高达8Gbps的合并速度。此次连接在荷兰赫尔辛基的Elisa旗舰店展示,5G毫米波高速连接将支持一系列低时延、大带宽服务,例如高速视频下载、关键业务型应用及虚拟现实(VR)和增强现实(AR)应用。5G毫米波服务预计于2021...
2021Medtec中国展12月20-22日上海开幕在即,8大看点提前揭晓2021Medtec中国展暨第十七届国际医疗器械设计与制造技术展览会,将于12月20-22日在上海世博展览馆开幕。今年Medtec 中国展将于上海世博展览馆1号馆和2号馆同时举办,面积达到28,000m²,开创历史规模之最。届时来自25 个国家和地区的600多家参展企业将汇聚一堂,其中230家企业首次亮相,其中有...

史海拾趣

问答坊 | AI 解惑

AT89c2051 中文资料

AT89c2051 中文资料…

查看全部问答∨

高频PCB学习资料

高频PCB学习资料…

查看全部问答∨

怎么把系统外界模块的驱动加到WinCE操作系统中?

我主板的操作系统准备用WinCE 6.0,外接了一个GPRS模块,还有几个其他模块。怎么把外接模块的驱动加到WinCE中啊?是像XP中那样安装呢?还是必须在定制系统的时候就把驱动程序加入进去呢?如果是后者,定制过程中,怎么把驱动加进去啊?我现在的驱动 ...…

查看全部问答∨

请问plaform builder的功能?

我不是很理解: 1.平台的定制; 2.驱动程序的开发. 我很想知道, 对于OS开发, 比方说, 如果我要改其中的部分网络协议, 如IP协议中的一部分, 此时会用到platform builder吗? 如果有的话, 它起的是什么作用呢?…

查看全部问答∨

编译器的工作问题

问个基本问题:以S3C44B0X为例,在ADS编译环境下,编译器编译程序后自动将程序的代码和数据分开。代码和数据都放在FLASH里,。在启动程序44BINIT.S里,将数据段从FLASH拷贝SDRAM里,代码仍然留在FLASH里。 请问是这样的不? …

查看全部问答∨

MAX2的BANK3引脚能不能直接接上拉电阻拉到5V?

MAX2的BANK3引脚能不能直接接上拉电阻拉到5V?如果可以,需要特殊设置吗?我现在有2个脚,通过一上拉电阻拉到了5V,但是用万用表测,我没用这两个脚,但电阻另一端自动降到3.3V了,这是怎么回事?芯片烧了?…

查看全部问答∨

51键盘扫描问题

我的学习板上是3*3的键盘,数码管位选是直接接P2口的,我的目的是按几数码管就显几,不按的时候就不显,但现在发现我按几是显示了几,但不按的时候数码管还是有显示 程序如下,看看问题出在哪,有位高手说要用定时动态扫描,能不能具体说下 #incl ...…

查看全部问答∨

试用报告4-关于人脸检测的具体操作步骤

前些帖子介绍了人脸检测的一些相关的资料,下面这个帖子就具体步骤进行介绍: 要实现人脸检测必须从硬件和软件入手: 硬件方面: 1、在开始菜单中启动xilinx platform studio 11.1(因为本实验板附带的edk就是11版本的,大家可以到xilinx官网中 ...…

查看全部问答∨

相位差方波如何实现

我想实现如下波形 下载 (42 KB) 2010-11-21 09:37 看了版主的博文: http://blog.ednchina.com/STM32/352180/message.aspx 这个用中间对齐计数模式,只能实现2路相位差的PWM波 而http://blog.ednchina.com/STM32/ ...…

查看全部问答∨

为什么要删我的帖子的!!!!!!!!

                                 我看见网上有公司能破解STM8了,我也正在用STM8,所以想在这问一下,今天发现帖子被删除了…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved