mmmm reemplazaria varias cosas ahi, a mi gusto...
La conversion se inicia seteando el bit1 (GO_DONE) de ADCON0, y este se pone a 0 cuando termina la conversion.
A mi gusto y sin interrupciones (solo si fuera para aprender) haria algo asi:
BSF ADCON0,ADON ; Es lo ultimo a activar, asi que tu configuracion a ADCON0 deberia ser 04h
ADC
BSF ADCON0,GO_DONE ;Que comienze la conversion
ADC_ON
BTFSC ADCON0,GO_DONE ; Termino? sino que vuelva a preguntar, termina cuando se pone a 0 ( es decir salta el goto )
GOTO ADC_ON ;
MOVFF ADRESH,LATB ; Escribo el puerto, estos tienen LATx ( generalmente LATx para escribir y PORTx para leer )
GOTO ADC ; Vuelvo a comenzar el proceso de conversion
Espero que asi ande.. si quisieras hacer otra cosa y no ocupar ese tiempo esperando el fin de la conversion deberias de usar una interrupcion que se activa cuando termina la conversion. Imagino que todo lo demas esta seteado.
Por que a ese codigo le falta mas cosas. Por ejemplo no veo donde estas declarando como entrada al pin del A/D como entrada ( BSF TRISA,RA1 (AN1) ) solo las salida, al igual que los vectores de inicio e interrupcion. Pero imagino que pusiste solo una parte del codigo