c51单片机怎样存储大量数据?

用c编程,由于单片机本身RAM一共才256字节,可是我要存储一个大数组或者表格,根本不够用;是不是可以把这些数据存储到code区呢?
如果不另外加片外存储器,请问应该怎么处理?
是静态的,就是不知道怎么个用法能存到code
比方说存个数组point[16]
怎么存到code区呢
我直接用:
int code point[16]不行
应该用什么语句呢
这个必须得赋初值吗?比方说
int code point[16];
main()
{
for(i=0;i<16;i++)
point[i]=i;
}
编译出现错误:LOCATION06R.C(40): error C183: unmodifiable lvalue;

明白了
谢谢!

如果你的数据是静态的不用变的就可以存在code,否则当上电后code的内容只能读,不能改.数据多了只能加外存,可以用I2C总线的E2PROM(2是平方的意思),前几天买了几块AT24C256(32K),5元/块

例如:int code point[]={-1,-2,-3};就可以了。你说的不行不知道是什么意思,具体点吧

你这样赋初值是不行的,因为这种赋值语句是在RAM里面进行,point[]只可能是变量,不可能是常量,也就是它不能被定义在CODE内。所以你只能一个一个来了。一但point[]被定义为CODE就不能在main()里面再对它赋值了。:)
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-02-14
  c51单片机存储大量数据方法:
  存储的只能是8位而已;
  16位分开来,分出高8位和低8位这样来存储;
  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

c51单片机怎样存储大量数据?
如果你的数据是静态的不用变的就可以存在code,否则当上电后code的内容只能读,不能改.数据多了只能加外存,可以用I2C总线的E2PROM(2是平方的意思),前几天买了几块AT24C256(32K),5元\/块 例如:int code point[]={-1,-2,-3};就可以了。你说的不行不知道是什么意思,具体点吧 你这样赋初值...

51单片机ram不够用,怎么优化程序
1.肯定的,嵌套越多,要压栈保存的信息就越多,占用的RAM就越多了,对51来说,最多就是CPU内256字节的RAM。2.是的。3.没用过这芯片……我用的最多的是AVR 4因为你定义了一个pagebuf[512],512字节啊!51单片机的data撑死才256字节(还没算压栈保存数据需要的RAM),所以编译器自动将这个数...

51单片机存储空间释放
你说的我感觉应该是想把程序里数据给去掉,那应该是不可能的吧,首先程序你是放在rom中,不能自己进行擦出,你可以用cd卡来存储歌词,和MP3,单片机存储容量太小,不可能把MP3和歌词全部存储,想象我们的mp3,不知道你拆过没有,MP3除了主控制芯片还有外扩的存储芯片,就是这样,mp3自带的存储器也只不...

单片机 用串口 向C8051F的128K FLASH写入 大量数据,怎么弄?
在内存外存(用dptr来访问,内存不够大)中定义一512字节的数组,pc机给你发数据一次发51个,都存入这个数组,收到pc机512个字节的数据后向pc机请求暂停发送,然后把这512个自己写入flash的扇区中,写入完成后,把在内存的数组和已经写入flash的数据做一次比较,如果有不一样的,重新把数组的数据写入flash...

keil C51中的data怎么设置成大一点的值?
在keil里面选择正确的单片机型号,各种型号对应了特定的ram 比如:89c51的128 Bytes On-chip RAM。比如将那些不改变的变量定义为code,比如unsigned char code a;可以用外扩的数据存储器,定义XDATA来改变变量的存储地方,比如XDATA signed char a;设置options for the target里面的target,如图。资源不够...

C51单片机数据存储器是怎样扩展的?
在单片机系统中

C51单片机数组存到内部flash
数组是可以存在FLASH中的,但是这样并不可行,8051单片机主要是片内没有EEPROM,一般在FLASH中存储一些掉点不丢的东西,如果存数组的话,首先得写一个读写FLASH的函数专门去存放它,这样本身就比较小的RAM,更加不够用了。不过8051单片机,一般都有个DATA区和一个XDATA区,我估计你是把所有的变量全部定义...

由于写的c51程序超出了128B,没有外部存储的设备,现想用idata,请教idata...
1 code 用来存储代码和常数,或者常数数组的,比如你程序定义的数组,如果不需要改动,即只是用来读取,不用赋值的,可以定义到code空间里,比如我们常用的7段数码管的显示数组,又或者NTC的表格,这些不需要改动,只用来读取的,定义到code里。2 data空间:单片机内部RAM的低128B,特点是速度最快,因为...

C51单片机内部RAM多大,有的书上说128B,有的书上说256B,弄得我晕了都...
C51:片内用户RAM有128字节 (位于片内所有RAM的低128B,高128B是SFR)访问RAM可以使用直接或者间接寻址方式,地址为00H-7FH,在80H-FFH的空间分配给了SFR,只能使用直接寻址方式。C52:片内用户RAM为256字节——重点了,有讲究:(位于片内所有RAM的低128B,高128B是SFR和用户RAM地址重叠的区域)...

关于C51单片机的外扩数据存储器的读写操作时序的问题
C51单片机存储器类型包括:位数据(bits)、字节数据(byte)、数据寄存器(data)、特殊功能寄存器(sfr)、代码(code)等。其中,物理存储器分类如下:1. 位数据(bit):位寻址区,地址范围20H~2FH,共16字节,提供128位存储,位地址从00H到7FH,连续分布。2. 特殊功能寄存器(sbit):地址范围80H...

相似回答