at24c里面的东西掉电数据不丢失主要是写保护起作用吗

我只是网65533地址写入一个u16的数据,掉电重启数据怎么没了呢

at24c是EEPROM,如果你不对它重新编程,数据不会丢失。
看看你对它的写入本身有没有问题。

不是写保护,写的时候直接就存储进去了,就跟你电脑里的磁盘一样,掉电丢失可能是你没有写进去

for(i = 218;i <223;i++)  //想存储器中写入256个数据 
  {
    IIC_write_data(i,i);
    delay(50);
  }
  for(i=218;i<223;i++)
   {
        shuzi = IIC_read_data(i);
        delay(50);
        itoa(shuzi,table);
        //LCD_write_english_string(x,y,table);
        LCD_write_english_string(x,y,table);
        if(shuzi>=0&&shuzi<=9)
           x += 6 ;
        else if(shuzi>=10&&shuzi<=99)
           x += 12;
        else
           x += 18;
        if(x >= 72)
        {
          x = 0;
          y += 1;
        } 
   } 


     sbit sda=P1^7;
sbit scl=P1^6;

uchar address; //指示24C02中的地址 

void IIC_delay()
{ 
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
}
void IIC_start()  //开始信号 
{   
    sda=1;
    scl=1;
    IIC_delay();
    sda=0;
    IIC_delay();
    scl=0;   //
}

void IIC_stop()   //停止 
{
    sda=0;
    scl=1;
    IIC_delay();
    sda=1;
    scl=1;
    IIC_delay();
    //scl=0;      //
}
void IIC_noack_iic()
{
   sda=1;
   scl=1;
   IIC_delay();
   scl=0;
   //sda=0;
}
void IIC_ckeck_ck()
{
  sda=1;
  scl=1;
  F0=0;    //内部定义 
  if(sda==1)
    F0=1;
  scl=0;
}
void IIC_write_byte(uchar date)
{
    uchar i;
    for(i=0;i<8;i++)
    {
        if(date&0x80)
            sda=1;
        else
           sda=0;
        scl=1;
        IIC_delay();
        scl=0;
        date=date<<1;
    }
    IIC_ckeck_ck();
    if(F0==1)
      while(1);
}

uchar IIC_read_byte()
{
    uchar i,k;
    k=0;
    scl=0;
    IIC_delay();
    sda=1;
    IIC_delay();
    for(i=0;i<8;i++)
    {   
        sda=1;
        scl=1;
        k=k<<1;
        if(sda==1)  
            k|=0x01;
        else
            k&=0xfe;
        scl=0;  
    }
    IIC_noack_iic();
    return k;
}

void IIC_write_data(uchar address,uchar date)
{
    IIC_start();
    IIC_write_byte(0xa0);
    IIC_write_byte(address);
    IIC_write_byte(date);
    IIC_stop();
    IIC_delay();
}

uchar IIC_read_data(uchar address)
{
    uchar date;
    IIC_start();
    IIC_write_byte(0xa0);
    IIC_write_byte(address);
    IIC_start();
    IIC_write_byte(0xa1);
    date=IIC_read_byte();   
    //ack_iic();
    IIC_noack_iic();//对从机产生非应答信号,使得从机释放SDA,从而使主机产生停止信号
    IIC_stop();
    return date;
}

电阻期间  不会丢失