Está en la página 1de 3

INTERUPCIONES

lvaro Patricio Velasco Vasco


e-mail: apvelasco@espe.edu.ec
Ingeniera Mecatrnica, Sptimo nivel, Universidad de las Fuerzas Armadas ESPE-Extensin Latacunga,
Marquez de Maenza S/N Latacunga, Ecuador.
Fecha de presentacin: 22 de Diciembre del 2014

RESUMEN: El manejo de interrupciones es una de


las caractersticas ms apreciadas y tiles de los
microcontroladores PIC, debido a que en cualquier
instante en el cual se encuentre corriendo un programa
y se produzca una interrupcin, esta lo enviar a un
subprograma para luego retornar a donde se qued. Es
importante
familiarizarse
con
el
manejo
de
interrupciones, ya que nos evita poder manejar muchos
tipos de eventos sin estar pendientes de ello.

En el presente trabajo se describirn las instrucciones


necesarias para habilitar las interrupciones, as como
una descripcin de que puertos del PIC16F628A
soportan interrupciones.
PALABRAS CLAVE: Vectores
flancos positivos y negativos

de

Aunque el PIC cuenta con 10 fuentes distintas de


interrupcin solamente tiene un vector de interrupcin
por lo que si se habilitan varias interrupciones al
momento de presentarse cualquiera de ellas el
programa saltara a la misma rutina de interrupcin y es
responsabilidad del programador crear una rutina que
identifique la fuente de la interrupcin.

interrupcin,

ABSTRACT: The interrupt handling is one of the


most popular and useful features of PIC microcontrollers,
because at any instant in which you are running a
program and an interrupt occurs, this will send you to a
subroutine and then return to where you remained.

2 MANEJO DE INTERRUPCIONES
Existen aplicaciones en donde un evento es muy
importante atenderlo, por ejemplo cuando algn
dispositivo intenta comunicarse con el PIC, en un
sistema de seguridad en donde una zona es ms
importante que las dems zonas o como el ejercicio
anterior en donde cada segundo enva un pulso SQW,
podramos utilizar este pulso para indicar al PIC que
debe leer los nuevos datos (segundo, minutos, hora,
etc.).

In this paper the necessary instructions to enable


interrupts, and a description of ports supported
PIC16F628A interruptions will be described.
KEY WORDS: Interrupt vectors, positive edges and
negative.

1 INTRODUCCIN

Las declaraciones necesarias para manejar una


interrupcin son las siguientes:

Una interrupcin es un evento que hace que el


microcontrolador deje de ejecutar la tarea que est
realizando para atender dicho acontecimiento y luego
regrese y contine la tarea que estaba realizando antes
de que se presentara la interrupcin.

ON INTERRUPT GOTO prog2; quiere decir en


caso de darse una interrupcin suspender el programa
actual e ir a prog2.
DISABLE; sirve para deshabilitar la interrupcin,
en caso de que no deseemos que atienda la
interrupcin, como por ejemplo cuando ya est
atendiendo una interrupcin.

El PIC 16F628 (y el 16F628A) tiene 10 fuentes de


interrupcin, si las interrupciones estn habilitadas cada
vez que una de estos acontecimientos se presente el
PIC dejar de ejecutar el programa para ir a atender la
interrupcin y al trmino de la misma continuar
ejecutando el programa donde lo haba dejado. Las
fuentes de interrupcin son:

Interrupcin por cambio lgico en el puerto B


(pines RB7 a RB4)
Interrupcin por desborde del timer 0 (TMR0)
Interrupcin por desborde del timer 1 (TMR1)
Interrupcin por comparacin exitosa en TMR2
Interrupcin del comparador
Interrupcin del transmisor del USART
Interrupcin del receptor del USART
Interrupcin del mdulo CCP
Interrupcin del EEPROM

RESUME; equivale al RETURN de un GOSUB, en


donde retorna a la lnea del programa en donde ocurri
la interrupcin.

Interrupcin externa RB0/INT

ENABLE; quiere decir habilitar nuevamente la


interrupcin, despus de esto todas las interrupciones,
son atendidas.

3 EJEMPLOS
Programa para manejar una interrupcin en el puerto
B.0 por medio de un pulsador:

El registro INTCON contiene las banderas de


interrupciones generadas por diferentes eventos.
Tambin contiene los bits de habilitacin global y
particular de las distintas fuentes de interrupciones.

LED VAR PORTB.1


