Está en la página 1de 4

David Roque Bolaños 1

Interrupciones

Las interrupciones sirven para ejecutar programas alternos al principal en tanto que la activación
de este segundo programa alterno surge de dos opciones

a) Externa. Se activa mediante un pulso ene l bit RB0.


b) Interna. Se activa cuando se desborda el registro del TIMER0.

Para el curso de microelectrónica se sugiere comenzar con las interrupciones internas, para esto
se emplean tres registros, TIMER0, OPTION e INTCON.

A continuación se describe las funciones de cada uno de estos registros:

TIMER0. Cuenta ciclos, este registro se incrementa en uno al ejecutarse un ciclo de reloj,
recordando los ciclos de reloj se relacionan con el tiempo de ejecución, a partir del uso de la
frecuencia:

Frecuencia Tiempo por ciclo


20 MHz 200 ns (manual)
4 MHz 1 µs
A partir de esta información se puede determinar cuanto tiempo se puede tardar un programa en
llevar a cabo sus acciones, en la hoja de instrucciones existe una columna referida a los ciclos de
reloj que tarda una instrucción, la mayoría de estas hace referencia a un ciclo, por lo que cada
instrucción tarda 1µs, por ejemplo:

MOVLW 0X03
MOVWF PORTB
MOVLW 0X04
ADDWF PORTB,1

Según lo dicho anteriormente, cada una de estas instrucciones consume un ciclo por lo que este
segmento de programa en general consume 4 µs, ya que son 4 instrucciones de un ciclo cada una,
lo anterior explica la relación en cuanto a tiempo frecuencia para la ejecución de un programa.

Algunas de las instrucciones consumen dos ciclos, como es el caso de las instrucciones CALL y
GOTO. Algunas otras tienen la indicación 1(2) lo cual significa que son instrucciones condicionadas
a un evento como el BTFSS O DECFSZ que dependiendo del resultado ejecutaran o no un salto,
para el caso que ejecute el salte serán dos ciclos (2µs), y para el caso en que no salte solo se
ejecuta un ciclo (1µs).

Bien en el caso del programa anterior en un “segundo plano” el TIMER0 va incrementándose en


una unidad cada ciclo de reloj:

MOVLW 0X03
;timer0 = 220
MOVWF PORTB
; Timer0 = 221
MOVLW 0X04
; TIMER0 = 222
David Roque Bolaños 2
Interrupciones

ADDWF PORTB,1
; TIMER0 = 223
GOTO NEXT



NEXT ; TIMER0 = 225 Al ejecutar el GOTO increment en dos
INCF PORTB,1
TIMER0 = 225

La interrupción se habilita cuando el timer 0 se desborde, es decir pase de 255 a 0.

El timer0 se configura mediante el registro OPTION, que es el registro de opciones:

Para configurar el TIMER0 se requieren los bits: 5, 3 y 2-0:

 El T0CS habilita como fuente para contar los ciclos el reloj interno (4MHz), se cambia a 0,
 El PSA sirve para asignar el preescalador al TIMER0, por default se encuentra asignado al
WDT.
 Por último los bits 2-0 se configuran para determinar una escala de conteo según la
combinación de estos bits,
David Roque Bolaños 3
Interrupciones

Según la relación se establece el conteo, por ejemplo, si la relación es 1:4 el Timer se incrementa
una vez cada 4 ciclos, si la relación es 1:64, se incrementa una vez cada 64 ciclos.

El registro INTCON se utiliza para configurar la interrupción:

Se requieren los bits:7, 5 y 2:

 El bit 5 T0IE, es la habilitación de interrupciones por desbordamiento del Timer 0, se


requiere cambiar a 1.
 El bit 2 es la bandera que indica que se encuentra presente una interrupción, dentro del
programa de interrupción se debe deshabilitar para preparar la siguiente interrupción.
 Por ultimo el bit 7 es el habilitador general de interrupciones, también hay que cambiarlo
a 1.

La configuración de los registros necesarios se lleva a cabo en la parte de configuración de bits.

NOTA, el OPTION por default tiene todos sus bits en uno, y por el contrario el INTCON por default
tiene sus bits en cero.
David Roque Bolaños 4
Interrupciones

¿Qué sucede cuando la interrupción se habilita?. La ejecución en automático se va al vector de


interrupción, el cual se encuentra en la memoria Flash:

El vector de interrupción se encuentra en la


localidad 0x04, los programas con interrupción
funcionan de la siguiente manera:

; declaración de registros
STATUS EQU 0X03

; Origen del Programa:


ORG 0X00
GOTO CONFIGURACION

ORG 0X04 ; Vector de Interrupción


GOTO INTERRUPCION
; Configuración de puertos
CONFIGURACION
BSF STATUS,5

MOVLW B’11010110’; PRESCALADOR 1:128
MOVWF OPTION

BCF STATUS,5
MOVLW B’10100000’; CONFIGURA INTCON
MOVWF INTCON

; Programa Principal
INICIO


;subtutinas:

INTERRUPCION

BCF INTCON, 2

RETFIE
; Fin del programa
END

También podría gustarte