Está en la página 1de 6

Conversion analgico/digital

Los registros implicados en la preparacin de una conversin analgica-digital son los siguientes:
1.
2.
3.
4.

ADCON0
ADCON1
ADCON2
TRISA

El primero sirve para configurar, el canal de entrada, activacin de la conversin y encendido del mdulo A/D. El
segundo registro sirve para configurar las entradas del puerto A como combinacin entre digitales y analgicas.
El tercero sirve para especificar el formato (justificacin) del valor devuelto y el reloj utilizado en la conversin.
Por ltimo, el registro TRISA sirve para configurar los pines del puerto A como entradas.

La programacin de ambos periodos se hace mediante los bits ACQT2:ACQT0 y ADCS2:ADCS0 del registro
ADCON2. Por ejemplo, para Fosc = 8Mhz, como TAD debe estar en el rango (0,7-25), el valor de los bits
ADCS2:ADCS0debe ser por lo menos de:
TAD=(1/Fosc)*divisor =>

(0,7-2.5) = (1/8Mhz)*divisor => divisor=4;

Por lo tanto TAD= (4/8Mhz)= .5 => no cumple


ADCS2:ADCS0=100.

Tendramos que seleccionar el divisor de 8


Adems ACQT2:ACQT0=111, => TACQ=20TAD=20*1.

Luego se debe activar el bit GO_DONE queda comienzo a la conversin. A continuacin debemos esperar a que
acabe la conversin, para ello se monitoriza el propio bit GO_DONE hasta que se haga cero (se termin la
conversin). Posteriormente se puede recuperar el resultado de10 bits en los registros ADRESH y ADRESL
segn la alineacin (derecha o izquierda) que se hubiera elegido.
La siguiente seccin de cdigo muestra cmo realizar la lectura de un valor analgico siguiendo los pasos
explicados anteriormente. En este ejemplo se ha especificado un reloj de conversin Fosc/4, se ha elegido la
entrada AN0, todos los pines son analgicos y el resultado est alineado a la derecha (8 bits bajos en el registro
ADRESL y los dos bits de mayor peso en ADRESH):

LIST p=18F4550
#INCLUDE "P18F4550.INC"
;CONFIG1L dir 300000h
20
;CONFIG
PLLDIV=1
;
;CONFIG
CPUDIV=OSC1_PLL2 ;CUANDO SE USA XTAL
;CONFIG
USBDIV=2
;CONFIG1H dir 300001h 08
CONFIG
FOSC=INTOSCIO_EC ;OSCILADOR INTERNO, RA6 COMO
PIN, USB USA OSC EC
CONFIG
FCMEN=OFF
;DESHABILITDO EL MONITOREO DEL
RELOJ
CONFIG
IESO=OFF
;CONFIG2L DIR 300002H 38
CONFIG
PWRT=ON
;PWRT HABILITADO
CONFIG BOR=OFF ;BROWN OUT RESET DESHABILITADO
CONFIG BORV=3
;RESET AL MINIMO VOLTAJE NO UTILZADO EN ESTE
CASO
CONFIG
VREGEN=ON ;off usb regulador
;CONFIG2H DIR 300003H 1E
CONFIG
WDT=OFF
;WACH DOG DESHABILITADO
CONFIG WDTPS=32768
;TIMER DEL WATCHDOG
;CONFIG3H DIR 300005H 81
CONFIG
CCP2MX=ON
;CCP2 MULTIPLEXADAS CON RC1
CONFIG
PBADEN=OFF
;PUERTO B PINES DEL 0 AL 4 ENTRADAS
DIGITALES
CONFIG LPT1OSC=OFF
;TIMER1 CONFIURADO PARA OPERAR EN
BAJA POTENCIA
CONFIG
MCLRE=ON
;MASTER CLEAR HABILITADO
;CONFIG4L DIR 300006H 81
CONFIG
STVREN=ON ;SI EL STACK SE LLENA CAUSE RESET
CONFIG
LVP=OFF
;PROGRAMACIN EN BAJO VOLTAJE APAGADO
CONFIG
ICPRT=OFF ;REGISTRO ICPORT DESHABILITADO
CONFIG
XINST=OFF ;SET DE EXTENCION DE INSTRUCCIONES Y
DIRECCIONAMIENTO INDEXADO DESHABILITADO
;CONFIG5L DIR 300008H 0F
CONFIG
CP0=OFF
;LOS BLOQUES DEL CDIGO DE PROGRAMA
CONFIG
CP1=OFF
;NO ESTAN PROTEGIDOS
CONFIG
CP2=OFF
CONFIG
CP3=OFF
;CONFIG5H DR 300009H C0
CONFIG
CPB=OFF
;SECTOR BOOT NO ESTA PROTEGIDO
CONFIG
CPD=OFF
;EEPROM N PROTEGIDA
;CONFIG6L DIR 30000AH 0F
CONFIG
WRT0=OFF
;BLOQUES NO PROTEGIDOS CONTRA
ESCRITURA
CONFIG
WRT1=OFF
CONFIG
WRT2=OFF
CONFIG
WRT3=OFF
;CONFIG6H DIR 30000BH E0

