上一文中扩展了单片机的程序存储器,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芯片属于高速信号,自己布板就省了,还是玩泥巴去了。。。

51单片机的c语言外部扩展,51单片机资源扩展:扩展片外RAM相关推荐

  1. 51单片机的c语言外部扩展,教你给51单片机扩展片外RAM

    上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB.其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连128B都不到,所以不得不扩展片外RAM ...

  2. 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]

    /***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...

  3. c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc

    -- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...

  4. 单片机 rs232 c语言,完全手册 51单片机C语言开发详解系列之第8章 串口通讯实战—RS232...

    完全手册 51单片机C语言开发详解系列 技术凝聚实力 专业创新出版 第8章 串口通讯实战-RS232接口电路与软件设计 本章主要通过实际的例子讲解AT89S51单片机的RS232串行通讯接口设计. 随 ...

  5. 51单片机点阵c语言程序,使用51单片机点亮我们的点阵灯

    通过前面我们都知道点亮我们的不管是点阵,数码管,还是LED灯,不仅要熟悉我们的代码还要会看我们的原理图和真值表,所以我们如果真的要写代码倒是其次的,首先我们得学会看我们的原理图和真值表,但是认识那个我 ...

  6. 51单片机生成C语言矩形波,基于51单片机产生占空比和频率可调的方波信号发生器(附全部代码)...

    本帖最后由 suqianfu 于 2020-4-11 22:29 编辑 大佬,我添加了一点注释,不知道理解得对不对 #include                                  ...

  7. 51单片机微波炉c语言程序,基于51单片机的微波炉控制C源程序.doc

    #include #define GET_KEY P1 #define GET_LED P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned ...

  8. 51单片机用c语言倒计时程序,51单片机实现100以内倒计时,求大佬指点。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define uchar unsigned char #define uint unsigned ...

  9. 51单片机频率计c语言程序,基于51单片机的频率计程序

    这个是电路原理图 *********************************************** **************入门级频率计设计****************** ** ...

最新文章

  1. KD树——k=1时就是BST,里面的数学原理还是有不明白的地方,为啥方差划分?...
  2. 第二阶段_第一小节_小知识
  3. 树莓派AI视觉云台——1.树莓派Pi3简介
  4. 将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
  5. 大数据时代,你的信息安全谁负责?
  6. 新的开始 | Arthas GitHub Star 破万后的回顾和展望
  7. jQuery 时间获取扩展
  8. 微信投票时间是在服务器上的吗,如何微信设置投票,微信投票活动时间设置小技巧...
  9. 哪些东西影响计算机运行速度,影响电脑运行速度的因素主要的哪些?
  10. 深入理解Linux内核通知链(Notifier)
  11. 基于AM5728 linux开源ethercat运动控制一体机解决方案
  12. 遗传图谱的可视化(比mapchart更强大)
  13. Python自动化办公:word文件操作教程
  14. 【软件推荐】使用手机和平板作电脑副屏扩展
  15. 使用u盘PE系统重装Windows操作系统
  16. 水平垂直分割详细介绍
  17. 《自卑与超越》阅读笔记与思考
  18. 【LINGO】lingo 软件简介
  19. 【愚公系列】2023年05月 攻防世界-Web(Confusion1)
  20. 基于机器学习的阿里智能助理在电商领域的架构构建与实践-CSDN公开课-专题视频课程...

热门文章

  1. 泰然金融总裁吴素春:网贷行业的价值不应该被全盘否定
  2. oracle如何对数据库进行备份,对Oracle数据库进行备份的两种方法详解
  3. Android 显示手机电池的当前电量
  4. 海信信号机后台服务器配置,海信电视信号源设置方法-电视机信号设置方法
  5. js的rc4加密与PHP的rc4加密
  6. ElementUI Tag标签的一些问题及解决方法
  7. android台湾安卓中文网,安卓中文网
  8. php使用正则表达式获取域名,php 域名正则表达式
  9. sqoop搭建配置使用
  10. 安装aptitude后apt实效