历史上的今天
今天是:2024年11月19日(星期二)
2018年11月19日 | 教你给51单片机扩展片外RAM
2018-11-19 来源:eefocus
上一文中扩展了单片机的程序存储器,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语言版本:

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

后记:
本来想自己扩展ram的,可是ram芯片属于高速信号,自己布板就省了,还是玩泥巴去了。。
史海拾趣
|
电气设备的任何部分与大地(土壤)间作良好的电气连接称为接地。 接地是确保电气设备正常工作和安全防护的重要措施。电气设备接地通过接地装置实施。接地装置由接地体和接地线组成。与土壤直接接触的金属体称为接地体;连接电气设备与接地体之间的导 ...… 查看全部问答> |
|
这是一个巧合,以前我从不把两个电池并联使用,从来都是串联!直到有一天,我看别人的文里面有个电路图,图里有两个电池,电池是准并联的,因为有两个二极管!电池并联的情况,如下图1 &n ...… 查看全部问答> |
|
Power Architecture Study Notes Capture 0 A big picturePPC function category:1. Interger (Fixed-point) Facility, using 32 GPRs(General Purpose Registers), each register have 32/64 bits for different mode. 2. Floating-point Facility, using 32 FPRs (Floating- ...… 查看全部问答> |
|
有哪位朋友开发嵌入式产品时用过讯飞公司的s3011语音芯片,本人在使用过程 中遇到不少问题,有哪位朋友有经验帮助咨询一下,谢谢了。… 查看全部问答> |
|
招聘兼职人员做视频音频软硬件开发,要求从事过此方面的工作,如做过MP3、MP4、电视机顶盒等的开发,有意者请将个人简历发送至邮箱nuaacom@163.com,符合我们意向的人员我们将与您联系,谢谢!… 查看全部问答> |
|
写了个IIC键盘驱动有些错误,大牛们过来看看能否解决,同时功能上是否能实现! 附件里面我放了源代码,同时也将源代码帖到下面: /*IIC键盘程序:CPU是S3C2440,嵌入式操作系统是linux2.6.13,IIC键盘芯片是ZLG7290(周立功的片子);硬件中断连接方法, 将ZLG7290的INT按键中断引脚接GPF2(将GPF2配置成中断功能EINT2),当有按键按 ...… 查看全部问答> |
|
想跟大侠们请教一个PXA270+uboot+wince5.0问题,现在uboot已经调试好了,uboot通过tftp下载NK.nb0到sdram中,运行NK时没有串口信息输出。经过“点灯法”发现程序能运行完src\\kenel\\oal\\startup.s,此后跳转到kernelstart(位于WINCEROOT\\Private\ ...… 查看全部问答> |




