Подождите, пока АЦП будет готов, а затем прочитайте результат.
while (ADCONbits.GO_DONE); //wait until conversion is ready
result = (((uint16_t)(ADRESH) << 8)) | ADRESL;
Но лучшее, что вы можете сделать, это написать функцию, например int_16_t readADC(int16_t channel)
где вы:
- выберите канал
- запустить АЦП
- дождаться его готовности
- затем вернуть результат.