Вы находитесь на странице: 1из 3

Ejemplo de conversin Anlogo a Digital

U1 RV1
13 14 1 2 3 4 5 6 7 8 9 10 OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 200 200 200 200 200 200 200 200

10k +88.8
Volts

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877

D1

D2

D3

D4

D5

D6

D7

D8

LED-RED LED-RED LED-RED LED-RED LED-RED LED-RED LED-RED LED-RED

; Conversin A/D a 8 bits, el resultado del registro ADRESH se muestra en los LEDs ; ******** DEFINICION DE REGISTROS UTILIZADOS pcl status ptoa ptob ptoc ptod ptoe pclath intcon pir1 rcsta txreg rcreg adresh adcon0 trisa trisb trisc trisd trise txsta spbrg adresl adcon1 equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ 02h 03 05 06 07 08 09 0ah 0bh 0ch 18h 19h 1ah 1eh 1fh 85h 86h 87h 88h 89h 98h 99h 9eh 9fh

;Definicin de bits utilizados rp0 rp1 irp equ equ equ 5 6 7

z c txif go

equ equ equ equ

2 0 4 2

;Variables del usuario loops equ loops2 equ buffer equ contador 30h 31h 32h equ

43h

; ************ Configuracin para el simulador Proteus list p=16f877 _CP_ALL _CP_HALF _CP_UPPER_256 _CP_OFF _DEBUG_ON _DEBUG_OFF _WRT_ENABLE_ON _WRT_ENABLE_OFF _CPD_ON _CPD_OFF _LVP_ON _LVP_OFF _BODEN_ON _BODEN_OFF _PWRTE_OFF _PWRTE_ON _WDT_ON _WDT_OFF _LP_OSC _XT_OSC _HS_OSC _RC_OSC EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU H'0FCF' H'1FDF' H'2FEF' H'3FFF' H'37FF' H'3FFF' H'3FFF' H'3DFF' H'3EFF' H'3FFF' H'3FFF' H'3F7F' H'3FFF' H'3FBF' H'3FFF' H'3FF7' H'3FFF' H'3FFB' H'3FFC' H'3FFD' H'3FFE' H'3FFF'

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON

; ***** EMPIEZA EL PROGRAMA org goto 00 inicio ;subrutina de retardo en milisegundos retarms movwf loops top2 movlw d'110' movwf loops2 top nop nop nop nop nop nop ;el numero de milisegundos llega ;cargado en el registro loops

decfsz goto decfsz goto return conver nop nop nop nop nop nop nop nop bsf nop nop consu btfsc goto movf movwf return

loops2,1 top loops,1 top2

;pregunta si termino 1 ms ;pregunta si termina el retardo

;Rutina de conversin A/D a 8 bits ;estas instrucciones nop sirven para ;darle al micro el tiempo de adquisicin ;requerido. En este caso es de 7 us aprox.

adcon0,go adcon0,go consu adresh,0 buffer

;inicia conversin ;espera que termine de convertir el dato ;guarda resultado de 8 bits en W y en buffer

; ************ PROGRAMA PRINCIPAL *************** inicio clrf bsf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf status status,rp0 b'11111111' trisa b'00000000' trisb b'11111111' trisc b'11111111' trisd b'11101111' trise ;poner status en cero para asegurar banco 0 ;pasar al banco 1 ;puerto A entradas ;puerto B salidas ;puerto C entradas ;puerto D entradas ;puerto E entradas ;selecciono Vref internos (+5 y GND) y 5 canales del puerto A anlogos ;el resultado de la conversin queda en ADRESH y 2 bits en ADRESL ;pasar al banco 0 ;selecciona canal anlogo 0, reloj de conv. fosc/32 ;convertidor encendido ;llama rutina de conversin A/D ;el resultado binario de la conversin llega en registro buffer y pasa a W ;entrega por el puerto B el dato binario de la conversin ;retardo entre conversiones de 4 caracteres ;este retardo equivale a 250 milisegundos ;el usuario puede escoger el tiempo que desee ;Vuelve a empezar el ciclo para hacer otra conversin

movlw b'00000010' movwf adcon1 bcf status,rp0

movlw b'10000001' movwf adcon0 call conver

movf buffer,0 movwf ptob movlw d'250' call retarms goto end inicio

Вам также может понравиться