为什么单片机定义的数组是存放在数据存储器中
时间:10-02
整理:3721RD
点击:
为什么单片机定义的数组是存放在数据存储器中,而不是存放在程序存储器中,这样断电,那数组里面的数据不就丢失了吗,实在不解,请大神指教。
你可以放在FLASH里面,加CODE关键字不就行了
uchar code table[]={};
就储存的内容来讲,数组可以分为两种:一种是内容在程序运行中会改变的,还有一种内容在程序运行中不会改变的。所以第一种数组符合RAM的特性,就放在RAM中,第二种数组符合ROM的特性,就放在ROM中。
举个例子:
定义一个缓冲区:BYTE Buffer[];那么在程序中就会大量使用Buffer[n] = Variable或Variable = Buffer[n]这样的代码,也就是会对Buffer这个数组进行读写操作,所以放在RAM中。
定义一个字符串:CHAR String[] = "HelloWorld"; 这种方法在串口程序中比较常见,一般只有在UartPrintString(String)的时候才会用到,并没有出现元素的写操作,所以放在ROM中。
在来说一下这样做的原因:RAM既可读,又可写,而ROM只可读,不可写,所以RAM适合存放变量,ROM适合存放常量。
说白了,数组的存放位置主要依据数组的功能,并不是放在ROM中就一定好。
就和电脑的RAM和ROM是一个道理,自己想想把
定义数组时加上code就是定义到code区了