ayuda controlar salida de un pic para conjunto de led

hola amigos, saoy nuevo en esto de los pic y resulta que tengo un proyecto pequeño, que consiste en presionar un pulsador y que este marque el numero 1, otro pusador que al presioanrlo marque el numero 2 y por ultimo un pulsador que al presioanrlo marque el numero 3. el problema es el siguiente:

he realizado una sintaxis para hacer esto, pero al momento de presionar el boton los led quedan parpadeando y no se quedan iliminados permanentemente mientras esta presionado el boton. la idea es que tengo que formar el numero con un conjunto de led a la salida del pic, esto lo realizo formando unos segmento con led en serie, en total formo 7 segmento con 4 led en serie cada segmento. la logica para sacar los numeros debe estar bien, puesto que mmuestra los datos, pero quedan parpadenando.

la sintaxis es:

#byte puerto_b = 06 esto no se muy bien para que se usa
#byte puerto a= 06

void main (void){ comienza el programa

set_tris_b(0x00); se declara puerto b como salida
puerto_b=0; se pone puerto b en cero
set_tris_a(0xff); se declara puerto a como entrada
puerto_a=0; se pone a cero el puerto a
dc{

if(!input (pin_a0)){ pregunta si esta presioado la entrada a0

bit_set (puerto_b, 3); si es correcto saque por la puerta b dos segmento la idea es
bit_set (puerto_b, 6); formar el uno

else{ de lo contrario deje la salida en cero
bit_clear(puerto_b, 3);
bit_clear(puerto_b, 6);
}

if(!input (pin_a1)){ pregunta si esta presioado la entrada a1

bit_set (puerto_b, 1); si es correcto saque por la puerta b cinco segmento la idea
bit_set (puerto_b, 3); es formar el dos
bit_set (puerto_b, 4);
bit_set (puerto_b, 5);
bit_set (puerto_b, 7);
}
else{
bit_clear(puerto_b, 1);
bit_clear(puerto_b, 3);
bit_clear(puerto_b, 4);
bit_clear(puerto_b, 5);
bit_clear(puerto_b, 7);
}
if(!input (pin_a2)){ pregunta si esta presioado la entrada a1
bit_set (puerto_b, 1); si es correcto saque por la puerta b cinco segmento la idea
bit_set (puerto_b, 3); formar el 3
bit_set (puerto_b, 4);
bit_set (puerto_b, 6);
bit_set (puerto_b, 7);
}
else{
bit_clear(puerto_b, 1);
bit_clear(puerto_b, 3);
bit_clear(puerto_b, 4);
bit_clear(puerto_b, 6);
bit_clear(puerto_b, 7);
}
}
while (true);
}


aparentemente esta muy carretero, y la idea es hacer una sintaxis que inicialmente pregunte que boton esta presionado y uina ves identifiacdo que boton es realizar el sacado de datos, para mi que esto no esta bien..

se agradese su ayuda
 
Atrás
Arriba