LED2 VAR PORTB.2
ON INTERRUPT GOTO verde ; en caso de existir una
interrupcin ir a verde
INTCON = %10010000 ;habilita la interrupcin B.0
PROG: ;programa principal
HIGH LED ;encender el led rojo
PAUSE 200
LOW LED
PAUSE 200
GOTO PROG ;mantener en este lazo
DISABLE ;deshabilita las interrupciones en el handler
verde: ;handler de la interrupcin
HIGH LED2
PAUSE 2000
LOW LED2
INTCON = %10010000 ;habilita la interrupcin B.0
RESUME ;retorna a programa principal donde ocurri la inte.
ENABLE ;Habilita las interrupciones despus del handler
END

Figura 1. Bits del registro INTCON


Bit 7 GIE: (Global Interrupt Enable) bit de habilitacin
global de interrupciones.
1 = Habilita las interrupciones.
0 = Inhibe todas las interrupciones.
Se pone a cero cuando se reconoce una interrupcin
(para evitar interrupciones
anidadas) y a 1 cuando se vuelve de su rutina de
servicio.
Bit 6 PEIE: (Peripheral Interrupt Enable) bit de
habilitacin de interrupciones de perifricos.
1 = Habilita las interrupciones desde los perifricos.
0 = Inhibe las interrupciones desde los perifricos.
(3) En MCU con un solo perifrico puede ser EEIE o
ADIE
Bit 5 T0IE: (Timer 0 Overflow Interrupt Enable) bit de
habilitacin del Timer 0.
1 = Habilita la interrupcin con el desbordamiento del
Timer 0.
0 = Inhibe la interrupcin con el desbordamiento del
Timer 0.

Figura 2. Interrupcin el en puerto b.0

Bit 4 INTE: (INT External Interrupt Enable) bit de


habilitacin de interrupcin desde el pin de entrada INT.
1 = Habilita la interrupcin.
0 = Inhibe la interrupcin.

Para modificar el flanco por el cual se va a activar la


interrupcin, en este caso cambiar a flanco de bajada se
debe aadir la siguiente lnea despus del INTCON:

Bit 3 RBIE: (RB Port Change Interrupt Enable) bit de


habilitacin de interrupcin con el cambio de
RB7:RB4
1 = Habilita la interrupcin.
0 = Inhibe las interrupcin.

OPTION_REG.6=0
Siendo que B0 no es el unico puerto que puede manejar
interrupciones,
tambien
podemos
habilitar
el
reconocimiento de interrupciones desde el puerto B4
hasta el B7, as:
Solamente cambiando las 2 lneas que dicen
INTCON=%10010000 por INTCON=%10001000

Bit 2 T0IF: (Timer 0 Overflow Interrupt Flag)


1 = Interrupcin producida por el desbordamiento del
Timer 0 (debe ser puesto a cero por SW).
0 = El Timer 0 no se ha desbordado.
Bit 1 INTF: (INT External Interrupt Flag).
1 = Interrupcin producida por INT (debe ser puesto a
cero por SW).
0 = INT no ha interrumpido la MCU.

4 CONCLUSIONES

Bit 0 RBIF: (RB Port Change Interrupt Flag)


1 = Interrupcin producida por el cambio en alguno de
los bits RB7:RB4 (debe ser puesto a cero por SW).
0 = RB7:RB4 no han interrumpido la MCU.

El manejo de las interrupciones en el PIC es de


gran ayuda y utilidad, debido a que podemos
controlar algunos procesos alternos sin que
estar preocupados de ellos, claro est, una vez
que tengamos nuestras lneas de programacin
bien estructuradas.

Cada bit del comando INTCON habilita o


modifica el tipo de interrupcin de las 10 que
puede manejar el PIC16F628A, siendo los
puertos aptos para esto el B0 y desde el B4
hasta el B7, adems de los timmers con los que
cuenta el pic.

El tiempo de pausa entre mostrar un nmero y


el otro en cada display debe estar en el orden
de los milisegundos, para no notar ningn
parpadeo en el display.

5 REFERENCIAS
[1] Angulo U. Romero J. [2006]. Microcontroladores PIC:
diseo prctico de aplicaciones. Segunda parte. Espaa.
McGraw-Hill.
Disponible
en:
http://ezp1.espe.edu.ec:2050/lib/espesp/docDetail.action?
docID=10491329&p00=microcontroladores
[2 Dogan, Ibrahim. [2008]. Programacin de microcontroladores
PIC.
Espaa.
Marcombo.
Disponible
en:
http://ezp1.espe.edu.ec:2050/lib/espesp/docDetail.action?
docID=10212517&p00=microcontroladores
[3] Annimo. [2008]. Manejo de Interrupciones en los
Microcontroladores. Circuitoselectronicos.orq [En Linea].
Disponible
en:
http://www.circuitoselectronicos.org/2011/03/manejo-deinterrupciones-en-los.html

También podría gustarte