He hecho lo que me has dicho, una escritura y su posterior lectura, pero de esta forma también salen cosas raras, el programa que he puesto es el siguiente:
/////////////////////////////////////////////////////////////////////////////////
//////////// SERIE FIBONACCI //////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// 0, 1, 1, 2, 3, 5, 8 ........ ///
#include <16f648a.h> //pic a utilizar
#use delay(CLOCK=4000000) //Fosc=4Mhz
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT //comandos para el programador
#define use_portb_lcd TRUE //utilizar el port b para lcd
#define EEPROM_SDA PIN_A1 //definimos los pines donde...
#define EEPROM_SCL PIN_A0 //la eeprom ira conectada
#include <24256.c> //libreria de eeprom externa 24LC256
#include <lcd.c> //libreria de lcd
///PROGRAMA
void main(void){
int dir; //direccion de eeprom a escribir y leer mensajes
int valor=0;
int suman1=0;
int suman2=1;
int leido=0;
lcd_init(); //inicializa lcd
init_ext_eeprom(); //inicializa eeprom
lcd_putc("\f~ Escribiendo en...\n24LC256\n");
delay_ms(100);
for(dir=0;dir<20;dir++)
{
switch(dir){
case 0:
write_ext_eeprom(dir,suman1);
break;
case 1:
write_ext_eeprom(dir,suman2);
break;
case 2:
valor=suman1+suman2;
write_ext_eeprom(dir,valor);
break;
Default:
valor=valor;
suman1=suman2;
suman2=valor;
valor=suman1+suman2;
write_ext_eeprom(dir,valor); //proceso de escribir...
}
lcd_putc("\fFin de escritura en\n24LC256");
delay_ms(1000);
lcd_putc("\f>>>Leyendo...\n");
delay_ms(1000);
leido=read_ext_eeprom(dir);
printf(lcd_putc,"\n %d ~ Fibo= %u ",dir,read_ext_eeprom(leido));
delay_ms(1000); //retraso para que se vea en pantalla los mensajes
}
output_a(0b00); //apago port a
lcd_putc("\fFin de lectura!");
} //...final