CONFIG

WRTC=OFF

;CONFIGURACION

DE

REGISTROS

NO

PROTEGIDO
CONFIG
WRTB=OFF ;BLOQUE BOOTEBLE NO PROTEGIDO
CONFIG
WRTD=OFF ;EEPROMDE DATOS NO PROTGIDA
;CONFIG7L DIR 30000CH 0F
CONFIG
EBTR0=OFF ;TABLAS DE LETURA NO PROTEGIDAS
CONFIG
EBTR1=OFF
CONFIG
EBTR2=OFF
CONFIG
EBTR3=OFF
;CONFIG7H DIR 30000DH 40
CONFIG
EBTRB=OFF ;TABLAS NO PROTEGIDAS
ORG 0X000000
MOVLW
0x07
MOVWF
CMCON
;E/S
QUE
OPERAN
COMO
COMPARADORES OFF
MOVLW
0XFF
MOVWF
OSCCON
;CONFIGURAR EL PUERTO A COMO ENTRADAS
CLRF PORTA
SETF TRISA
;CONFIGURAR EL PUERTO A COMO ENTRADAS DIGITALES O ENTRADAS ANALOGICAS
;EN ESTE CASO Vref- 0 vcd y Vref+ 5 vcd Y TODAS LAS ENTRADAS ANALOGICAS
MOVLW
0X1E
MOVWF
ADCON1
;SELECCION DEL CANAL (1)
;ADON BIT0=1 ACTIVACION Y ENCENDIDO DEL MODULO A/D
MOVLW
0X01
MOVWF
ADCON0
;CONFIGURACION DEL TIEMPO DE ADQUISICION Y EL TIEMPO DE CONVERSION
;SELECCION DEL TIEMPO DE ADQUISICIN 8TDA
;SELECCION DEL RELOJ PARA LA CONVERSIN Fosc DERIVADO DEL OSCILADOR RC
;FORMATO DEL RESULTADO JUSTIFICANDO A LA IZQUIERDA LOS BITS DEL
RESULTADO ADRESH
;ADRESL SON LOS BITS MENOS SIGNIFICATIVOS
;RESOLUCION DE ADC ES DE 10 BITS
MOVLW
0XA3
MOVWF
ADCON2
;SE CONFIGURA EL PUERTO B COMO SALIDA DIGITAL
CLRF PORTB
CLRF PORTD
MOVLW
B'00000000'
MOVWF
TRISB
MOVWF
TRISD
;INICIAMOS LA CONVERSION GO/DONE=1
OTRO
BSF ADCON0,GO_DONE
;PREGUNTAMOS POR EL ESTADO, SI YA TERMINO LA CONVERSION
ESPERA
BTFSCADCON0,GO_DONE
GOTO
ESPERA
MOVF ADRESH,W

MOVWF
PORTB
MOVF ADRESL,W
MOVWF
PORTD
GOTO
OTRO
END

También podría gustarte