⑴ 请教,单片机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区间的单片机。
⑵ 如何知道单片机rom 和ram够不够
rom就是放程序的,比如rom为4K,你编写的程序超过了4K,那这个肯定不行,必须在4K以内。ran就是内存,你的程序跑起来比较卡,就说ran或者cpu速度不够了。不过这些可以优化代码得到相应的缓解的,比如延时用定时器来代替。
⑶ 用单片机计算 内存不够
解决方案:
一、在原有的单片机上改动。
1、优化程序,有效果,但效果其实不大。
2 、自己扩展片外的RAM,一来是费硬件的钱,二来是电路要不停的飞线。
二、换一大内存的单片机。比如STC32F103C8T6,三个串口,16K的RAM。
三、减少串口对数据的接收量,比如只检查$GPRMC信息,提取到坐标后就把其他信息丢弃了。
⑷ 单片机RAM不够用怎么办
用的是panstamp NRG,上面集成了一块CC430F5137单片机,RAM为4kB,做一个数据测量系统,每天测量的数据都先存在RAM里,一天结束后上传pc,但是现有RAM不够用。
解决办法:
可以采用串行总线控制的EEPROM扩展。
⑸ ram 单片机片内ram不够用,怎么办
,很纳闷,那个程序keil编译结果显示code超过32k,77e58code大小也只有32k,可是烧片子居然,没事,程序还照样跑。
看来77e58果然超强啊! 答 1: 有问题的 答 2: 有什么问题的? 答 3: 不妨试试有两个建议:一是重新优化你的代码;二是条件允许的话外扩SRAM。 答 4: 77e58片内有1280字节的RAM 答 5: 我想问的就是可以从哪些方面进行优化?
不知道通常可以从哪些方面进行优化啊,有哪些技巧的啊? 答 6: 我早年使过7758,但是你最后描述的现象是绝对不可能的!我早年使过7758,但是你最后描述的现象是绝对不可能的!
那个时代使用7758仅仅因为她有2个串口!双dptr,片外ram多1千! 答 7: 但是你最后描述的现象是绝对不可能的???是说这个绝对不可能吗?
另外,很纳闷,那个程序k
⑹ 关于51单片机外扩RAM的问题。请大侠们帮忙解答,先谢过。
现在的rom和ram都很丰富,rom有好几k的,你写程序肯定够了,除非你要用大量的数据,才会使用大量的程序空间,比如几十k,才会考虑去扩充。
扩充是用p0口和p2口扩充,p0口是数据,p2口是地址,用373锁存就可以扩展了。地址如果不是很大,可以用138译码,这样可以扩展多片芯片,如果很大,就采用线选咯。
⑺ 51单片机定义数组太大RAM不够用如何扩展
选用内存比较大的单片机或按8080总线扩展内存
不管是片上256B以外的内存还是外扩内存,编程中变量前都要加xdata 修饰
其实你只要用xdata 修饰,编译就能通过,但如果你实际上没有扩展内存,运行时才会出错
⑻ 怎么看单片机自带的ROM/RAM够不够用
这个主要是看所做项目大小,程序大小与ROM挂钩,从程序量上估计ROM是否够用,变量的多少与RAM有关,从变量的多少估算RAM是否够用。单片机运行是不占用或很少占用内存的。
⑼ 51单片机ram不够用,怎么优化程序
1.肯定的,嵌套越多,要压栈保存的信息就越多,占用的RAM就越多了,对51来说,最多就是CPU内256字节的RAM。
2.是的。
3.没用过这芯片……我用的最多的是AVR
4因为你定义了一个pagebuf[512],512字节啊!51单片机的data撑死才256字节(还没算压栈保存数据需要的RAM),所以编译器自动将这个数组放在了XDATA中。
⑽ 单片机片内ram不够用,怎么办
优化程序,看程序中哪些固定buf大小用不了那么多的改小
可以使用动态分配buf空间
外接扩展ram芯片