;***********************************************************Espero que te funcione :comp:
; ADT.ASM
;***********************************************************
LIST p=16F877 ; indica el modelo de PIC
#include "P16F877.INC" ; archivo de encabezado
portb equ 0x06 ;Define el puerto b como salida fisica
trisb equ 0x06 ;Define la dirección del registro de direccion TRISB
status equ 0x03 ;Define la dirección del registro de estado
adresh equ 0x1e ;Registro de datos del convertidor A/D (Parte alta)
adcon0 equ 0x1f ;Registro 0 de control y estado del convertidor A/D
adcon1 equ 0x1f ;Registro 1 de control y estado del convertidor A/D
rp0 equ 5 ;Bits del registro de estado para cambiar de banco de memoria de datos
w equ 0 ;destino de la operacion registro w
ORG 0
movlw 00 ;Pone el valor de 00 en el registro de trabajo
bsf status,rp0 ;Apunta al banco 1
movwf trisb ;Se configura el puerto b como salida
clrf adcon1 ;Se configura que los datos de la conversion estaran justificados a la izquierda
;y se trabajara con las referencias de la fuente primaria de alimentacion (Vdd=6v)
bcf status,rp0 ;Apunta al banco 0
movlw 0x81 ;Activamos el convertidor A/D, seleccionamos el canal 0 para la conversion
movwf adcon0 ;y configuramos la sincronia del convertidor a su valor maximo (Fosc/32=625Khz)
conver: bsf adcon0,2 ;Iniciamos la conversion para leer el ATD
check: btfsc adcon0,2 ;Verificamos la conversion completa si ya se completo salte de lo contrario repita
goto check
movf adresh,w
movwf portb
goto conver ;Repita el proceso para leer un nuevo valor del atd
END