单片机编译后内存不足
Ⅰ 关于keil uvision4 软件编程51单片机内存问题
FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
MODULE: D:\KEIL\C51\LIB\C51L.LIB (-----)
LIMIT: 0800H BYTES
----
没有破解,有 800H 字节的限制。
Ⅱ 51单片机ram不够用,怎么优化程序
1.肯定的,嵌套越多,要压栈保存的信息就越多,占用的RAM就越多了,对51来说,最多就是CPU内256字节的RAM。
2.是的。
3.没用过这芯片……我用的最多的是AVR
4因为你定义了一个pagebuf[512],512字节啊!51单片机的data撑死才256字节(还没算压栈保存数据需要的RAM),所以编译器自动将这个数组放在了XDATA中。
Ⅲ 用单片机计算 内存不够
解决方案:
一、在原有的单片机上改动。
1、优化程序,有效果,但效果其实不大。
2 、自己扩展片外的RAM,一来是费硬件的钱,二来是电路要不停的飞线。
二、换一大内存的单片机。比如STC32F103C8T6,三个串口,16K的RAM。
三、减少串口对数据的接收量,比如只检查$GPRMC信息,提取到坐标后就把其他信息丢弃了。
Ⅳ 51单片机 内存
以51结尾的51单片机只有128byte内存,以52或更高结尾的则有256byte内存
在只有128byte内存的单片机里面定义过多的全局变量并且其中有指针变量的话,非常容易出现干扰到堆栈指针SP,导致程序异常。IO接口只能通过直接访问高128字节才能写入或读出数值,无法通过指针等其他途径访问。所以当前情况很有可能是内存溢出导致单片机不断在重启。
当内存超过128yte的情况下在编译的时候编译器会提示内存不足。在256byte的单片机中可以通过idata使用高128byte内存,通常一些不常用的变量。
尽量使用局部变量提高内存使用效率
Ⅳ 单片机 寄存器中定义变量过多 存储空间不够用怎么办
当然选寄存器多的呀,比如89C51是128个寄存器,而89C52就有256个可用了。你还不够用的话,选STC12系列,除了256个内部寄存器外,还嵌入了1K的SRAM可用有的还有1K的flash,足够你用了。
Ⅵ STC12单片机烧写提示程序空间已满
意思就是程序空间超了,比如你单片机ROM程序存储空间是8K,你HEX烧写文件超过8K,下载器会把HEX 8K数据下载到单片机其余的数据丢掉了,这样程序下载到单片机肯定不正常的了
Ⅶ 请教,单片机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区间的单片机。
Ⅷ 我的毕业设计用STC89C52,在keil中用at89C52头文件编译时提示ram不够,怎样可以解决
RAM不够明显是你在RAM使用中太大手大脚了,52差不多有200字节可以使用,应该能满足大部分项目的要求了。你看看是不是全局数组开太多了,建议你开个数组后,尽量用指针。变量能用局部的就不要开全局。
另外,这两个芯片是兼容的,RAM大小也一样。
Ⅸ 用keil软件编程内存不够怎么办
你说的内存不够应该是指单片机内存不够,现在电脑一般不会出现内在不够的情况,除非你的电脑还是80年代的产品(老爷们),单片机内存不够一般与你选择的芯片有关,比如你的程序代码很多,但你选择RAM存储器很小的单片机来进行编程,那是肯定不够的,现在单片机发展这么快,那还用得着扩展数据内存,只要选型恰当,一般都可以满足要求。像STC的单片机,AVR,PIC系列的,很多都内部扩展了内在量,
所以,你提的这个问题也很模糊。想帮你都不知道怎么帮,
Ⅹ 单片机数据存储容量不足怎么办,片外存储芯片据我所知最大为32k还是不够用
300K的数据对单片机本身要求来说有点大,但可以做外围电路,你可以选用外置flash做存储,容量绝对不是问题,但核心运算最好存在内部E方或flash中,这样单片机处理速度快。
到网上找:单片机外接flash有很多型号让你选
