Pues no anda por ahi, he probado a ajustar el periodo y no he conseguido nada, incluso a quitar la interrupción del timer0 y nada. De todas formas en la interrupción si entra, el problema es que lee un codigo incorrecto, cuando es correcto, o bien se programa una tecla o se actua en consecuencia, si es incorrecto no se hace nada, pero puse un testigo (hacer parpadear un led) para comprobarlo y lo que hace es que detecta un codigo incorrecto.
La parte a la qe me refiero es esta:
if(state){
//Error.
//PitidoCorto();///////////////////////////////////este es el testigo.
/*lcd_gotoxy(1,1);//fila 1, col 1
printf(lcd_putc,"Error ");*/
Delay_cycles(1);
}else{//Dato correcto.
if(!GRABAR)
AlmacenaTecla();
else
ProcesaTecla();
}
Un saludo.