T
E
RABAJO Y
XPLICACIÓN
PROGRAMA 12
El TMR2. Temporización simple, segundero
El TMR2 provoca una interrupción cada 10 mS. Transcurridas 100 interrupciones, el tiempo
total transcurrido es de 1 segundo.
El display conectado a la puerta B, cuenta intervalos de 1 segundo.
List
include "P16F876.INC" ;Definiciones de registros internos
Delay
equ
Contador
equ
org
goto
org
goto
;------------------------------------------------------------------------------------------------------------------------------
;Tabla: Esta rutina convierte el código binario presente en los 4 bits de menos peso del reg. W en su
;equivalente a 7 segmentos. El código 7 segmentos retorna también en el reg. W
Tabla:
addwf PCL,F
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
;Programa de tratamiento de la interrupción que provoca el TMR2 cada 10mS.
Inter
decfsz Delay,F
goto
incf
movlw b'10'
subwf
btfsc
clrf
movf
call
movwf PORTB
movlw b'100'
movwf Delay
No_es_1_seg
bcf
retfie
D
P
ESARROLLO
ROYECTOS Y
PIC 16F87
X
p=16F876
;Tipo de procesador
0x20
;Variable de temporización
0x21
;Variable del contador de segundos
0x04
;Vector de interrupción
Inter
0x05
Inicio
;Desplazamiento sobre la tabla
b'00111111'
;Dígito 0
b'00000110'
;Dígito 1
b'01011011'
;Dígito 2
b'01001111'
;Dígito 3
b'01100110'
;Dígito 4
b'01101101'
;Dígito 5
b'01111101'
;Dígito 6
b'00000111'
;Dígito 7
b'01111111'
;Dígito 8
b'01100111'
;Dígito 9
;Ha pasado un segundo ??
No_es_1_seg
;No
Contador,F
;Si, incrementa el contador de segundos
Contador,W
STATUS,Z
;Contador > 9 ??
Contador
;Si, ponerlo a 0
Contador,W
Tabla
;Convierte a 7 segmentos
;Visualiza sobre el display
;Reinicia variable delay
PIR1,TMR2IF
;Repone el flag del TMR2
P
E
ROTOTIPOS
LECTRÓNICOS
2º DPE
76