RAM在单片机里面有哪些作用
可以直接访问任一个存储单元,只要知道该单元所在记忆行和记忆列的地址即可。
存储器可分为随机存取存储器(RAM)和只读存储器(ROM)两大类。随机存取存储器(RAM)既可向指定单元存入信息又可从指定单元读出信息。任何RAM中存储的信息在断电后均会丢失,所以RAM是易失性存储器。
ROM为只读存储器,除了固定存储数据、表格、固化程序外,在组合逻辑电路中也有着广泛用途。
随机存储用途
SRAM:静态随机存取存储器采取多重晶体管设计,通常每个存储单元使用4-6只晶体管,但没有电容器。SRAM主要用于缓存。
DRAM:动态随机存取存储器中每个存储单元由配对出现的晶体管和电容器构成,需要不断地刷新。
FPM DRAM:快速页模式动态随机存取存储器是最早的一种DRAM。在存储器根据行列地址进行位元定位的全程中,FPM DRAM必须处于等待状态,数据读取之后才能开始处理下一位数据。向二级缓存的最高传输速率约为176MB每秒。
EDO DRAM:扩展数据输出动态随机存取存储器在处理前一位数据的过程中无需全程等待,就可以开始处理下一位数据。只要前一位数据的地址定位成功,EDO DRAM就开始为下一位数据寻址。它比FPM快5%左右。向二级缓存的最高传输速率约为264MB每秒。
SDRAM:同步动态随机存取存储器利用了爆发模式的概念,大大提升了性能。
扩展资料
当电源关闭时,RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM的工作特点是通电后,随时可在任意位置单元存取数据信息,断电后内部信息也随之消失。
随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。
随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。
参考资料来源:百度百科-随机存取存储器
参考资料来源:百度百科-随机存取
为了对RAM单元存取8位二进数,当然也的和ROM一样用“地址”来标示它的具体位置假如某单片机有1K(1024)RAM,它的地址也是从0000到1024,或16进数的0000H到03FFH,可见和ROM的地址是一样的,不会混淆不清?不会,因为读ROM是由单片机的程序指针或转移指令或查表指令进行,而这些指令是不会进入RAM区的,读写RAM是另外的数据传送指令,也不会进入ROM区,这点也是和电脑不同之处,后者程序和数据都在内存条里面,地址不同,如果窜位了就会造成不可预见后果。单片机的这种存储器结构也称为哈佛结构。
RAM在单片机里的用途,主要是存放临时数据,例如用单片机测温,每秒测1次,显示1分钟的平均值(1分钟更新一次);我们先通过传感器,放大电路,A/D转换,把温度这个模拟量转变为成比例的二进数,然后每秒钟1次把数字量通过输入口顺序存入到单片机的RAM中,然后对他们进行两两求和再平均的计算(题外话:要单片机进行“除法“运算比较麻烦,例外的是除以2,4,8。。。却非常简单!----运用“右移”指令1,2,3次便可)最后的数值显示出来,然后把这60个存储单元统统写0清除旧数据,下次又如此这般地循环进行。。。
贡献文档:百度文库《吴鉴鹰单片机项目实战精讲》
单片机开发板参考:吴鉴鹰单片机开发板(有详细的视频教程,板子功能全面,适合学习使用
前128单元具体分为:
1.工作寄存器区:共4个组,每组为8个存储单元,即00H-07H,08H-0FH,10H-17H,18H-1FH,具体选择哪一个由程序状态字(PSW)中的RS1和RS0的组合决定(在此我就不展开了,呵呵……)
2.位寻址区:20H-2FH,共16个单元,每一位可以进行位寻址(16*8=128个位地址),就是每一个触发位,就是bit可以寻址
3.便笺区:从30H-7FH,共80个单元,用于存放用户数据或作堆栈区使用。
4.从80H-FFH为专用寄存器占用,其中还离散的分布SFR(21个特殊功能寄存器)
参考资料来源:吴鉴鹰吧
贡献文档:百度文库《吴鉴鹰单片机项目实战精讲》
参考实例:吴鉴鹰单片机开发板
二、256B
其中00H~7FH
可分为3个区域:
00H~1FH 是通用寄存器区
20H~2FH 是位寻址区
30H~7FH 是用户RAM区
80H~FFH是特殊功能寄存器区
三、AT89S51单片机的ram,只有128字节,地址范围:00H~7FH。
SFR不是RAM,是特殊功能寄存器,地址范围:80H~FFH,SFR在其中离散分布着。
AT89S52单片机的ram,就有256字节,地址范围:00H~FFH。
SFR,特殊功能寄存器,仍然在地址范围:80H~FFH。
两者的地址重叠了,区别方法如下:
对80H~FFH直接寻址,就是读写SFR,特殊功能寄存器;
对80H~FFH间接寻址,就是读写RAM。
先说说这几个词是什么意思:
1,DATA,51的内部RAM,只有128B(字节)大小,不管是最新的什么增强型单片机;
2,XDATA,外部RAM,只能使用MOVX寻址
3,CODE,代码区,即是你的代码的大小,AT89C51为4K,C52为8K等,增强型的有更多的选择。
然后说明一下,几种RAM的区别:
1,DATA,也是上面1提到的DATA RAM,占51的128B;
2,IDATA,大小也为128B,与DATA构成256字节的内存(如AT89C52)
3,PDATA,外部RAM的前256B(就是一个页的大小),是XDATA的一部分;
4,XDATA,外部RAM
所以你的那个单片机的1280B,其实组成为:
DATA :128B
IDATA:128B
XDATA:1024B
所以你的问题,“使用片内RAM”打勾只是软件仿真用的;你的XDATA用了758B,说明你特意用XDATA关键字定了这么大的内存,比如大数组 或者内存模式时,使用了lager模式,那么编译器会自动把超出的部分放到XDATA里,我猜你应该是这里选择了lager模式,不过你的内容这么大,也 只能选择lager模式。