Incorrect Manchester encoding from PIC microcontroller
You need to recheck your logic operations.
Your code:  

if((Encode_val &amp; 0x01))
  ENCODER_OUT = ((Encode_val &amp; 0x01) | (ENCODER_OUT &amp; MANCHESTER_BIT)); //next bit to transmit "1"
else
  ENCODER_OUT = ((Encode_val &amp; 0x01) &amp; (ENCODER_OUT &amp; MANCHESTER_BIT)); //next bit to transmit "0"  


will evaluate to:  

if(Encode_val &amp; 0x01)
  ENCODER_OUT = 1;
else
  ENCODER_OUT = 0;  


because, if (Encode_val &amp; 0x01) is true,
then ENCODER_OUT = ((Encode_val &amp; 0x01) | (ENCODER_OUT &amp; MANCHESTER_BIT))
becomes ENCODER_OUT = (1 | (ENCODER_OUT &amp; MANCHESTER_BIT))
and (1 | anything) == 1
similarly, if (Encode_val &amp; 0x01) is false,
then ENCODER_OUT = ((Encode_val &amp; 0x01) &amp; (ENCODER_OUT &amp; MANCHESTER_BIT))
becomes (0 &amp; (ENCODER_OUT &amp; MANCHESTER_BIT))
and (0 &amp; anything) == 0  

You're also using an xor function in ENCODER_OUT ^= MANCHESTER_BIT and expecting the result to always be 0, but it will actually depend on the previous value of ENCODER_OUT.
I would rather do something like ENCODER_OUT = !MANCHESTER_BIT there.