The following is the setting I used last time for reading three ADC channels .

Code:
CMCON = 7                                     ' comparator off

DEFINE OSC 32

PortA = 0                                       ' set portA all zero
PortB = 0                                       ' set portB all zero
PortC = 0                                       ' set portC all zero

TrisA = %00101111                               ' set portA as Inp/Outputs
TrisB = %00000000                               ' set portB as inputs
TrisC = %10000000                               ' set portC as inputs/Outputs

'--------------------------------------------------------------------------
'                         set ADC registers
'--------------------------------------------------------------------------
ADCON1 = %00001010                              'Vref- = Vss + Vref+ = Vdd + An0 to An4 analog rest Digital
ADCON2 = %10100010                              'R.Justified + 8 TAD + FOSC/32
Then for reading ADC I don't use the PBP instruction but the following code:

Code:
Chan = Chan + 1
If Chan > 4 then Chan = 0

'if Chan = 0 then gosub Adjust_S_Point           ' Adjust setpoint with external temp.                 

          ADCON0 = AdcN[Chan] 
        ADCON0.0 = true                               ' ADC on
        ADCON0.1 = True                               ' GoDone True
  while ADCON0.1 = true
  wend
        ADCON0.0 = False                              ' ADC off
 ADvalue.lowbyte = ADRESL
ADvalue.highbyte = ADRESH

See if you can use it.

Cheers

Al.