单片机中c程序数据超过256怎么办

如题所述

是RAM超过256吗?请说清楚
如果是的话,那就尽量把全局变量改成局部变量,布尔量尽量都都定义成bit,放到bdata区,不要用char型,尽量少用局部数组,用指针。还有个大绝招,就是地址复用,在定义了变量后,用_at_来定义其具体的地址,可以重复,但要注意重复的变量会不会同时使用到
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-09
全局变量改成局部变量,布尔量尽量都都定义成bit,放到bdata区,不要用char型,尽量少用局部数组,用指针。还有个大绝招,就是地址复用,在定义了变量后,用_at_来定义其具体的地址,可以重复,但要注意重复的变量会不会同时使用到
第2个回答  2010-09-10
换个单片机,现在数据存储器容量大于256的单片机有很多了

单片机中c程序数据超过256怎么办
是RAM超过256吗?请说清楚 如果是的话,那就尽量把全局变量改成局部变量,布尔量尽量都都定义成bit,放到bdata区,不要用char型,尽量少用局部数组,用指针。还有个大绝招,就是地址复用,在定义了变量后,用_at_来定义其具体的地址,可以重复,但要注意重复的变量会不会同时使用到 ...

单片机串口发送的最大数字超过255就不准确了是怎么回事
如果出现大于255的数据比如256,那么就是0x100。而你接收端只接收到00了。。所以如果发送超过255的数据需要用2个8位寄存器 超过65535就要3个8位寄存器。。然后在接收侧采用比如R0,R1 ,R0是低8位R1是高8位 c的话就需要定义一个合适的寄存器大小比如255以内是char 65535以内是int 在大就需要long了然...

Keil C程序中定义的一维数组字节过大该怎么办?
楼上则正解 做单片机的话, 还是必须要了解一下其存储结构, 最起码得知道data idata xdata所指的存储区域 idata 指向的片内ram ,大小范围为256字节,所以你一个数组定义在idata段内,不能超过256字节,超过就会报错。xdata指向的片外ram,大小范围为64KB,你可以将你需要的大容量数组定义在该段内。

如何将单片机C语言程序改小
如果超出太多就另想办法,例如更换单片机。如果超出得不多,可以进行优化。这里又分为两种情况:如果你编程经验丰富,可以手动通过优化减小程序代码大小;如果你不太懂得如何手动优化,可尝试提高编译优化等级并优先针对代码大小进行优化,不过提高优化等级往往会带来更多的隐患,不建议这么做。“对于程序中重复...

八位单片机怎么可以把一个超过256的十进制数拆开成十位二进制数,拿出前...
每一个byte都是八个二进制数大小. 1~499, 可以两个Byte表示.在C的虚拟码来操作, 单片机int通常为2bytes(16bits), 可以int来表示.int your_num;byte last_two = (byte)(your_num & 0x0003); \/\/ bit操作取末两位byte front_eight = (byte)(your_num>>2); \/\/bit操作, 右移两位 ...

单片机程序设计 数据块求和,如果和大于255,那么程序怎样编写!!!急急...
如果和大于255,不大于0xffff的话 用双字节加法。C语言就是定义为整型数据就好了。汇编的话 CLR A MOV SUML,A MOV SIMH,A MOV R0,#20H LOOP:MOV A,@R0 ADD A,SUML MOV SUML,A CLR A ADDC A,SUMH ;用带进位加法 MOV SUMH,A INC R0 CJNE R0,#30H,LOOP 也可以 MOV A,@R0...

MSC-51单片机指令中的查表问题
具体方法是:将表首地址放入DPTR中,偏移量放入A中,用查表指令MOVC A,@A+DPTR;来完成从数据区取数。有如下几种情况:1、如果数据区的长度不超过256个字节(累加器A的容量之内),且数据是单字节的,则不需要另外处理;2、因为如果数据区的长度不超过256个字节,但数据是双字节的,需要将偏移量乘...

单片机 编译好的代码太大 烧写不进去 怎么办
程序的大小和生成的hex大小没关系。而是看你的code区占用了多少,你的单片机有多大的code区,另外内存通常是运行中存储数据的。比8k的flash大的单片机太多了。code代码区 data片内 xdata片外

51单片机c语言如何将1个大于256unsigned int型数据存放在eeprom中,比 ...
可以高8位低8位分开放 例如写EEPROM函数是void write_eeprom(unsigned int add,unsigned char dat)a是要写入的数据 调用时 write_eeprom(2000,a) 写低8 位 write_eeprom(2001,a>>8) 写高8 位 读出时分两次读出再合成一个数 a= EEPROM_read(2001,a) *256+ EEPROM_read(2000,a)

单片机 寄存器中定义变量过多 存储空间不够用怎么办
当然选寄存器多的呀,比如89C51是128个寄存器,而89C52就有256个可用了。你还不够用的话,选STC12系列,除了256个内部寄存器外,还嵌入了1K的SRAM可用有的还有1K的flash,足够你用了。

相似回答