Hola,
os he adjuntado el programa entero por si veis que el error esta en otra parte, pero la funcion que me falla es la siguiente:
void env()
{
long int dnd=0x0000;
int xm,ym;
char dat[]={'E','n','v','i','a','n','d','o',' ','d','a','t','o','s',' ','a',' ','P','C','\0'};
printf(" Memoria\n");
glcd_text57(5,25,dat,1,ON);
printf("%lu",dir);
while((RB3!=0)||(dnd<dir))
{
xm=lee_eeprom(dnd);
dnd++;
ym=lee_eeprom(dnd);
dnd++;
printf("%lu",dnd);
printf(" x:%i",x); //Envia las aceleraciones al PC
printf("/ y: %i\n\r",y);
}
printf(" Fin de Grabacion\n");
printf(" Pulse seleccion\n");
while(RB3!=0);
}
dir es un variable global de tipo "long int" que guarda la posicion del ultimo dato grabado en la eeprom, en teoria deberia parar de enviar los datos cuando dnd sea mayor que dir y no lo hace, si que para si le doy al pulsador conectado a rb3.
Por ejemplo en una prueba dir era igual a 1022 y el pic seguia enviando datos hasta que lo pare, con rb3,cuando estaba por 3000 y pico.
Gracias de antemano.