Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo:
VREF+ = VDD
VREF- = VSS
GO/DONE#:
1 - Conversión en progreso (comienza la conversión A/D)
0 - Final de conversión
ADON
1 - Módulo de conversión activado
0 - Módulo de conversión desactivado
REGISTRO ADCON1
ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0
RETURN
LIBRERÍA CONVERSION A/D
;*********RUTINA PARA ADQUIRIR DATO ANALOGO POR RA0***********
CONVER_RA0 bsf STATUS,RP0 ;Pasa al banco 1
bcf STATUS,RP1 ;Pasa al banco 1
clrf ADCON1 ;Configura todo el puerto B como AD
bsf ADCON1,ADFM ;**Pone la mayoría de # en ADRESL
bcf STATUS,RP0 ;Pasa al banco 0
movlw b'11000001' ;Oscilador RC interno, canal 0
movwf ADCON0 ;activación del conversor
nop ;tiempo para activación
nop
nop
nop
nop
nop
nop
nop
nop
nop
LIBRERÍA CONVERSION A/D
bsf ADCON0,GO ;Inicio de conversión
FIN_RA0 btfsc ADCON0,GO
goto FIN_RA0
nop
movf ADRESH,w ;traslada los bit mas significativos a w
movwf R_CONVER_H ;muestra la captura en el registro
bsf STATUS,RP0 ;BANCO 1
movf ADRESL,w ;traslada los bit mas significativos a w
bcf STATUS,RP0 ;BANCO 0
movwf R_CONVER_L ;muestra la captura en el registro
RETURN
LIBRERÍA CONVERSION A/D
;*********RUTINA PARA ADQUIRIR DATO ANALOGO POR RA1***********
RETURN
BINARIO A BCD
0 0 0 0 0 0 1 0
Centenas = 2
1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1
Decenas = 5
REG1 = 255
0 0 0 0 0 1 0 1
Unidades = 5
SUBRUTINA BINARIO-BCD
;SUBRUTINA DE CONVERSION DE BINARIO A BCD
;EL VALOR A CONVERTIR SE CARGA A W Y EL RESULTADO SE OBTIENE EN LOS REGISTROS unidad, decena y
;centena
;CARACTERISTICAS:
;OSCILLATOR: XT
;WATCHDOG TIMER: OFF
;POWER UP TIMER: ON
;BROWN OUT DETECT: OFF
;LOW VOLTAGE PROGRAM: DISABLE
;FLASH PROGRAM WRITE: WRITE PROTECTION OFF
;BACKGROUND DEBUG: DISABLED
;DATA EE READ PROTECT: OFF
;CODE PROTECT: OFF
endc
EJEMPLO DE PROGRAMACIÓN
INICIO bcf STATUS,RP1
bsf STATUS,RP0
bcf 1,7 ;Resistencias pull up ACTIVAS
bcf TRISE,PSPMODE ;Desactiva puerto paralelo esclavo
;Afecta puerta D también
movlw b'00000010'
movwf TRISD ;puerto D como salida y el RD1 para RF
movlw b'00000011' ;Configura puerto C para verificar sensores
movwf TRISC
clrf TRISE ;puerto E como salida
bcf STATUS,RP0 ;Banco 0
bcf STATUS,RP1
call MENSAJE_CESAR_UNIPAMPLONA
call RETARDO_1S
call LCD_INI ;Borra LCD
btfsc R_CONVER_H,0
call SUMA_256
btfsc R_CONVER_H,1
call SUMA_512
call MENSAJE_TEMPERATURA_ACTUAL
movf milcena,w
addlw 30
call LCD_DATOS
movf centena,w
addlw 30
call LCD_DATOS
movf decena,w
addlw 30
call LCD_DATOS
movlw '.'
call LCD_DATOS
movf unidad,w
addlw 30
call LCD_DATOS
goto CICLO
EJEMPLO DE PROGRAMACIÓN
;------------------------------------------------------------------------------
SUMA_256movf unidad,W
addlw d'6'
movwf unidad
movf decena,W
addlw d'5'
movwf decena
movf centena,W
addlw d'2'
movwf centena
goto VER_UNIDAD
;------------------------------------------------------------------------------
SUMA_512movf unidad,W
addlw d'2'
movwf unidad
movf decena,W
addlw d'1'
movwf decena
movf centena,W
addlw d'5'
movwf centena
goto VER_UNIDAD
;------------------------------------------------------------------------------
EJEMPLO DE PROGRAMACIÓN
VER_UNIDAD movf unidad,W ;Carga W con el ultimo dato leido
sublw d'10' ;Compara
btfss STATUS,2 ;Si es igual salta
goto VER_UNIDAD_2
clrf unidad ;unidad = 0
incf decena,1 ;incremente decenas
goto VER_DECENA
VER_UNIDAD_2 movlw d'10'
subwf unidad,0 ;restar 10
btfss STATUS,C ;verifica el carry
goto VER_DECENA ;Si es cero deja de restar
movwf unidad ;deje el sobrepaso de 10 en unidades
incf decena,1 ;incremente decenas
goto VER_DECENA
RETURN
EJEMPLO DE PROGRAMACIÓN
MENSAJE_TEMPERATURA_ACTUAL
movlw 'T' ;1
call LCD_DATOS ;Visualiza letra a
movlw 'E' ;2
call LCD_DATOS ;Visualiza letra a
movlw 'M' ;3
call LCD_DATOS ;Visualiza letra a
movlw 'P' ;4
call LCD_DATOS ;Visualiza letra a
movlw ':' ;5
call LCD_DATOS ;Visualiza letra a
RETURN
EJEMPLO DE PROGRAMACIÓN
RETARDO_1S movlw .8
movwf RET1
movlw .195
movwf RET2
movlw .212
movwf RET3
decfsz RET3,1
goto $-1
decfsz RET2,1
goto $-5
decfsz RET1,1
goto $-9
retlw 0
END