| 
 
| int main(void) {
 LED_Config();                                             /*LED初始化*/
 
 USART1_Config();                                          /* USART1 配置模式为 9600 8-N-1,中断接收 */
 
 I2C_EE_Config();                                                                        /* I2C 外设初(AT24C02)始化 */
 
 while(1)
 {
 if(RecCard_Ok_Flag == 1 )                             /*如果串口接收到IC卡的数据*/
 {
 printf("IC卡已插入,卡号为: ");
 for(Count=0;Count<5;Count ++)
 {
 printf(&quot;%d&quot; , RecCardData_Buf[Count]);
 }
 printf(&quot;
 &quot;);
 Count = 0;
 RecCard_Ok_Flag = 0;
 
 printf(&quot;将读取的卡号存储到EE中去:
 &quot;);
 I2C_EE_BufferWrite(RecCardData_Buf, BASE_ADDR, sizeof(RecCardData_Buf));
 printf(&quot;数据存储成功!
 &quot;);
 printf(&quot;
 &quot;);
 printf(&quot;读出EE中的卡号
 &quot;);
 I2C_EE_BufferRead(I2C_ReadFromEE_Buff, BASE_ADDR, sizeof(RecCardData_Buf));
 for(Count = 0 ; Count < sizeof(RecCardData_Buf); Count ++)
 {
 if(RecCardData_Buf[Count] != I2C_ReadFromEE_Buff[Count])
 {
 printf(&quot;数据读取错误!
 &quot;);
 return 0;
 }
 }
 printf(&quot;%d&quot; , I2C_ReadFromEE_Buff[Count]);
 printf(&quot;读出卡号成功!
 &quot;);
 memset(I2C_ReadFromEE_Buff , 0 , sizeof(RecCardData_Buf));
 //memset(I2C_ReadFromEE_Buff , 0 , sizeof(RecCardData_Buf));
 }
 }
 
 }
 
 
 我通过UART1 读取IC卡的卡号 。并通过I2C 存储到AT24C02中,进行第一次while()是可以正常存储并读出 。但是当我再一次刷IC卡 IC卡的卡号是可以的读出的。但是并不能存储到AT24C02中去的。通过串口调试工具的现象如下:
 
 IC卡已插入,卡号为: 10529104157129
 将读取的卡号存储到EE中去:
 数据存储成功!
 读出EE中的卡号
 0读出卡号成功!
 IC卡已插入,卡号为: 10529104157129
 将读取的卡号存储到EE中去:
 IC卡已插入,卡号为: 10529104157129
 将读取的卡号存储到EE中去:
 数据存储成功!
 
 
 读出EE中的卡号
 0读出卡号成功!
 IC卡已插入,卡号为: 10529104157129
 将读取的卡号存储到EE中去:
 | 
 |