| / 读 E2PROM 并验正读出数据是否正确 //-------------------------------------------
 void    E2_Cread ( bin08 E2ad, bin08* RAMad,bin08 n )
 {
 bin08 i;
 bin08 j=0;
 bin08 sum;
 do
 {
 read_E2 ( E2ad, &buffer[0], (n+1) );
 sum = 0;
 for(i=0;i<n;i++)
 {
 sum += buffer+0x55;
 }
 I2Cerr=0;
 if ( sum == buffer[n] )
 {
 I2Cerr=1;
 }
 j++;
 }while ( (j<3)&& I2Cerr );
 memcopy(&buffer[0],RAMad,n);
 }
 
 // 写 E2PROM 并在写完 5mS 后再读出,确定写入是否正确
 //-------------------------------------------
 void    E2_Cwrite ( bin08 E2ad, bin08* RAMad, bin08 n )
 {
 bin08 i;
 bin08 j=0;
 memcopy( RAMad,&buffer[0],n );
 do
 {
 buffer[n] = 0;
 for(i=n;i!=0;i--)
 {
 buffer[n] += buffer+0x55;
 }
 write_E2( E2ad, &buffer[0],(n+1) );
 read_E2 ( E2ad, &buffer[n+1],(n+1) );
 I2Cerr=0;
 for(i=n;i!=0;i--)
 {
 if (buffer != buffer[n+1+i])
 {
 I2Cerr=1;
 }
 }
 j++;
 }while ( (j<3)&& I2Cerr);
 }
 此段程序已经通过调试没有问题,
 |