51单片机资源扩展:扩展片外RAM

发布者:中和子最新更新时间:2016-05-27 来源: eefocus关键字:51单片机  资源扩展  扩展片外RAM 手机看文章 扫描二维码
随时随地手机看文章
    51单片机资源扩展:从片内ROM跳转到片外ROM 一文中扩展了单片机的程序存储器,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,查看定义:

 

#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仿真图:

51单片机资源扩展:扩展片外RAM

上段去年用汇编写的访问ram的代码:

 

ORG  0
SJMP  START
ORG  10H
START:
;1456是要访问的内存地址
MOV  DPTR,#1456H;
MOV  A,  #0FFH;
;0xFF移入[1456]
MOVX @DPTR,A;

CLR  A;
MOVX  A, @DPTR; 
;对外部RAM 1456H读出数据到A
NOP
MOV  A, #0A0H;
INC  DPL
MOVX @DPTR,A; 
;将0xA0写入外部RAM 1457H
NOP
;从外部RAM [1457]H读出数据到A
MOVX  A, @DPTR; 
NOP
SJMP START
END
c语言版本:

 

 

#include 
#include 

#define OFFRAMBASE 0x100

unsigned char xdata offRamVal0 _at_ OFFRAMBASE*2;
unsigned char xdata offRamVal1 _at_ 0x00;
int main()
{
	unsigned char idata index = 0;
	offRamVal0 = 0xAA;
	offRamVal1 = 0xCC;
	for(index=0;index<0x10;index++)
	{
		XBYTE[index+OFFRAMBASE] = 0x55;	
	}		
	return 0;
}
最后看下程序运行后6264内部存储的数据:
0000: CC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0100: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 | UUUUUUUUUUUUUUUU
0110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0120: 00 00 00 00 00 00 00 00 00 00 00
01E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
01F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0200: AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
 
关键字:51单片机  资源扩展  扩展片外RAM 引用地址:51单片机资源扩展:扩展片外RAM

上一篇:51单片机的特殊功能寄存器SFR
下一篇:51单片机ROM与RAM

推荐阅读最新更新时间:2024-03-16 14:55

