单片机RAM这样用

发布者:忙中取乐最新更新时间:2015-07-30 来源: eefocus关键字:单片机  RAM 手机看文章 扫描二维码
随时随地手机看文章
任何一本单片机的数据都不会不提存储器的问题,但是没有基本能说的让人一下就领悟过来。菜鸟时候的特权也是一知半解的过来的,我想如果读51的存储器(主要是RAM)做一下归纳,列一张表,我想一定会让初学者少走很多弯路,希望这张表还有下面的一些个人的经验只谈能给你一些启迪。也许有些地方说的不是很专业,或者说是表达不太合适,很欢迎各路高手拍砖指正。EDN这个大家庭就是让我们互相学习共同进步的乐土!
 
51单片机存储区分配如下:

 

存储区
地址范围
功能说明
 
 
 
 
内部RAM
(256Byte)
00H-1FH
内部使用DATA区,四个工作寄存器组(4*8=32Byte),用于内部参数传递
20H-2FH1
 
BDATA区,DATA 区的16 个字节的可位寻址区
30H-7FH2
用户可用非位寻址DATA区,可在一个周期内直接寻址
80H-FFH
IDATA区,用户可用的内部RAM 区的高128 个字节,必须采用间接寻址
80H-FFH3
可以进行位寻址的特殊功能寄存器(SFR)
 
外部扩展RAM
(最大64KByte)
00H-FFH
PDATA区,外部存储区的256 个字节通过P0 口的地址对其寻址,需要两个指令周期
00H-FFFFH4
XDATA区(外部存储区),使用DPTR 寻址
ROM
(最大64KByte)
00H-FFFFH
CODE区(程序存储区),使用DPTR 寻址

 

 
   对上表的一些说明:
1编程定义为: uchar bdata test;
   所谓的可位寻址,如果你这么用:if(test^0)…else…;我的经验告诉我编译出来的程序会出错的。
我们一般可以这么用:
先做一个位定义:sbit test0 = test^0;
然后再程序中使用:if(test0)…else…;表示判断test的第0bit位的值,然后执行相应程序。其它位的用法类似。
2编程定义为: uchar data test;
   因为data区时直接存取存储,也就是说它在编程的时候最快的RAM区,所以我们往往把使用最频繁或者说对实时性要求高的数据都定义在data区(keil C中是可以设置优先存放RAM区的)。
   Data区包括了4个工作寄存器组(32Byte)、位寻址区(16Byte)、用户data区(80Byte)。其实位寻址区也应该归类到用户可用data区中,所以一般用户可以使用的直接寻址的RAM为96Byte。而实际上,一种比较极端的情况,因为单片机工作时只使用4组工作寄存器组中的一组,我们可编程的data区可以有120Byte(我在keilC下编译测试的结果是,只有在不使用bdata的情况下才可以定义120Byte的data区数据)。
3编程定义为: uchar idata test;
如果你没有完全弄懂一个MPU的SFR,那么只能说你没有弄懂这个MPU了。所以这里不细说单片机的SFR,只提一点,它的地址是和IDATA区重叠的,单片机内部时通过区分所访问的存储区来解决地址重叠问题的,因为IDATA 区只能通过间接寻址来访问。在我们的实时性要求不那么高,或者DATA区不够用的情况下我们就应该启用IDATA区。
4编程定义为:uchar   xdata    LD  _at_   0x7f;
也可以这么使用:(需包含头文件absacc.h)
A = XBYTE[0x8100]; //从地址8100H读一个字节
B = *((char xdata *) 0x0000); // 从地址0000H读一个字节
XBYTE[0x7500] = 0xf0; // 写一个字节到7500H
   P2和P0口为16bit的地址总线接口,P0口为数据总线口,数据和地址时分时传输的。
51单片机的最后一个存储空间为64K, 和CODE 区一样采用16 位寻址,属于外部数据存储区,即XDATA区。这个区通常包括一些RAM器件(如SRAM)或是一些需要通过总线接口的外围器件(特权在以前的BLOG里多次谈过这个扩展RAM的问题,这里也不多涉及了)。对XDATA的读写操作需要至少两个处理周期来装入地址,而读写又需要两个处理周期。
关键字:单片机  RAM 引用地址:单片机RAM这样用

上一篇:51手记之寄存器&寻址篇
下一篇:基于单片机设计的智能多路信号源

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

