PIC16F1936 Multiple ADC channel readings
You have the sense wrong in your adc code: "while (!ADCON0bits.GO_nDONE);" 
should be "while (ADCON0bits.GO_nDONE);".  You want to be stuck in the while loop while ADCON0bits.GO_nDONE is "1". When it is "0" the ADC has completed the measurement and you can then get out of the while loop and read the result.  Otherwise, you read the ADC register immediately after starting the conversion.  The result is then from the previous conversion.