Hola a todos, antes de nada quiero agradecer a tod@s los que haceis posible este foro, el tema que me lleva a la consulta es le siguiente: He configurado el conversor AD del PIC16f88 y me realiza la conversion si la paso a PORTB y enciendo unos led, pero cuando lo guardo en un registro (TEMP_AD) no me lo guarda y es todo ceros. mi programa es el siguiente:
;* **** Jordi Jover Barceló 2009 **** *
;* TITULO:Uso del conversor A/D *
;* FECHA:28-MAYO-2009 *
;* NOMBRE FICHERO: ConversorAD.asm VERSION:1.0 *
;* COMENTARIO:Uso y pruebas para el conversor del PIC16F88A.En este caso apago un led *
;* en Rb0 si superamos la tension en el A/D
;* *
;* *
;* *
;* *
;* *
;* *
;***************************************************************************************
; ****CONFIGURACIÓN DEL MICROCONTROLADOR****
; list p=16F88
PROCESSOR 16F88
INCLUDE "p16f88.inc"
RADIX DEC
; INCLUDE "retardos.inc"
ERRORLEVEL -302
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
ORG 0x20
;*********************************ETIQUETADO REGISTROS********************************
V12 EQU b'00110010'
V11 EQU b'11111010'
Contador1 EQU 0Ch
Contador2 EQU 0Dh
Temp_AD EQU 30h ;Registro temporal para guardar dato convertido
Valor_FIJO EQU 31h ;Registro para introducir el valor de tensión de corte
;*********************************INICIO***************************************
inicio
banksel ANSEL
movlw B'00000001' ;Configuro el registro ANSEL para que RA0 sea Analogico (1) y los otros DIGITALES (0)
movwf ANSEL
banksel TRISB
movlw B'00000000' ;Todo PORTB lo configuro a SALIDA, todo ceros
movwf TRISB
banksel TRISA
movlw b'000000' ;Todo PORTA lo configuro a SALIDA menos Ra1
movwf TRISA
banksel ADCON1
movlw B'00000000' ;Configuro ADCON1 para Justificacion Izq, divisor relog por 2 deshabilitado,tension de referencia AVDD y AVSS
movwf ADCON1
banksel ADCON0
movlw B'00000001' ;Configuro ADCON0 para Fosc/8, Selecciono canal 0 (RA0/AN0)y hago operativo el módulo convertidor con el último bit a 1
movwf ADCON0
;************************************PRINCIPAL***********************************
clrw
movwf PORTA
movwf PORTB
clrf PORTB
bsf PORTB,0
bsf PORTB,1
bcf INTCON,GIE
bcf INTCON,PEIE
call Conversion
subwf V12,w
btfsc STATUS,Z
bcf PORTB,0
STOP
goto STOP
Conversion
bsf ADCON0,2 ;Comienzo conversión
Espero_Conv
btfsc ADCON0,2 ;Espero a que finalice la conversión
goto Espero_Conv
movf ADRESH,w ;Conversión efectuada, salvo ADRESH en W
movwf PORTB
return
end
En fin...nunca he trabajado con los AD y siempre he utilizado el PIC16f84A , si me podeis echar una mano os lo agradeceria.
Gracias