51单片机的c语言外部扩展,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芯片属于高速信号,自己布板就省了,还是玩泥巴去了。。。
51单片机的c语言外部扩展,51单片机资源扩展:扩展片外RAM相关推荐
- 51单片机的c语言外部扩展,教你给51单片机扩展片外RAM
上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB.其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连128B都不到,所以不得不扩展片外RAM ...
- 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]
/***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...
- c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc
-- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...
- 单片机 rs232 c语言,完全手册 51单片机C语言开发详解系列之第8章 串口通讯实战—RS232...
完全手册 51单片机C语言开发详解系列 技术凝聚实力 专业创新出版 第8章 串口通讯实战-RS232接口电路与软件设计 本章主要通过实际的例子讲解AT89S51单片机的RS232串行通讯接口设计. 随 ...
- 51单片机点阵c语言程序,使用51单片机点亮我们的点阵灯
通过前面我们都知道点亮我们的不管是点阵,数码管,还是LED灯,不仅要熟悉我们的代码还要会看我们的原理图和真值表,所以我们如果真的要写代码倒是其次的,首先我们得学会看我们的原理图和真值表,但是认识那个我 ...
- 51单片机生成C语言矩形波,基于51单片机产生占空比和频率可调的方波信号发生器(附全部代码)...
本帖最后由 suqianfu 于 2020-4-11 22:29 编辑 大佬,我添加了一点注释,不知道理解得对不对 #include ...
- 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 ...
- 51单片机用c语言倒计时程序,51单片机实现100以内倒计时,求大佬指点。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define uchar unsigned char #define uint unsigned ...
- 51单片机频率计c语言程序,基于51单片机的频率计程序
这个是电路原理图 *********************************************** **************入门级频率计设计****************** ** ...
最新文章
- KD树——k=1时就是BST,里面的数学原理还是有不明白的地方,为啥方差划分?...
- 第二阶段_第一小节_小知识
- 树莓派AI视觉云台——1.树莓派Pi3简介
- 将ABAP On-Premises系统连接到中央检查系统以进行自定义代码迁移
- 大数据时代,你的信息安全谁负责?
- 新的开始 | Arthas GitHub Star 破万后的回顾和展望
- jQuery 时间获取扩展
- 微信投票时间是在服务器上的吗,如何微信设置投票,微信投票活动时间设置小技巧...
- 哪些东西影响计算机运行速度,影响电脑运行速度的因素主要的哪些?
- 深入理解Linux内核通知链(Notifier)
- 基于AM5728 linux开源ethercat运动控制一体机解决方案
- 遗传图谱的可视化(比mapchart更强大)
- Python自动化办公:word文件操作教程
- 【软件推荐】使用手机和平板作电脑副屏扩展
- 使用u盘PE系统重装Windows操作系统
- 水平垂直分割详细介绍
- 《自卑与超越》阅读笔记与思考
- 【LINGO】lingo 软件简介
- 【愚公系列】2023年05月 攻防世界-Web(Confusion1)
- 基于机器学习的阿里智能助理在电商领域的架构构建与实践-CSDN公开课-专题视频课程...