Microchip PIC 16F87X Trabajo Y Explicación página 74

Tabla de contenido

Publicidad

T
E
RABAJO Y
XPLICACIÓN
;16Bits_BCD: Esta rutina convierte un número binario de 16 bits situado en Cont_H y Cont_L y, lo
;convierte en 5 dígitos BCD que se depositan en las variables BCD_0, BCD_1 y BCD_2, siendo esta
;última la de menos peso.
Bits16_BCD
bcf
clrf
bsf
clrf
clrf
clrf
Loop_16
rlf
rlf
rlf
rlf
rlf
decfsz Contador,F
goto
return
Ajuste
movlw BCD_2
movwf FSR
call
incf
call
incf
call
goto
Ajuste_BCD
movf
addlw
movwf Temporal
btfsc
movwf INDF
movf
addlw
movwf Temporal
btfsc
movwf INDF
return
;Programa de tratamiento de la interrupción que se provoca cuando el TMR0 temporice 10mS.
;Trabajando a 20MHz el TMR0 evoluciona cada 0.2 uS. Con un preescaler de 256, hay que cargar el
;valor 195 para provocar una interrupción cada 10 mS. Esta se repite 100 veces para obtener una
;temporización total de 1"
Inter
decfsz Delay,F
goto
Si_1000_mS
bcf
bcf
movf
movwf Byte_L
movf
movwf Byte_H
call
call
movlw b'195'
movwf TMR0
movlw b'100'
movwf Delay
D
P
ESARROLLO
ROYECTOS Y
PIC 16F87
X
STATUS,C
Contador
Contador,4
;Carga el contador con 16
BCD_0
BCD_1
BCD_2
;Puesta a 0 inicial
Byte_L,F
Byte_H,F
BCD_2,F
BCD_1,F
BCD_0,F
;Desplaza a izda. (multiplica por 2)
Ajuste
;Inicia el índice
Ajuste_BCD
;Ajusta el primer byte
FSR,F
Ajuste_BCD
;Ajusta el segundo byte
FSR,F
Ajuste_BCD
Loop_16
INDF,W
0x03
Temporal,3
;Mayor de 7 el nibble de menos peso ??
;Si, lo acumula
INDF,W
0x30
Temporal,7
;Mayor de 7 el nibble de menos peso ??
;Si, lo acumula
;Ha pasado 1000mS (1") ??
No_1000_mS
;No
T1CON,0
;TMR1 en Off, cuenta de pulsos externos detenida
STATUS,C
TMR1L,W
;Salva parte baja del contador
TMR1H,W
;Salva parta alta del contador
Bits16_BCD
;Convierte a BCD el resultado de la cuenta
Visualizar
;Visualiza el resultado en el LCD
;Repone el TMR0 para temporizar 10 ms
;Repone variable para temporizar otro segundo
P
E
ROTOTIPOS
LECTRÓNICOS
2º DPE
74

Publicidad

Tabla de contenido
loading

Productos relacionados para Microchip PIC 16F87X

Tabla de contenido