Not able to understand the behaviour of PIC18F458 ADC output on PORT B with LED's
One simple way to see the value of ADRESH might be to send it to PORTB (configured as an 8 bit output port) then monitor the voltages on each pin with a meter or LEDs.

You may find it isn't working because this code,

while(!PIR1bits.ADIF)    
    PIR1bits.ADIF = 0;


is a loop that continuously resets the ADC interrupt flag until it becomes set. Problem is the flag may become set after being tested but before being reset, then your code gets stuck in the loop. If it manages to break out of the loop then the flag doesn't get reset, and you read the ADC result before it is ready.

What you want is this:- 

while(!PIR1bits.ADIF);   // wait until ADC int flag is set 
PIR1bits.ADIF = 0;       // clear ADC int flag