بابا کاری نداره که
من مثال رو برای نوشتن روی EEPROM های سری ۲۴ برای نمونه 24C512 , و یا 24C32 یا هرکدوم که آدرس دهی اونا ۱۶ بیتی باشه میتونی از دستورات زیر استفاده کنی:
کد:
void eeprom_write_byte(int adr,char data){
char temp;
temp=adr>>8;
i2c_start();
i2c_write(0xA0);
i2c_write(temp);
temp=adr & 255;
i2c_write(temp);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
برای خوندن هم میتونی از تابع زیر استفاده کنی:
کد:
char eeprom_read_byte(int adr){
char temp;
char data;
temp=adr>>8;
i2c_start();
i2c_write(0xA0);
i2c_write(temp);
temp=adr & 255;
i2c_write(temp);
i2c_start();
i2c_write(EEPROM_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}