//programa en C, pic 16f877a, 4MHZ
//MOVIMIENTO DE MOTOR CON SWITCHES
#define A          PORTA.RA0
#define B          PORTA.RA1
#define C          PORTA.RA2
#define D          PORTA.RA3
#define E          PORTA.RA4

#define DERECHA_A           PORTD.RD0
#define IZQUIERDA_A         PORTD.RD1
#define DERECHA_B           PORTD.RD2
#define IZQUIERDA_B         PORTD.RD3

void main() {
ADCON1=7;             //DESACTIVO LOS CONVERSORES ANALOGICOS DIGITALES
CMCON=7;              //DESACTIVO COMPARADORES ANALOGICOS
TRISA=1;              //PUERTOS DECLARADOS COMO ENTRADAS
PORTA=0;              //PUERTO DECLARADO SI ESTAN APAGADOS O PRENDIDOS
TRISD=0;
PORTD=0;
      MOTOR:
            if (A==1 && B==1 ){
              DERECHA_A=0;  IZQUIERDA_A=1;
              DERECHA_B=0;  IZQUIERDA_B=0;
            }
            else if (B==1 && C==1)
            {
              DERECHA_A=1;  IZQUIERDA_A=0;
              DERECHA_B=1;  IZQUIERDA_B=0;
            }
            else if (C==1 && D==1)
            {
              DERECHA_A=1;  IZQUIERDA_A=0;
              DERECHA_B=1;  IZQUIERDA_B=0;
            }
            else if (D==1 && E==1)
            {
              DERECHA_A=0;  IZQUIERDA_A=0;
              DERECHA_B=1;  IZQUIERDA_B=0;
            }
            else{
              DERECHA_A=0;  IZQUIERDA_A=0;
              DERECHA_B=0;  IZQUIERDA_B=0;
            }
      goto MOTOR;
}