Universidad Antonio Nariño
Aplicación Industrial de Micros
Código: 444405
CAPITULO
4
Experimentos introductorios
4.6 Conversión
A/D
Objetivos:
-
Realizar la observación práctica de la utilización
del conversor A/D en un PIC16C71
-
Configurar uno de los canales de entrada al conversor A/D (canal 0)
Procedimiento:
Para realizar la observación práctica mencionada en los
objetivos, se realiza el montaje de un voltimetro digital AC el cual utiliza
el canal análogo 0 como entrada de la muestra DC tomada de un divisor
de voltaje. De acuerdo a la relación del divisor de tensión
conformado con el reostato Ajuste
y de las resistencias, debe obtenerse un voltaje máximo de 5 voltios
en el pin RA0, correspondiente a la máxima entrada de voltaje alterno
colocado en VAC in
.
Diagrama eléctrico:
FIG. 4.6.1 Hardware utilizado para el voltimetro AC
Listado del programa en assembler
LIST P=16C71
INDF EQU
H'0000'
TMR0 EQU
H'0001'
PCL EQU
H'0002'
STATUS EQU
H'0003'
FSR EQU
H'0004'
PORTA EQU
H'0005'
PORTB EQU
H'0006'
ADCON0 EQU
H'0008'
ADRES EQU
H'0009'
PCLATH EQU
H'000A'
INTCON EQU
H'000B'
;
OPTION_R EQU H'0081'
TRISA EQU
H'0085'
TRISB EQU
H'0086'
ADCON1 EQU
H'0088'
;==================================================================
W
EQU H'0000'
F
EQU H'0001'
#define _z
STATUS,2
#define _c
STATUS,0
#define RP0
STATUS,5
#define RP1
STATUS,6
#define BANK1 bsf
RP0
#define BANK0 bcf
RP0
;
H_BYTE equ
10 ;Variable IN de la rutina
B2_BCD
L_BYTE equ
11 ;Variable IN de la rutina
B2_BCD
R0
equ 12
;MSByte DE LA RUTINA B2_BCD
R1
equ 13
R2
equ 14
;LSByte DE LA RUTINA B2_BCD
OnDyn equ
15
count equ
16
temp equ
17
DIG3 equ
18 ;MSD DE LA RUTINA DE
DISPLAY
DIG2 equ
19
DIG1 equ
1A ;LSD DE LA RUTINA DE
DISPLAY
PERSIST equ
1B
CounterDig equ 1C
DELAY equ
1D ;RETARDO VISUALIZACION
DELAY2 equ
1E
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
org 0
goto Main
;****************************************************************************
;Conversión de Binario a BCD 5 dígitos
;Entrada: Un binario de 16 Bits en H_Byte y L_Byte
;Salida: R0, R1 y R2; R0 es el MSD
;****************************************************************************
B2_BCD
bcf _c
movlw .16
movwf count
clrf R0
clrf R1
clrf R2
Loop16
rlf L_BYTE
rlf H_BYTE
rlf R2
rlf R1
rlf R0
;
decfsz count
goto adjDEC
retlw 0
;
adjDEC
movlw R2
movwf FSR
call adjBCD
;
movlw R1
movwf FSR
call adjBCD
;
movlw R0
movwf FSR
call adjBCD
;
goto Loop16
;
adjBCD
movlw 3
addwf 0,W
movwf temp
btfsc temp,3
movwf 0
movlw 30
addwf 0,W
movwf temp
btfsc temp,7
movwf 0
retlw 0
;##########################################################################
Main
;Inicialización de puertos
BANK1
CLRF TRISB
;Programación del puerto B como salida
MOVLW 03
MOVWF TRISA
;Programación del puerto A, RA0 y RA1 como entrada
BANK0
MOVLW 0FF
MOVWF PORTA
;Inicialización de los puertos A y B
MOVWF PORTB
;Inicialización del módulo A/D Canal 0 activo
BANK1
MOVLW B'000000010'
MOVWF ADCON1
BANK0
MOVLW 0C1
MOVWF ADCON0
;inicialización de dígitos
clrf DIG1
clrf DIG2
clrf DIG3
INI_AD
MOVLW .5
MOVWF DELAY2
BSF ADCON0,2
VISUALIZAR
MOVLW .255
;RETARDO DE DISPLAY
MOVWF DELAY
LOOP_VISUAL
CALL DISPLAY
DECFSZ DELAY,F
GOTO LOOP_VISUAL
DECFSZ DELAY2,F
GOTO VISUALIZAR
TEST_FIN_AD
BTFSC ADCON0,1
;SÍ ESTÁ EN 0 NO HA TERMINADO LA CONVERSION
GOTO HEX_BCD
;CONVERSION Y ADECUACION DE DATOS A VER
GOTO VISUALIZAR
;SEGUIR CON LOS DATOS YA PREDETERMINADOS
;
DISPLAY
MOVLW 03
MOVWF CounterDig
MOVLW 0FB
MOVWF OnDyn
MOVLW DIG1
;Posición dígito menos significativo (LSD)
MOVWF FSR
Salt1
MOVLW 10
MOVWF PERSIST
MOVF INDF,W
DECF FSR,F
CALL Tabla
MOVWF PORTB
MOVF OnDyn,W
MOVWF PORTA
BSF _c
RLF OnDyn,F
Decre
DECFSZ PERSIST,F
GOTO Decre
NOP
NOP
MOVLW 0FFh
MOVWF PORTA
DECFSZ CounterDig,F
GOTO Salt1
NOP
NOP
NOP
RETURN
Tabla
ADDWF PCL,F
RETLW 03h
;0
RETLW 9Fh
;1
RETLW 25h
;2
RETLW 0Dh
;3
RETLW 99h
;4
RETLW 49h
;5
RETLW 41h
;6
RETLW 1Fh
;7
RETLW 01h
;8
RETLW 19h
;9
RETLW 0FDh ;SEG
g
RETURN
;****************************************************************************
HEX_BCD
BCF ADCON0,1 ;FIN DE
CONVERSIÓN
MOVF ADRES,W ;RESULTADO
DE LA CONV. A/D
SUBLW 0FBh
BTFSS _c ;
GOTO OVERFLOW
;SITUACION NORMAL
MOVF ADRES,W
MOVWF L_BYTE ;PARA LA
CONVERSION B2_BCD
CLRF H_BYTE ;PARA
LA CONVERSION B2_BCD
CALL B2_BCD ;CONVERTIR
DATO
MOVF R2,W
ANDLW 0Fh
MOVWF DIG1
SWAPF R2,W
ANDLW 0Fh
MOVWF DIG2
MOVF R1,W
MOVWF DIG3
GOTO INI_AD
MOVLW 0Ah
;representa overflow en la medición
MOVWF DIG3
MOVWF DIG2
MOVWF DIG1
GOTO INI_AD
end
El programa presentado hace uso de los recursos que posee el PIC16C71
el cual posee 4 canales análogos y un conversor A/D de 8 bits; para
mayor información ver las especificaciones técnicas de este
dispositivo.
índice de capítulo