单片机c语言访问片外存储器,教你给51单片机扩展片外RAM
原标题:教你给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语言版本:
最后看下程序运行后6264内部存储的数据:
后记:
本来想自己扩展ram的,可是ram芯片属于高速信号,自己布板就省了,还是玩泥巴去了。。。
本文章来源网络,如果原作者不支持咱们转发,请联系删除,谢谢!
技术源于积累,成功来自执着返回搜狐,查看更多
责任编辑:
单片机c语言访问片外存储器,教你给51单片机扩展片外RAM相关推荐
- 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版
原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...
- 51单片机的c语言外部扩展,教你给51单片机扩展片外RAM
上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB.其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连128B都不到,所以不得不扩展片外RAM ...
- c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...
- 第11章 UART 串口通信(手把手教你学51单片机pdf部分)
手把手教你学51单片机-C语言版.pdf
- 手把手教你学51单片机——函数进阶与按键
目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...
- 51单片机的c语言外部扩展,51单片机资源扩展:扩展片外RAM
上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB.其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连128B都不到,所以不得不扩展片外RAM ...
- c语言T1中断程序编写步骤,用51单片机中断编写的4x4键盘程序
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章 用51单片机中断编写的4x4键盘程序 作者:未知 来源:山涧一溪流 点击数:- 更新时间:2014年06 ...
- 【手把手教你学51单片机】中断的优先级
注:本文章转载自<手把手教你学习51单片机>!因转载需要原文链接,故无法选择转载! 如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小 ...
- 【手把手教你学习51单片机】74HC138 三八译码器的应用
注:本文章转载自<手把手教你学习51单片机>!因转载需要原文链接,故无法选择转载! 如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小 ...
最新文章
- 关于acm的新手一些问题
- 散列表的设计与实现_python基础之字典与集合实现
- 【编译原理】关于NFA和DFA-集合定义的探索
- 怎么批量抠复杂的图_怎么用手机修图,抠图、拼图,证件照制作?
- Excel中去掉单元格中间的空格
- linux 中~$和/$的区别?
- Pytorch高阶API示范——DNN二分类模型
- Java:键盘输入一个小数,输出其整数部分
- 掀开图片显示介绍的css效果
- 推荐系统中稀疏特征 Embedding 的优化表示方法
- OpenStack安装流程(juno版)- 添加镜像服务(glance)
- 硬件安全模块- HSM
- 用正则表达式抓取网页图片
- 多模态算法在视频理解中的应用
- win10 6种截图方法 简介
- 训练记录番外篇(2):2022 ICPC Gran Premio de Mexico 2da Fecha
- Android Settings 应用二 获取应用消耗的流量
- 移动商务,还是短信商务?
- 桌面移到D盘根目录下还原的办法
- 微信小程序监听服务器发送消息,微信小程序实时聊天WebSocket