Lo que pretendo hacer es lo siguiente:
Tengo una función la cual me debe de leer el puerto UART por software, la información que me envia es la de un numero de tecla que es descifrado desde otro pic.
La función para leer la tecla es:
unsigned char Revisa_Teclado(void)
{
unsigned int i,n;
unsigned char digito1,digito2,tecla;
char digito[4];
for(i=0;i<3;i++)
{
digito[i]=ReadUART();
}
if (digito[0]=':')
{
switch (digito[1]){
case '0':
digito2=0;
break;
case '1':
digito2=1;
break;
default:
digito2=20;
break;
}
switch (digito[2]){
case '0':
digito1=0;
break;
case '1':
digito1=1;
break;
case '2':
digito1=2;
break;
case '3':
digito1=3;
break;
case '4':
digito1=4;
break;
case '5':
digito1=5;
break;
case '6':
digito1=6;
break;
case '7':
digito1=7;
break;
case '8':
digito1=8;
break;
case '9':
digito1=9;
break;
default:
digito1=20;
break;
}
tecla=(digito2*10)+(digito1);
if (tecla>=20)
{tecla=255;}
return tecla;
}
}
Esta función la mando llamar desde el programa principal, lo que pretendo hacer es que entre a esta función, cheque si se oprimió alguna tecla, si se oprime pues que haga el debido procesamiento de la información (cheque que el primer caracter que llegue sea ":" y después sigue el numero de la tecla) y si no se ha oprimido ninguna pues que simplemente salga de la función y siga con las demas tareas. El problema es que no me esta dejando continuar con las demas tareas, ya que se me esta ciclando.... y es ahi donde ya no se que hacer...
Saludos