La salida del convertidor analogico digital es de 10 bits, asi que el resultado de la conversion A/D se almacena en dos bytes, uno es la parte alta y otro es la parte baja.
Para simplificar se uso referencia de 5 V lo cual significa que si le aplico de 0 a 1 volt el resultado cabrá en un solo byte, que es la parte baja, este byte se mueve entonces a un puerto del pic para presentarse como un numero binario en un display de leds.
Así Funciona:
VA EL PROGRAMA:
++++++++++++++++inicia programa++++++++++++++++++++++++++++
;PROGRAMA QUE PRUEBA LA CONVERSION AD DEL PIC
;1stentropy
;DICIEMBRE 2 DE 2009 8:39AM
__config _LVP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BODEN_OFF & _DEBUG_OFF
list p=16f876
#include
cont1 equ 0x21
cont2 equ 0x22
org 0x00
GOTO Inicio
org 0x04 ;rutina de servicio de interrupciones
Interrupciones
retfie
Inicio
BCF STATUS,RP0 ; Select Bank0
BCF STATUS,RP1
CLRF PORTA ; limpia el puerto A
CLRF PORTB ; y el puerto B
BSF STATUS,RP0 ; Select Bank1
CLRF ADCON1 ; Configure A/D inputs todas las entradas en el puerto A seran entradas analogicas
BSF ADCON1,ADFM ; Se alineara a la derecha los diez digitos del resultado de la conversion A/D
MOVLW 0x3F ;Cargo W=b'00111111'
MOVWF TRISA ;y lo paso a trisA. para que los pines funcionen como entradas.
MOVLW 0x00
MOVWF TRISB ;Configura puerto B como salidas
BCF STATUS,RP0 ; Select Bank0
MOVLW 0xC1 ; Clock 1/32 fosc, Channel RA0 is selected, A/D module is on
MOVWF ADCON0 ;
; BCF PIR1,ADIF ; Clear A/D interrupt flag bit
; BSF INTCON,PEIE ; Enable peripheral interrupts
; BCF INTCON,GIE ; Enable all interrupts
Adquiere
CALL Espera ; Ensure that the required sampling time for the selected input
; channel has elapsed. Then the conversion may be started.
;
BSF ADCON0,GO ; Start A/D Conversion
; The ADIF bit will be set and the GO/DONE
; bit is cleared upon completion of the
; A/D Conversion.
Conversion
BTFSC ADCON0,GO
GOTO Conversion
BSF STATUS,RP0 ; Select Bank1
MOVF ADRESL,W
BCF STATUS,RP0 ; Select Bank0
MOVWF PORTB
GOTO Adquiere
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Espera
CLRF cont1
; CLRF cont2
Retardo
DECFSZ cont1,f
GOTO Retardo
; DECFSZ cont2,f
; GOTO Retardo
RETURN
END
+++++++++++++++++++++termina programa++++++++++++++++++++++++++