KEIL v3添加STC系列单片机库文件 方法+头文件库
增加一个单片机数据库,既可以选择STC单片机,又不影响原来数据库的使用。 操作步骤: 1.下载用于keil的STC数据库更名为STC.CDB。将文件夹中的文件放到相应的文件夹下,若没有STC文件夹,自己新建一个。或者拷贝到Keil/UV2目录下。(如果是Kile3则是UV3,Kile4则是UV4)。STC文件夹里包含各类的单片机型号有STC10 11 12 15 90 等···· 2.打开Keil文件夹下的TOOLS.ini文件,添加TOOLS.INI文件,添加STC.CDB路径。在 下面(也就是 上方)键入CDB0=UV2STC.CDB( STC ),然后保存退出即添加完毕。(如果是Kile3则是UV3,Kile4则是UV4
[单片机]
KEIL v3添加STC系列<font color='red'>单片机</font>库文件 方法+头文件库
ARM微控制器LPC210X的LCD接口技术
引言 Philips最近推出了其第一款基于ARM内核的控制器LPC210X,但由于LPC210X外部总线不开放,无法扩展内存、驱动液晶显示器等,给它的推广带来了一定的影响。笔者最近在一工控板项目中采用了该系列芯片,项目后斯应客户要求需对几个参量进行显示并扩展键盘,不得已之下,采用了CPLD,并利用了GPIO口模拟总线和液晶时序与点阵图形液日模块HS12864-16建立了连接。下面详细探讨包括该种连接的三种接口方式。 1 LPC210X的GPI0口和HS12864-16A介绍 LPC210X控制器包含LPC2104、LPC2105、LPC2106,除了片内静态RAM不同外,其他完全相同。该系列器件具有32个GPIO口(P0.0
[单片机]
单片机为核心处理器 无线解说器
无线讲解器通常用于工厂、博物馆、景区等室外空旷场所供参观介绍用,通过事先在场所安放无线发射模块,并控制发射模块的工作范围。听众到达景点后,手上的讲解器将自动接收各个地点的无线编码信号,经解码后即可将存储在SD卡中的语音播放,以便清晰地全程收听全部介绍内容。 1 系统总体构成 系统主要器件包括TFT触摸屏、STM32F103RCT6微控制器、SD卡、语音解码芯片VS1003、扬声器。STM32F103RCT6微控制器为系统终端的控制核心,通过它与手持式设备之间进行无线串口通讯,读取SD卡中的音频文件,控制VS1003解码读取的数据,实现声音的播放与控制,该系统主体结构如图1所示。 图1 系统设计框图 2 硬件电路控制
[单片机]
以<font color='red'>单片机</font>为核心处理器 无线解说器
一种三MCU系统的硬件实现
    摘要: 介绍以两片80C196KC为主处理MCU、一片89C51进行动态LED显示的三MCU系统。两80C196KC之间通过互访数据存储器进行数据交换,80C196KC与89C51的通讯使用串行口。     关键词: 单片机 多处理器 总线控制 存储器共享 MCS96系列单片机是16位单片机。运算速度高、I/O资源丰富、具有10位A/D转换器,特别适合于实时处理、实时控制的各类自动控制系统,如工业过程控制系统、伺服系统、分布式控制系统、变频调速电机控制系统等。在国内有成熟的开发系统和稳定的供货来源,相关资料也非常丰富,开发非常方便。    
[应用]
内存狂涨价:台湾南亚量产DDR3/4
内存价格持续上涨,主要是源头的三星、SK海力士、美光三大家DRAM颗粒供应严重不足,而且整个2018年都不会缓和。 其实在台湾还有一家DRAM厂商南亚科技,只是市场规模偏小而已。DRAM市场需求如此旺盛的情况下,南亚也积极动手了,首先已经开始量产20nm 4Gb DDR3颗粒,今年第四季度还会量产20nm 8Gb DDR4。 DDR4的时代为何还要大规模生产DDR3?主要还是DDR4产能即便再怎么扩充,也需要时间,一时半会不可能缓解,而在很多领域,DDR3仍然有很大的需求。 最近不少主板厂商还开始重新投产支持DDR3内存的H110、B150老主板,同样是需求。 另外,南亚还会将自己的8Gb DDR4颗粒带到服务器市场,因为那里的需
[嵌入式]
嵌入式DS80C320单片机软核设计
1 引言 在如今的快速嵌入式系统设计中,目前比较流行的方案是在FPGA内集成应用软件或是软IP平台,以简化工序、加速产品面市日程。为此,很多公司推出了自己的开发平台以及相关CPU的IP核,常见的为两种:一种是通用型CPU,如xilinx和altera公司的32位以及64位通用CPU核;还有就是专用型的,常见的为51系列单片机的CPU核,但是目前关于单片机的软核基本上都是8051的,其他的品种很少。而且8051的速度不是很快,在有些快速的控制场合(如利用单片机来作为usb2.0的控制部件)显得速度不足,比较著名的actel公司推出的Core8051,运行频率也只在40 MHz左右。本文介绍了一个非常高速DS80C320单片机软核
[单片机]
嵌入式DS80C320<font color='red'>单片机</font>软核设计
51单片机CO2检测显示程序解析
这是一款51单片机CO2检测显示程序资料,二氧化碳传感器MH-Z19模块的T(TXD)接单片机的RXD, R(RXD)接单片机的TXD,V+连接单片机5v正极,V-连接单片机的地(串口TTL通信就需要连接这四根线);测量电压选用5V;单片机型号STC89C52,液晶显示屏型号LCD1602,电路连接按照那个测试图的;串口通信波特率9600,注意晶振要是11.0592M,否则会引起通信失败;传感器上电需要预热3分钟。 #include“reg52.h” #include“stdio.h” #include“intrins.h” #include“lcd1602.H” #define uchar unsigned char #d
[单片机]
51<font color='red'>单片机</font>CO2检测显示程序解析
基于双口RAM的LonWorks智能通信节点设计
摘要:介绍一种基于双口RAM的LonWorks现场总线智能通信节点的设计方法,并给出详细的设计步骤、硬件及软件实现。通过此LonWorks智能通信节点,能够完成RS-232-C/RS-485标准与LonTalk协议间的转换提供RS-232-C/RS-485网络到LonWorks网络的接口,因此,具有很高的应用价值。 关键词:现场总线 LonWorks 智能节点 神经元芯片 双口RAM 引言 LonWorks(Local Operating Networks,局部操作网络)总线是由美国Echelon公司推出的一种现场总线技术。由于LonWorks控制网络的开放性、高速性和互操作性,它已广泛用于工业、楼宇、家庭、办公设备、交通
[传感技术]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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