Hola Vzener, tengo un problema con la lectura de un teclado matricial, lo que pasa es lo siguiente:
Trato de leer un teclado matricial para obtener un numero de dos digitos dentro de un ciclo, es decir que si yo presiono la tecla 1 y luego la 2, al final del ciclo obtenga yo el numero 12, esto lo quiero para que después de obtener este digito, ejecute un ciclo durante XX minutos, por ejemplo en este caso si presiono ‘1’ y ‘2’, yo ejecute un proceso durante 12 minutos (lo que yo estoy mostrando durante este tiempo es el voltaje de un potenciómetro conectado RA0). Sin embargo no eh podido obtener este numero, espero que me puedas ayudar (TU ERES MI IDOLO... ayudameeeeeee plis).
Codigo:
int unidad,decena,segundos;
char c;
// Llamo a la funcion para pedir los minutos
void pide_minutos(void){
lcd_putc("\f Minutos:\n"); //imprimo mensaje en LCD
for(k=0;k<=1;k++){ // Hago un ciclo para pedir dos numeros del teclado
do { //espera a que pulse una tecla
c=kbd_getc();
}while(c==0);
switch (c)
{
case '0' : if (k=1) //Si es el segundo ciclo que la variable leida la ponga en unidad.
unidad=c;
else
decena=c; // Si el ciclo se ejecuta por promera ver que el valor leido lo ponga en decena
case '1' : if (k=1)
unidad=c;
else
decena=c;
case '2' : if (k=1)
unidad=c;
else
decena=c;
case '3' : if (k=1)
unidad=c;
else
decena=c;
case '4' : if (k=1)
unidad=c;
else
decena=c;
case '5' : if (k=1)
unidad=c;
else
decena=c;
case '6' : if (k=1)
unidad=c;
else
decena=c;
case '7' : if (k=1)
unidad=c;
else
decena=c;
case '8' : if (k=1)
unidad=c;
else
decena=c;
case '9' : if (k=1)
unidad=c;
else
decena=c;
default : if (k=1) //si leo * o # que en unidad o decena ponga 0
unidad=0;
else
decena=0;
}
}
decena=decena10; // multiplico decena por 10
segundos=decena+unidad; // y aquí termina el proceso pero no sale………….
}
Posiblemente mi problema esta en las variables pero no se.