Tengo una duda sobre una conversión A/D con el PIC 16F876A.
Hago lo siguiente, pero no me funciona:
; Como no quiero interrupciones por eso empiezo asi
INICIO
bsf STATUS,RP0
clrf TRISC
clrf TRISB
movlw b'00001011'
movwf TRIS
; bit 7-6:ADCS1:ADCS0: bit de selección de reloj para el Convertidor A/D, No pongo en marcha la conversion
; bit 5-3:CH2:CH0: bit de selección del canal analógico canal 0
; bit 2:GO/#DONE. bit de estado de la conversión A/D
; bit 1: No implementado: Se lee como “0”
; bit 0:ADON: bit de puesta en marcha, no activo la conversion
movlw b'11000000'
movwf ADCON0
; bit 7: ADFM: Selecciona el formato del resultado de la conversión A/D
; bit 6: ADCS2: Bit de selección de reloj del conversor A/D
; Bits 5-4: No implementados: Se leen como cero
; bit 3-0: PCFG3: PCFG0: bits de configuración de los canales de entrada del convertidor A/D
movlw b'11000000'
movwf ADCON1
bcf STATUS,RP0
PRINGIPAL
.
.
.
[Continua el programa]
.
.
.
; ***********************
; Subrutina de conversion
; ***********************
; selecciono el canal de conversion 3
bcf ADCON0,CHS2
bsf ADCON0,CHS1
bsf ADCON0,CHS0
call CONVERSION ; Llamada a la subrrutina
; Guarda el resultado de la conversion
movf ADRESL,W
movwf Registro
; ************************
; SUBRUTINA DE CONVERSION
; ************************
CONVERSION
bsf ADCON0,ADON
bsf ADCON0,GO_DONE
BUCLE_CONVERSION
btfsc PIR1,ADIF
goto BUCLE_CONVERSIO
return
Me podria decir alguien que es lo que hago mal?
Hago lo siguiente, pero no me funciona:
; Como no quiero interrupciones por eso empiezo asi
INICIO
bsf STATUS,RP0
clrf TRISC
clrf TRISB
movlw b'00001011'
movwf TRIS
; bit 7-6:ADCS1:ADCS0: bit de selección de reloj para el Convertidor A/D, No pongo en marcha la conversion
; bit 5-3:CH2:CH0: bit de selección del canal analógico canal 0
; bit 2:GO/#DONE. bit de estado de la conversión A/D
; bit 1: No implementado: Se lee como “0”
; bit 0:ADON: bit de puesta en marcha, no activo la conversion
movlw b'11000000'
movwf ADCON0
; bit 7: ADFM: Selecciona el formato del resultado de la conversión A/D
; bit 6: ADCS2: Bit de selección de reloj del conversor A/D
; Bits 5-4: No implementados: Se leen como cero
; bit 3-0: PCFG3: PCFG0: bits de configuración de los canales de entrada del convertidor A/D
movlw b'11000000'
movwf ADCON1
bcf STATUS,RP0
PRINGIPAL
.
.
.
[Continua el programa]
.
.
.
; ***********************
; Subrutina de conversion
; ***********************
; selecciono el canal de conversion 3
bcf ADCON0,CHS2
bsf ADCON0,CHS1
bsf ADCON0,CHS0
call CONVERSION ; Llamada a la subrrutina
; Guarda el resultado de la conversion
movf ADRESL,W
movwf Registro
; ************************
; SUBRUTINA DE CONVERSION
; ************************
CONVERSION
bsf ADCON0,ADON
bsf ADCON0,GO_DONE
BUCLE_CONVERSION
btfsc PIR1,ADIF
goto BUCLE_CONVERSIO
return
Me podria decir alguien que es lo que hago mal?