#include <16f84a.h> // incluimos la libreria para este pic
#fuses XT,NOWDT,NOPROTECT // configuramos los fusibles de programacion
// XT - cristal de cuarzo
// NOWDWT - no perro guardian
// NOPROTECT - no protegido
#use delay(clock=4000000) // velocidad de reloj en HZ
//// Declaración de variables ////
//// Configuramos salidas y entradas ////
void main (void)
{
output_high (PIN_B0);
output_high (PIN_B1);
output_high (PIN_B2);
output_high (PIN_B3);
output_high (PIN_B4);
set_tris_b (0x00); // Declaramos puerto B como salida
set_tris_a (0x1F); // Declaramos puerto A como entrada
WHILE (TRUE) // Bucle infinito DO
{
If (input (PIN_A0)) // Si la entrada es 1
{ delay_ms (10); // esperamos 10 ms
If (input (PIN_A0)) // comprobamos otra vez la entrada sea 1, por temas de rebote
{ do { } while (input (PIN_A0)); // esperar a soltar el boton
output_toggle(PIN_B0); // el puerto b cambia al complementario.
}
}
If (input (PIN_A1)) // Si la entrada es 1
{ delay_ms (10); // esperamos 10 ms
If (input (PIN_A1)) // comprobamos otra vez la entrada sea 1, por temas de rebote
{ do { } while (input (PIN_A1)); // esperar a soltar el boton
output_toggle(PIN_B1); // el puerto b cambia al complementario.
}
}
If (input (PIN_A2)) // Si la entrada es 1
{ delay_ms (10); // esperamos 10 ms
If (input (PIN_A2)) // comprobamos otra vez la entrada sea 1, por temas de rebote
{ do { } while (input (PIN_A2)); // esperar a soltar el boton
output_toggle(PIN_B2); // el puerto b cambia al complementario.
}
}
If (input (PIN_A3)) // Si la entrada es 1
{ delay_ms (10); // esperamos 10 ms
If (input (PIN_A3)) // comprobamos otra vez la entrada sea 1, por temas de rebote
{ do { } while (input (PIN_A3)); // esperar a soltar el boton
output_toggle(PIN_B3); // el puerto b cambia al complementario.
}
}
if ((output_low (PIN_B0))&& (output_low (PIN_B1))&& (output_low (PIN_B2))&& (output_low (PIN_B3))){output_toggle(PIN_B4);}
}
}