Pues esta rutina esta preparada para configurar el conversor y sacar el resultado por los puertos B y C del micro, esta diseñada para el 16f876
;dispositivo
LIST P=PIC16F876
INCLUDE <P16f876.INC>
;declara puerto(opcional)
;variables necesarias
DATOALTO EQU 20H
DATOBAJO EQU 21H
; programa
Org 05H
Inicio
CLRF CUENTA1 ;Ponemos a 0
CLRF CUENTA2
BCF STATUS,5 ;BANCO 0
MOVLW 81H ;FOSC/32 SELECCION DE RA0 configuramos adcon 0
MOVWF ADCON0
BSF STATUS,5 ;CAMBIO DE BANCO 1
MOVLW 8EH ;configuramos adcon1
MOVWF ADCON1
MOVLW 01H ;DEJANDO COMO ENTRADA A AN0
MOVWF TRISA
CLRF TRISB ;PUERTO B COMO SALIDA
CLRF TRISC ;PUERTO C SALIDA
CLRF DATOALTO ;Ponemos a 0
CLRF DATOBAJO
;MANEJO DE LA CONVERSION
UNO
CLRF ADRESL
BCF STATUS,5 ;VOLVEMOS AL BANCO 0
MOVF DATOALTO,W
MOVWF PORTC
MOVF DATOBAJO,W
MOVWF PORTB ;Sacamos variable por puerto B
CALL DELAY ;retardo
;INICIO DEL PROCESO
CLRF ADRESH ;limpiamos resultado parte superior
BSF ADCON0,2 ;EMPEZAR LA CONVERSION
CONVIERTE
BTFSC ADCON0,2 ;VERIFICACION DE
;FINALIZACION DE CONVERSION
GOTO CONVIERTE
MOVF ADRESH,W; (TAMBIEN 00)
MOVWF DATOALTO;PASAMOS LA PARTE ALTA DE LA CONVERSION
;A DATO ALTO
BSF STATUS,5;PASAMOS A BANCO 1
MOVF ADRESL,w;(TAMBIEN 00)
BCF STATUS,5;BANCO0
MOVWF DATOBAJO;PASAMOS LA PARTE ALTA DE LA CONVERSION
;A DATO BAJO
GOTO UNO
DELAY;escribir aqui rutina de retardo adecuada
END
La rutina de retardo depende del cristal, se utiliza para que se estabilice el convertidor y para un cristal de 4 Mhz bastara con 20 microsegundos
Alguna modificacion interesante es en lugar de justificar a la derecha,llenando de ceros los bits mas sifnificativos del registro ADRESH justificar a izquierda(llena de ceros los bits menos significativos de ADRESL), asi los 8 bits mas significativos estan en un mismo registro ADRESH, y podemos usar el convertidor como si fuera de 8 bits, mejorando la respuesta ante el ruido(al tener menos sensibilidad) y facilitando el manejo de la conversion, siempre que no sea critica la precision en la conversion