;Conversor A/D del 16F877A
;CRISTAL : 20Mhz
LIST P=16F877A
INCLUDE<P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_OFF
ORG 0000H
BSF STATUS,RP0 ;BANCO 1
CLRF TRISB ;PORTB = SALIDA
MOVLW B'11111111' ;PORTA = ENTRADA
MOVWF TRISA
BCF STATUS,RP0 ;BANCO 0
CALL Inicializa_AD
REPIT
CALL GO_AD
MOVWF PORTB
GOTO REPIT
;********************************************
Inicializa_AD
BSF STATUS,RP0 ;BANCO 1
MOVLW B'10000000' ;JUSTIFICACION A LA DERECHA
MOVWF ADCON1 ;TODO EL PORTA COMO ENTRADA ANALOGA
BCF STATUS,RP0 ;BANCO 0
MOVLW B'11000001' ; CLOCK = RC,ENTRADA ANALOGA "0", AD ENCENDIDO
MOVWF ADCON0
RETURN
GO_AD
BCF STATUS,RP0 ;BANCO 0
BSF ADCON0,GO_DONE ;INICIO LA CONVERSION
BTFSC ADCON0,GO_DONE ;ESPERO QUE TERMINE LA CONVERSION
GOTO $-1
BSF STATUS,RP0 ;BANCO 1
MOVF ADRESL,W
BCF STATUS,RP0 ;BANCO 0
RETURN
END