Gracias Daniel por responder, estaba confundido sobre estas memorias, había leído que se pueden colocar varias de estas en el mismo bus (cambiando las patas a0 a1 y a2 en circuito) como las 24c32 para arriba y pensaba que la forma de enviar los datos eran iguales.
En Proteus las patas a0 a1 y a2 no están implementadas así que seria imposible colocar mas de una de estas en el mismo bus.
Ahora estoy empezando a hacer la librería para estas memorias Si lo hago de la forma que yo se con if, restas y multiplicación, el código se me hace mas largo de lo necesario.
Este trozo lo tome del CCS para el manejo de memorias 24c16,
#define EEPROM_ADDRESS unsigned int16
#define EEPROM_SIZE 1024
void write_ext_eeprom(EEPROM_ADDRESS address, BYTE data) {
while(!ext_eeprom_ready());
i2c_start();
i2c_write((0xa0|(BYTE)(address>>7))&0xfe);
i2c_write(address);
i2c_write(data);
i2c_stop();
}
Mi duda es, como hace CCS para reemplazar mis cálculos avanzados con esto
i2c_write((0xa0|(BYTE)(address>>7))&0xfe);
No logro entender, alguien podría explicarme que es lo que hace ese trozo? Ese 0xfe para que esta?
Gracias.