; ************************* Cuerpo Principal **************************
Reset
CLRF digito
; Comienza a contar por el 0
Siguien
MOVF digito,w
CALL Tabla
; Coloca el siguiente dígito a evaluar en W
; Llama a la subrutina para coger el dato
; y hacer la conversión decimal-7 segmentos
MOVWF portb
Pausa
cuenta
Tabla
DECFSZ contador
GOTO Pausa
INCF digito,f
MOVF digito,w
XORLW 0x0A
BTFSC estado,Z
GOTO Reset
;
;
;
;
;
;
;
GOTO Siguien
; En caso contrario, continua la cuenta
; con el siguiente dígito
ADDWF pc,f
valor,
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
0x3F
0x06
0x5B
0x4F
0x66
0x6D
0x7D
0x07
0x7F
0x6F
Decrementa contador y repite
hasta que valga 0
Incrementa el valor del dígito al siguiente
Pone el valor del dígito en W
Chekea si el dígito sobrepasa el valor 9
Comprobando con un xor si W vale 0 (Z=1)
Si Z=1 resetea el dígito y comienza de nuevo la
; Suma al contador de programa el valor de offset, es decir,
; el valor del dígito. Así se genera un PC distinto según su
; asegurando que vaya a la línea correcta de la tabla
; 0 en código 7 segmentos
; 1 en código 7 segmentos
; 2 en código 7 segmentos
; 3 en código 7 segmentos
; 4 en código 7 segmentos
; 5 en código 7 segmentos
; 6 en código 7 segmentos
; 7 en código 7 segmentos
; 8 en código 7 segmentos
; 9 en código 7 segmentos
END
5.3.5 Manejo de interrupciones
GENERALIDADES SOBRE LAS INTERRUPCIONES
La interrupción es una técnica que coloca al programa temporalmente en
suspenso mientras el microcontrolador ejecuta otro conjunto de instrucciones en
respuesta a un suceso. Las causas de una interrupción pueden ser externas, como la
activación de una patilla con el nivel lógico apropiado, e internas, como las que pueden
producirse al desbordarse un temporizador como el TMR0.
Los sucesos internos capaces de producir una interrupción más destacables
son el desbordamiento del temporizador TMR0, fin de la escritura de la EEPROM,
finalización de la conversión A/D. Los sucesos externos principales son la activación
del pin 0 de la puerta B (PB0/INT), el cambio de estado en las patitas 4-7 de la puerta
B, y el desbordamiento del temporizador TMR0.
63