Muchas gracias por la ayuda

. De hecho queria hacer algo parecido, capaz que me puedas ayudar con este problemilla. Queria hacer un teclado de numeros con pulsadores. Queria usar el pic16f877 y un lcd de 20x4. El problema es que si o si tengo que apretar los botones en un orden especifico. Este orden es 123456789.del0-. El tema es que yo queria hacer cada numero independiente y que lo puedas apretar cuantas veces quieras. Este es el codigo:
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use standard_io(A)
#use standard_io(B)
#use standard_io(C)
#include <stdlib.h>
#include <string.h>
#include <LCD420.C>
int j;
void teclado();
void teclado() {
do{
if(!input(PIN_A1)){ //¿se ha pulsado up?
while(!input(PIN_A1)){} //elimina rebotes
lcd_putc("\n1");
// j=j+1;
// printf(lcd_putc,"\nEl numero es %d",j);
}
if (!input(PIN_C2)){ //¿se ha pulsado up?
while(!input(PIN_C2)){} //elimina rebotes
lcd_putc("2");
}
if(!input(PIN_C3)){ //¿se ha pulsado up?
while(!input(PIN_C3)){} //elimina rebotes
lcd_putc("3");
}
if(!input(PIN_C4)){ //¿se ha pulsado up?
while(!input(PIN_C4)){} //elimina rebotes
lcd_putc("4");
}
if(!input(PIN_C5)){ //¿se ha pulsado up?
while(!input(PIN_C5)){} //elimina rebotes
lcd_putc("5");
}
if(!input(PIN_C6)){ //¿se ha pulsado up?
while(!input(PIN_C6)){} //elimina rebotes
lcd_putc("6");
}
if(!input(PIN_C7)){ //¿se ha pulsado up?
while(!input(PIN_C7)){} //elimina rebotes
lcd_putc("7");
}
if(!input(PIN_B3)){ //¿se ha pulsado up?
while(!input(PIN_B3)){} //elimina rebotes
lcd_putc("8");
}
if(!input(PIN_A0)){ //¿se ha pulsado up?
while(!input(PIN_A0)){} //elimina rebotes
lcd_putc("9");
}
if(!input(PIN_A2)){ //¿se ha pulsado up?
while(!input(PIN_A2)){} //elimina rebotes
lcd_putc(".");
}
if(!input(PIN_A3)){ //¿se ha pulsado up?
while(!input(PIN_A3)){} //elimina rebotes
lcd_putc("\b");
}
if(!input(PIN_A4)){ //¿se ha pulsado up?
while(!input(PIN_A4)){} //elimina rebotes
lcd_putc("0");
}
if(!input(PIN_C0)){ //¿se ha pulsado up?
while(!input(PIN_C0)){} //elimina rebotes
lcd_putc("-");
}
}while(input(PIN_A5)); //apretas enter y..
while(!input(PIN_A5)){} //elimina rebotes
}
void main() {
set_tris_A(0x3F);
set_tris_B(0x3F);
set_tris_C(0x3F);
lcd_init();
lcd_putc("Primer digito\n");
teclado();
lcd_putc("\fSegundo digito\n");
teclado();
}
Si o si tengo que apretar los botones en la secuencia de los if. Ese es el problema. Desde ya muchas gracias