Ⅰ 51单片机ram不够用,怎么优化程序
1.肯定的,嵌套越多,要压栈保存的信息就越多,占用的RAM就越多了,对51来说,最多就是CPU内256字节的RAM。
2.是的。
3.没用过这芯片……我用的最多的是AVR
4因为你定义了一个pagebuf[512],512字节啊!51单片机的data撑死才256字节(还没算压栈保存数据需要的RAM),所以编译器自动将这个数组放在了XDATA中。
Ⅱ 单片机内存不够,应该外扩还是内扩
你所说的“内存”是一个奇妙的概念,具体看你指的是 RAM/数据存储器 还是 ROM/程序存储器……
所谓内扩,也得有内部潜力才能挖掘,比如很多单片机片内其实有多个可用的RAM段,很多初学者并不知道如何全部利用。
外扩会使得设计变得复杂、空间占用增多、BOM成本上升,所以应当经过慎重考虑。先确定你的设计是不是真的需要那么多资源、同系列单片机是否有资源更多的型号。
存储器不足,无非两个方式,一个开源,一个节流。节流主要是通过充分的优化,例如减少额外的库函数调用、程序代码充分优化、减少无用的缓冲区、精确计算按需分配、精打细算而不是豪爽地一掷千金……
Ⅲ 单片机的ROM和RAM运行时的区别与联系
单片机FLASH主要用作程序存贮器,就是替代以前的ROM,最大的有有点是降低了芯片的成本并且可以做到电擦写,目前市场上单片机的FALSH寿命相差比较大,擦写次数从1000~10万的都有,但存储时间可以保证40年,在选用时要注意.还有一些廉价的单片机为了集成可掉电的数据存储器,没有选用价格昂贵的EEPROM,而用FALSH来做的,但要注意其寿命最多就10万次,而且擦写不能字节擦写,这要注意使用的场合其寿命是否满足要求.
RAM是数据存储器,跟计算机里面的内存差不多,主要是用来存放程序运行中的过程数据,掉电后就会丢失之前的数据,所以程序在上电时需要进行初始化,否则上电后的数据是一个随机数,可能导致程序奔溃.
ROM就是程序存储器,掉电后数据不会丢失,但在程序运行过程中其数据不会改变.早期的单片机的ROM因为擦写修改麻烦,价格昂贵或者价格低廉的OTP型无法修改数据等原因已经被现在的FLASH存储器替代了.因为FLASH的擦写很容易,现在的部分单片机支持在线内部编程,通过特定的程序执行方式可以修改FALSH的内容,而实现在线修改程序存储器.这与上面说的程序存储器的内容在运行的时候不可被改变是不冲突的,因为在程序正常运行时,其内容不会改变,只工作在只读状态下的.
Ⅳ 单片机的RAM和ROM是什么意思
打个比方吧!假如要搞个什么活动,有两块地方,一个叫ROM.一个叫RAM,和一个老大叫cpu。其中人们规定rom这个地方的所有东西你老大cpu都不能改动它,里面放着活动的方案,也就相当于你编写的程序,cpu必须要按照这个方案去主持搞这个活动。这个地方允许放一些其它东西,〔单片机中也就是数据!〕。当这个活动开始的时候,老大cpu就会到rom这里复制里面的全部内容〔有特别标明的除外,一般是不常用的数据〕放到RAM里面运行。当需要用要标明的不常用数据时,老大根据数据的编号,也就是地址,去读回来那个数,再继续运行!当你要终止这次活动时,ram里面的东西,就全部扔掉,不保留。下次再需要的时候,再去rom这个地方复制回来,从新开始运行。
寄存器,要说功能的话,每个寄存器都有它的功能!建议你搜索一下单片机寄存器功能,有很多的出来。他们介绍的都很好!在这里我就不说了打字累啊。呵呵
Ⅳ 单片机ROM 和RAM 的本质区别是什么,在执行中各起什么作用
ROM是放程序的,单片机工作是只能对ROM读,RAM即可读也可以写,单片机运行时中间变量,程序运行结果都放在RAM里的。RAM比ROM小很多,用的时候须格外珍惜。
Ⅵ 请教,单片机RAM不够用该如何解决
1、程序优化:
①、将固定的代码数组等,存到ROM。(51单片机用 code表示存到 ROM)
②、压缩多余缓冲区,如数组长度根据需求来定。不要直接a[100]一棍子打死。
③、合理分配变量数据类型,如计数值在0-100内的数,就没必要用 uint 了,使用 uchar 就够了。只要两个状态的标志位,用 bit 就行了,不要直接 uchar。
④、可以用逻辑运算的,就不要采用算术运算。如 a/8,可以写成 a>>3,当然 a不是浮点型数据才行。而a*2则是 a<<1;而a%4,可以写成 a&0x03;
……
……
……
2、扩大RAM
①、买个同系列高RAM区间的单片机。
②、买个同系列高RAM区间的单片机。
③、买个同系列高RAM区间的单片机。
Ⅶ 单片机内部RAM和内部ROM的使用特点
RAM读写快速,断电无法保存。ROM写周期较慢,好处是断电不丢失,即所谓非易失性存储器,ROM有早期的EPROM需要紫外线擦写,后来EEPROM电擦写、最近的FLASH“快速电擦写”——当然速度还是不如RAM快。ROM有擦除寿命1万到10万次。
还有一种是兼具RAM和ROM特点的“铁电存储器”——FRAM,也属非易失性存储器,但拥有RMA般的读写速度。但目前价格较高。
Ⅷ 关于单片机RAM和ROM的问题
回答:
1
RAM分为工作寄存区,位寻址区,数据缓冲区,和
特殊功能寄存器区
在RAM中的临时数据
一般为采集到的数据,如空调收集到的温度数
据,
用户的输入,运算的数据等.程序员写好的代码烧进去的数据不在这里.
2
ROM是程序存储器(Program
memory)主要用于存放经调试正确的应用程序,数据和表格.程序员写的程序是其中一部分