Bomba de agua simulada en display

Bueno soy estudiante de bachillerato y soy nuevo en esto de los pic bueno mi profe me dejo un proyecto donde por medio del display catodo comun y el pic 16f84a cuando no se apriete nada el 0 va estar prendido con el punto cuando apachurremos el boto 1 aparece el 1 con el punto cuando apachurremos el boton 1 y 2 al mismo tiempo aparece el 2 con el punto cuando se aprieta el boton 1, 2 y 3 al mismo tiempo aparece el 3 con el punto cuando apretamos el boton 1, 2, 3 y 4 al mismo tiempo aparece el 4 "sin" el punto y ahora soltamoS el boton 4 y aparece el 3 sin el punto soltamos el 3 y aparece el 2 sin el punto soltamos el 2 y aparece el 1 sin el punto soltamos todos y esta el 0 con el punto.

Ya tengo asta el 4 sin punto pero no se como hacer para dejar el punto apagado cuando voy soltando los botones ayuda por favor lo estoy haciendo en pic c compiler ayuda por favor gracias por sus respuestas todo vale.

esto es lo que llevo

/*Bomba.*/

# include <16F84A.h>
# use delay(clock=4000000)
# fuses XT,NOWDT
# byte puerto_b=06 //Dirección del puerto B
# byte puerto_a=05 //Dirección del puerto A

void main() {
int sp;
set_tris_b(0x00); //Configuro la puerta B como salida y RA0, RA1, RA2, RA3 y RA4 como
set_tris_a(0x1F); //entradas aunque por defecto ya están configuradas como entradas

puerto_b=0; //inicializo todos los bits de la puerta B a cero

while(true) //bucle infinito
{
if (input(PIN_A0)==false && input(PIN_A1)==false&& input(PIN_A2)==false && input(PIN_A3)==false)
{
puerto_b=0b10111111; //configura los bits de la puerta B
}
if (input(PIN_A0)==true && input(PIN_A1)==false&& input(PIN_A2)==false && input(PIN_A3)==false)
{
puerto_b=0b10000110;
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==false && input(PIN_A3)==false)
{
puerto_b=0b11011011;
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==true && input(PIN_A3)==false)
{
puerto_b=0b11001111;
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==true && input(PIN_A3)==true)
{
puerto_b=0b01100110;
}
}
}
 
Puedes utilizar una variable auxiliar, que en principio esta a 0 y cuando pulsas los 4 botones la pones a 1. Después cada vez que sueltas compruebas la variable. Algo asi:

if (input(PIN_A0)==false && input(PIN_A1)==false&& input(PIN_A2)==false && input(PIN_A3)==false)
{
puerto_b=0b10111111; //configura los bits de la puerta B
}
if (input(PIN_A0)==true && input(PIN_A1)==false&& input(PIN_A2)==false && input(PIN_A3)==false && aux==0)
{
puerto_b=0b10000110;
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==false && input(PIN_A3)==false && aux==0)
{
puerto_b=0b11011011;
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==true && input(PIN_A3)==false && aux==0)
{
puerto_b=0b11001111;
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==true && input(PIN_A3)==true && aux==0)
{
puerto_b=0b01100110;
aux=1;
}

if (input(PIN_A0)==true && input(PIN_A1)==false&& input(PIN_A2)==false && input(PIN_A3)==false && aux==1)
{
Aquí el uno sin el punto
aux=0; // Para volver a comenzar
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==false && input(PIN_A3)==false && aux==1)
{
Aquí el dos sin el punto
}
if (input(PIN_A0)==true && input(PIN_A1)==true&& input(PIN_A2)==true && input(PIN_A3)==false && aux==1)
{
Aquí el tres sin el punto
}
 
muchas gracias, me sirvio de mucho nada mas no entiendo eso de comprobar la variable en lo ultimo para quitar el punto.



grax amigo ya encontre mi error y ya lo tengo te debo una
 
Última edición:
Atrás
Arriba