主IC是PIC18F6720,通过I2C对外围EEPROM24LC515写入数据,数据量较大,有64800个字节,如果把这些数据先定义成一个rom unsigned char HZ[],就会收我另外一贴中提到的MPLAB的长度限制,出现编译错误。
所以我把64800个字节定义成了两个rom unsigned char HZ1[]和rom unsigned char HZ2[],长度分别是32000字节、32800字节,这样编译就可以成功了,我写了两个程序来实现这些数据的写入,第一个程序写入HZ1,第二个程序写入HZ2,写入地址分别对应0x0000、0x7d00。
但新的问题出现了,无论先写HZ1(即地址0x0000)还是先写HZ2(即地址07d00),写完后读取检查每个字节写入内容都是正确的,但接着烧录执行写入剩下的一部分时,目标地址和目标内容都是写入成功的,但会使上次写入的内容出错,原来写入的内容被擦除了,新的数据是该次要写入的数据好像统一往后移了几个字节写入的。比如,该次要写入是0x00、0x01、0x02、0x03,那原来写入的正确的内容可能被替换成了0x01、0x02、0x03。
我考虑是不是两次写太多数据不行,就把两次写入综合到一个程序里,可问题依旧,仍然是在后边写入的数据会错移覆盖前边写入地址的内容。
请各位指点一下。谢谢! |