#define ForwardLeftWheel PORTB.B0
#define BackwardLeftWheel PORTB.B1
#define ForwardRightWheel PORTB.B2
#define BackwardRightWheel PORTB.B3

#define OuterRightIR PORTA.B0
#define InnerRightIR PORTA.B1
#define InnerLeftIR PORTA.B2
#define OuterLeftIR PORTA.B3

void main() {
     TRISA.B1 = 1;
     TRISA.B2 = 1;
     TRISA.B3 = 1;
     TRISA.B4 = 1;

     TRISB = 0X00;

     while(1) // Black = 1, White = 0
     {
             if(OuterLeftIR == 0 && InnerLeftIR == 1 && InnerRightIR == 1 && OuterRightIR == 0) //Mobot: Move Forward
             {
              ForwardLeftWheel = 1;
              BackwardLeftWheel = 0;
              ForwardRightWheel = 1;
              BackwardRightWheel = 0;
             }

             else if(OuterLeftIR == 1 && InnerLeftIR == 1 && InnerRightIR == 1 && OuterRightIR == 1) //Mobot: Stop
             {
              ForwardLeftWheel = 0;
              BackwardLeftWheel = 0;
              ForwardRightWheel = 0;
              BackwardRightWheel = 0;
             }

             else if(OuterLeftIR == 0 && InnerLeftIR == 1 && InnerRightIR == 1 && OuterRightIR == 1) //Mobot: Turn Right
             {
              ForwardLeftWheel = 1;
              BackwardLeftWheel = 0;
              ForwardRightWheel = 0;
              BackwardRightWheel = 0;
             }

             else if(OuterLeftIR == 1 && InnerLeftIR == 1 && InnerRightIR == 1 && OuterRightIR == 0) //Mobot: Turn Left
             {
              ForwardLeftWheel = 0;
              BackwardLeftWheel = 0;
              ForwardRightWheel = 1;
              BackwardRightWheel = 0;
             }

             else //Mobot: Other States Default to Stop
             {
              ForwardLeftWheel = 0;
              BackwardLeftWheel = 0;
              ForwardRightWheel = 0;
              BackwardRightWheel = 0;
             }


     }
}