EEPROM 24Cxx

EEPROM họ 24Cxx có ba chân định địa chỉ là A0-A1-A2, nếu nối cả ba chân này xuống mass thì eeprom có địa chỉ nhận dạng là 0xA0

Hàm đọc ghi như sau

#use i2c(master, fast, sda=EEPROM_SDA, scl=EEPROM_SCL)

////////////////////////////////////////////////////

void write_ext_eeprom(int16 add, BYTE data)

{

   short int status;                                     

   i2c_start(); // bao hieu bat dau giao tiep i2c

   i2c_write(0xa0);  // dia chi thiet bi nhan

   i2c_write(add>>8); // gui den dia chi cao cua thiet bi nhan (dia chi cot)

   i2c_write(add);  // gui den dia chi thap cua thiet bi nhan (dia chi hang)

   i2c_write(data);  // ghi data vao dia chi tren cua thiet bi nhan

   i2c_stop();    // bao hieu ngung ghi

   i2c_start();   // bao hieu bat dau giao tiep

   status=i2c_write(0xa0); // kiem tra trang thai cua thiet bi nhan

   while(status==1)  // lap lai cho den khi thiet bi da nhan xong (No Ack)

   {

      i2c_start();

      status=i2c_write(0xa0);

   }

   delay_us(10);

}

 

BYTE read_ext_eeprom(int16 add)

{

   BYTE data;

   i2c_start();

   i2c_write(0xa0);

   i2c_write(add>>8);

   i2c_write(add);

   i2c_start();

   i2c_write(0xa1);

   data=i2c_read(0); // No Ack

   i2c_stop();

   return(data);

}

////////////////// the end /////////////////////////