const uint8 ST_UpdateData[] =
{
0x3a, 0x01, 0x2a, 0x04, 0x28, 0x00, 0x29, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x01, 0x28, 0x02, 0x21, 0x8f, ......0x05, 0xa1, 0x18, 0x04, 0xff, 0xff };
这个数组大约要占用4K左右的空间。在系统上电后都会执行下面的代码将数组内容通过I2C写到另一个芯片中:
void sta_DownloadUpdate(void)
{
unsigned int i;
i = 0;
do
{
i2c_Write(STA_UpdateData,device1, ST_UpdateData[i+1]);
i+=2;
}
while(ST_UpdateData != 0xff);
}
我对这个数组的存放位置不是太清楚,不知道它是和代码一起放在程序ROM还是单独放在数据ROM。
因为这是51系统,51系统是将程序和数据分开放的。我理解应该是在程序ROM,但不敢确定。
请高手指点...
原觉是EEPROM的...
具体数据的存放用什么设备,那是根据你的应用来的...
如果这串数据永远也不用或不能修改,那就放在片内的ROM里,这样可以防读出什么的
如果仅仅是为了保存一些运行期状态值,只为了防掉电,或是其它运行期因素造成的数据修改
那可以用外扩的不掉电ROM器件或设备...
嘿嘿
这串数据是另一个芯片的配置信息,每次系统初始化的时候向芯片写一次,运行中这个数组是没有修改的。假设是放在片内ROM中,代码编写应该不会受影响吧?!
按理说,放在ROM中它的访问指令会有改变.但是用C写的程序,那C编译器会处理这个问题
所以,没事...
你的C代码几乎不受影响,多的就是一个存放位置的声名...
定义在data中,也就是内部RAM中,你如果要定义在程序ROM中,须定义为:
code const unsigned char ST_UpdateData[] =
如定义在XDATA中须:
xdata const unsigned char ST_UpdateData[] =