Ahi Maunix te aclaro un poco el tema.Como bien dice Maunix, esta memo tiene 128Kbytes.
Si B0 = 0 entonces, tendras un rango de acceso desde la posicion 0 de la EEPROM hasta la posicion 65535 inclusive.
Si B1 = 1 entonces, tendras un rango de acceso desde la posicion 65536 de la EEPROM hasta la posicion 131071 inclusive.
Esto da un total de 131072 bytes. Esa es la cantidad que posee tu memoria.
Si programas en ASM, fijate en almacen de Assembler que postee unas rutinas para utilizar el modulo I2C de la flia 16F87Xx.Con unos retoques en las funciones de lectura y escritura de la EEPROM, deberia salir andando con tu memoria.
Te destaco que en este tipo de protocolo(I2C) la deteccion de los acknowledge que envia la EEPROM "deberia" ser obligatoria, sino no tendras manera fehaciente de saber si realmente leiste o grabaste un dato correctamente en la memo.
Una cosa mas, acordate de los bits Chip Select, que en este caso, la memo posee 2, por lo que te permitira poner hasta 4 EEPROM 24LC1025 en paralelo.
Los valores logicos de los pines A0 y A1 de la EEPROM deben coincidir con los valores que envias en el bye control de cada comunicacion.Si no son correctos, la memoria no respondera ya que considera que estas intentando comunicarte con otra...
Ejemplos:
Supongamos que tenes la memoria con un valor de chip select = binario 00
Supongamos que quiero grabar el dato 10000000(binario) en la posicion 0 de la EEPROM, y luego leerlo.
Pa escribir un byte en modo random harias asi:
1)PIC envia Evento START
2)PIC envia Byte control = 10100000 ; 1010 = identificador EEPROM 0 = Pagina 0 de la EEPROM 00 = Seleccion de Chip 0 = Escribir
3)la EEPROM envia acknowledge
4)PIC envia posicion alta donde grabar = 00000000
5)la EEPROM envia acknowledge
6)PIC envia posicion baja donde grabar = 00000000
7)la EEPROM envia acknowledge ;aqui el contador interno de la EEPROM se ha seteado a la posicion 00000000 00000000
8)PIC envia dato a grabar= 10000000
9)la EEPROM envia acknowledge
10) el PIC finaliza enviando Evento STOP
Ahora vamos a leer la posicion 0(el dato que recien grabamos) de la eeprom. Pa esto voy a utilizar el RANDOM READ.
Destaco que la EEPROM posee un contador interno, que cuando lees o grabas un dato, se autoincrementa en 1 luego del evento.Fijate en el datasheet este tema, muy util.
Por lo tanto, como anteriormente grabe un dato en la posicion 0 de la EEPROM, al finalizar la grabacion(le lleva 5ms en promedio a estas EEPROM !ojo con eso!), el contador interno ahora vale 00000000 00000001. por lo tanto, si hiciese una Current Address Read, la EEPROM leeria la posicion 1 de la EEPROM, y no es la que yo quiero leer...
Lectura en modo random:
1)PIC envia Evento START
2)PIC envia Byte control = 10100000 ; 1010 = identificador EEPROM 0 = Pagina 0 de la EEPROM 00 = Seleccion de Chip 0 = Escribir
3)la EEPROM envia acknowledge
4)PIC envia posicion alta donde grabar = 00000000 (si! grabar! xq en realidad primero hay que iniciar una grabacion para poder setear el contador interno del que te hable)
5)la EEPROM envia acknowledge
6)PIC envia posicion baja donde grabar = 00000000
7)la EEPROM envia acknowledge ;aqui el contador interno de la EEPROM se ha seteado a la posicion 00000000 00000000
8)el PIC envia RE-START ;con este evento se interrumpe la grabacion, pero el puntero interno de la EEPROM quedo seteado!
9)PIC envia Byte control = 10100001 ; 1010 = identificador EEPROM 0 = Pagina 0 de la EEPROM 00 = Seleccion de Chip 1 = Leer
10)la EEPROM envia acknowledge
11)la EEPROM envia el dato leido, el PIC almacena el dato.
12)el PIC genera el evento NACK (No Acknowledge)
13) el PIC finaliza enviando Evento STOP
Los demas modos de escritura y grabacion son parecidos(pero muy distintos
)! espero no haberte hecho mas lio!
Exitos!