Está en la página 1de 2

Hola Angel_K_ido, Como te fue con los conversores AD?

Te comento que yo tambien he estado iniciand ome con los microcontroladores y ya prob con el pic16f873 funcion muy bin, lo prob c on varias tipos de seal sando aplificacin. Otra prueba que hice, porque dubaba de la resolucin del ADC, fue montar un programa que encontre en una pgina web que te muestra los 10 bits de la conversin en una pantalla de cirstal lquido LCD. Aqu te envo 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 mdulo conversor ADC. ; ;Los dispositivos PIC16F87X disponen de un convertidor A/D de 10 bits de resoluc in y 5 u 8 ;canales de entrada analgica. La tensin de referencia determina la resolucin por bi t: ;(Res. = Vref/1024). Con 5 Vref=4.8 mV/Bit; con 2.5 Vref=2.4 mV/Bit ; ;El ejemplo propone realizar la conversin de la tensin presente en el canal RA3/AN 3. Esta ;se puede variar con el potencimetro AN3 alojado en la tarjeta Micro'PIC Trainer. El resul;tado de la conversin se visualiza, en binario, sobre la pantalla LCD. List p=16F873 ;Tipo de procesador include "P16F873.INC" ;Definiciones de registros internos Lcd_var Temporal_1 equ equ 0x20 0x22 ;Variables de las rutinas LCD ;Variable temporal

org 0x00 goto Inicio

;Vector de Reset

org 0x05 ;Salva el vector de interrupcin include "LCD_CXX.INC" ;Incluye rutinas de manejo del LCD ;Visualiza: Esta rutina coge los 10 bits resultantes de la conversin, presentes e n ADRESH ;y ADRESL, los convierte a caracteres ACII (0 o 1) y los visualiza sobre el LCD. Visualiza: call movlw movwf Visual_loop rlf bcf rlf btfsc goto movlw goto movlw 0x80 LCD_REG ;Sita el cursor del LCD .9 Temporal_1 ;N de caracteres a visualizar bsf STATUS,RP0 ADRESL,F STATUS,RP0 ADRESH,F ;Rotacin del siguiente bit STATUS,C ;Testea el bit a visualizar Bit_1 ;Est a 1 '0' Visu_1

Bit_1 Visu_1

movlw '1' call LCD_DATO decfsz Temporal_1,F goto Visual_loop return

;Visualiza el "0" o el "1" sobre el LCD ;Siguiente caracter

;Programa principal Inicio clrf bsf movlw movwf clrf clrf movlw movwf bcf clrf PORTA PORTB STATUS,RP0 ;Selecciona banco 1 b'00000110' ADCON1 ;Puerta A E/S digitales TRISB ;Puerta B se configura como salida TRISA ;RA4-RA0 salidas b'11001111' OPTION_REG ;Preescaler de 128 asociado al WDT 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/3 2 movlw movwf Loop b'10011001' ADCON0 ;ADC en On, seleciona canal AN3

clrwdt bsf STATUS,RP0 ;Selecciona pgina 1 movlw b'00011111' movwf TRISA ;Puerta A entradas clrf ADCON1 ;Puerta A entradas analgicas bcf STATUS,RP0 ;Selecciona pgina 0 bcf PIR1,ADIF ;Restaura el flag del conversor AD nop bsf ADCON0,GO ;Inicia la conversin

ADC_Wait btfss PIR1,ADIF ;Fin de conversin ?? goto ADC_Wait ;Todava no ;Las lneas de la Puerta A se reconfiguran como salidas digitales para la visualiz acin bsf movlw movwf bcf call call goto end STATUS,RP0 ;Selecciona banco 1 b'00000110' ADCON1 ;Puerta A digital STATUS,RP0 ;Selecciona banco 0 UP_LCD ;Reconfigura E/S para el LCD Visualiza ;Visualiza el resultado de la conversin Loop ;Fin del programa fuente

También podría gustarte