基于GPRS的51单片机固件升级系统设计
引言 嵌入式技术的迅速发展使得越来越多的嵌入式终端设备应用在人们的日常生活中,其中不乏应用在一些偏远地方,甚至工作在无人看管的场合下。人口比较稀少的地方,由于基站分布比较分散,加之人口比较稀疏,基站维护等操作常难以执行,这就需要在某些地方放置网络信号测试仪检测该地区的通信信号质量,并将该信息反馈到远程服务器。同时,由于硬件系统程序设计固有的局限性,固件程序的升级在所难免。针对实际情况,本文开发了网络信号测试仪的单片机远程升级系统。 1 系统硬件设计 整个系统以Silicon Labs公司推出的混合信号片上系统型单片机C8051F340作为核心控制单元,采用GSM/GPRS/EDGE无线模块MC75作为与远程服务器的通信模
[单片机]
基于GPRS的<font color='red'>51单片机</font>固件升级系统设计
51单片机8255驱动C程序
/*---------------------------------------------------------------------------------------------------------------- 库文件名称:driver8155.h 功能描述:驱动8155,不需要了解8255的工作原理,透明操作8255的三个输入输出口PA、PB、PC 读A口只需要调用rd_PA,写则需要调用wr_PA;B、C操作也一样 全局变量: IO_flags,在其它程序中不能对其改写 特殊说明: 无 //---------------------------------------------------------
[单片机]
8051单片机的通信方式有哪些
介绍:串行口是单片机与外界进行信息交换的工具。 8051单片机的通信方式有两种: 并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。参看下图: 《单片机串行通信》 《并行通信》 串行通信的方式: 异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下: 在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示字符,则字符能一个接一个地传送。 在异步通信中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式能由通信的
[单片机]
80<font color='red'>51单片机</font>的通信方式有哪些
如何将UCOSII移植到51单片机
一、准备工作 1. 开发环境: Keil C集成开发环境 2. 源代码:UCOSII的源代码,网上可以自己下载 3. 文件分析: 1)UCOSII文件中与处理器无关的文件: OS_CORE.C OS_FLAG.C OS_MBOX.C OS_MEM.C OS_MUTEX.C OS_Q.C OS_SEM.C OS_TASK.C OS_TIME.C UCOS_II.C UCOS_II.H 以上这些文件在c51移植过程中只需给函数加上可重入性即可,即在每个函数后面添加关键字:reentrant 2)与应用相关的文件: INCLUDES.H——其中包含51单片机头文件和相关应用头文件 OS_CFG.H——这个文件对于要应用系统中的相关工
[单片机]
如何将UCOSII移植到<font color='red'>51单片机</font>上
电子车速里程表的51单片机实现方案
1 概述 传统的汽车转速里程表的功能有两个,一是用指针指示汽车行驶的瞬时车速,二是用机械计数器记录汽车行驶的累计里程。现代汽车正向高速化方向发展,随着车速的提高,用软轴驱动的传统车速里程表受到前所未有的挑战,这是因为软轴在高速旋转时,由于受钢丝交变应力极限的限制而容易断裂,同时,软轴布置过长会出现形变过大或运动迟滞等现象,而且,对于不同的车型,转速里程表的安装位置也会受到软轴长度及弯曲度的限制。凡此种种,使得基于非接触式转速传感器的电子式转速里程表得以迅速发展。 2 里程累计实现原理 车速里程表的速比表示的是:车速里程表转轴(软轴)在汽车行驶一公里时所转过的转数。 基于单片机的车速里程表采用霍尔型非接触式转速传感器。这种车
[单片机]
电子车速里程表的<font color='red'>51单片机</font>实现方案
基于51单片机的鞋套机自动测试系统
随着SMT技术在计算机、网络通信、消费电子以及汽车电子等产品中的广泛应用,电子产品的装配趋于复杂化、高精度化、密集化和多功能化,正确的测试策略可以帮助生产厂家提高效率、制造出合格的产品;同时,在产品设计、设备投资、制造及质量保证过程中引入测试还能有效地降低成本。因而,测试已经成为产品设计制造过程中的不可或缺的重要环节。本文主要针对鞋套机控制板电路自动测试系统的设计做了详细的介绍。 1 测试系统的硬件设计 1.1 测试系统的原理框图 本测试系统分两大模块组成:上位机和下位机。上位机主要指的是PC机,在PC机上用VB语言编辑一个操作界面,操作界面包括有启动命令按钮、输入信号的实时状态、状态指示灯、记录数据窗口。下位机指的主要是
[单片机]
基于<font color='red'>51单片机</font>的鞋套机自动测试系统
I2C总线的工作原理与在51单片机中的应用
I2C总线的工作原理与应用 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如 电源 和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。 1 I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了 电路 板的空间和芯片管脚的数量,降低了互联成本。总线的长
[单片机]
I2C总线的工作原理与在<font color='red'>51单片机</font>中的应用
采用MXT8051单片机实现基站温控仪的设计
引言 移动基站分布在全国各地,覆盖面广,各地气候差异大。解决好散热问题,是基站正常运作的关键因素之一。本文介绍的温控仪,利用温度传感器采集信号,然后通过单片机进行A/D转换、处理、运算得到室内外温度,并且根据当前室内外温差,计算出风机风速。然后利用PWM方式控制可控硅对交流220V斩波,实现风机风速调制。从而实现了利用自然冷源达到降低基站内部温度的目的。 系统设计 本温控仪是以MXT8051单片机为核心,整个硬件系统(如图1)分为温度信号采集、显示、键盘、控制输出、通信接口和存储模块。该仪表工作流程是:单片机通过集成的A/D采样室内室外温度,根据温差调制风机风速。键盘部分实现对温控仪参数的设置,如风机启动温度、停止温度等参数。
[单片机]
采用MXT80<font color='red'>51单片机</font>实现基站温控仪的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved