Hola Angel_K_ido,
Como te fue con los conversores AD? Te comento que yo tambien he estado iniciandome con los microcontroladores y ya probé con el pic16f873 funcionó muy bién, lo probé con varias tipos de señal sando aplificación. Otra prueba que hice, porque dubaba de la resolución del ADC, fue montar un programa que encontre en una página web que te muestra los 10 bits de la conversión en una pantalla de cirstal líquido LCD.
Aquí te envío el programa asm original. Yo lo adapté a mis necesidades y Ok.
;
; EJEMPLO 21
;
; Autor: Mikel Etxebarria
; © Microsystems Engineering (Bilbao)
;
;Ejemplo MicroPIC Trainer y Micro'PIC I/O
;
;El módulo conversor ADC.
;
;Los dispositivos PIC16F87X disponen de un convertidor A/D de 10 bits de resolución y 5 u 8
;canales de entrada analógica. La tensión de referencia determina la resolución por bit:
;(Res. = Vref/1024). Con 5 Vref=4.8 mV/Bit; con 2.5 Vref=2.4 mV/Bit
;
;El ejemplo propone realizar la conversión de la tensión presente en el canal RA3/AN3. Esta
;se puede variar con el potenciómetro AN3 alojado en la tarjeta Micro'PIC Trainer. El resul-
;tado de la conversión se visualiza, en binario, sobre la pantalla LCD.
List p=16F873 ;Tipo de procesador
include "P16F873.INC" ;Definiciones de registros internos
Lcd_var equ 0x20 ;Variables de las rutinas LCD
Temporal_1 equ 0x22 ;Variable temporal
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva el vector de interrupción
include "LCD_CXX.INC" ;Incluye rutinas de manejo del LCD
;Visualiza: Esta rutina coge los 10 bits resultantes de la conversión, presentes en ADRESH
;y ADRESL, los convierte a caracteres ACII (0 o 1) y los visualiza sobre el LCD.
Visualiza: movlw 0x80
call LCD_REG ;Sitúa el cursor del LCD
movlw .9
movwf Temporal_1 ;Nº de caracteres a visualizar
Visual_loop bsf STATUS,RP0
rlf ADRESL,F
bcf STATUS,RP0
rlf ADRESH,F ;Rotación del siguiente bit
btfsc STATUS,C ;Testea el bit a visualizar
goto Bit_1 ;Está a 1
movlw '0'
goto Visu_1
Bit_1 movlw '1'
Visu_1 call LCD_DATO ;Visualiza el "0" o el "1" sobre el LCD
decfsz Temporal_1,F ;Siguiente caracter
goto Visual_loop
return
;Programa principal
Inicio clrf PORTA
clrf PORTB
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00000110'
movwf ADCON1 ;Puerta A E/S digitales
clrf TRISB ;Puerta B se configura como salida
clrf TRISA ;RA4-RA0 salidas
movlw b'11001111'
movwf OPTION_REG ;Preescaler de 128 asociado al WDT
bcf STATUS,RP0 ;Selecciona banco 0
call UP_LCD ;Configura E/S para el LCD
call LCD_INI ;Secuencia de inicio del LCD
movlw b'00001100'
call LCD_REG ;LCD On, cursor y blink Off
;Se activa el ADC y se selecciona el canal RA3/AN3. Frecuencia de trabajo Fosc/32
movlw b'10011001'
movwf ADCON0 ;ADC en On, seleciona canal AN3
Loop clrwdt
bsf STATUS,RP0 ;Selecciona página 1
movlw b'00011111'
movwf TRISA ;Puerta A entradas
clrf ADCON1 ;Puerta A entradas analógicas
bcf STATUS,RP0 ;Selecciona página 0
bcf PIR1,ADIF ;Restaura el flag del conversor AD
nop
bsf ADCON0,GO ;Inicia la conversión
ADC_Wait btfss PIR1,ADIF ;Fin de conversión ??
goto ADC_Wait ;Todavía no
;Las líneas de la Puerta A se reconfiguran como salidas digitales para la visualización
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00000110'
movwf ADCON1 ;Puerta A digital
bcf STATUS,RP0 ;Selecciona banco 0
call UP_LCD ;Reconfigura E/S para el LCD
call Visualiza ;Visualiza el resultado de la conversión
goto Loop
end ;Fin del programa fuente