After trying unsucessfully to get Microchip's example code (among others) to work, I hacked out this modification which seems to do the job, at least for me. If anyone else is having as a much difficulty as I did, this may help get things going. FWIW, the remaining least-significant bits are in ADRESL but this example makes use of the most-significant 8 bits left justified into ADRESH. JB ;16f877 a/d test routine ; ;TEST CIRCUIT: ;pin 11 & 32 = 5VDC ;pin 12 & 31 = 0VDC ;pin 1 = 5VDC ;pin 2 = 0 - 5 VDC analog input (center tap on 20k variable resistor) ;pin 13 & 14 = 4MHz crystal with 18pF capacitors to 0VDC ;pin 15,16,17,18,23,24,25,26 PORTC outputs each to 330 ohm resistor ; in series with LED to 0VDC ;********************************************************** __config _LVP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BODEN_OFF & _DEBUG_OFF list p=16f877 include "p16f877.inc" ; Start at the reset vector org 0x000 goto Start org 0x004 Interrupt retfie Start bsf STATUS,RP0 ;bank 1 bcf STATUS,RP1 movlw H'00' movwf TRISC ;portc [7-0] outputs clrf ADCON1 ;left justified, all inputs a/d bcf STATUS,RP0 ;bank 0 movlw B'01000001' ;Fosc/8 [7-6], A/D ch0 [5-3], a/d on [0] movwf ADCON0 Main call ad_portc goto Main ad_portc ;wait for acquision time (20uS) ;(non-critical for this test) bsf ADCON0,GO ;Start A/D conversion Wait btfsc ADCON0,GO ;Wait for conversion to complete goto Wait movf ADRESH,W ;Write A/D result to PORTC movwf PORTC ;LEDs return end