Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tarea 5 Juan Landa

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

INGENIERÍA COMPUTACIONAL

Tema:
“Tarea 5. Manejo de las interrupciones
en el PIC16F877”

Módulo 4

Nombre: Juan Manuel Landa Santillán

Xalapa, Enríquez a 29 de mayo de 2022


Síntesis acerca del manejo de las interrupciones en el PIC16F877.

Una interrupción es un aviso provocado por un módulo del PIC, por un cambio
en el estado de un pin o un recordatorio de que ha pasado un cierto tiempo.
Como su nombre indica este aviso interrumpirá la tarea que se esté haciendo
en ese momento y pasaremos a ejecutar una rutina de servicio o gestión de la
interrupción.

El microcontrolador PIC16F877A tiene 15 interrupciones, si las interrupciones


están habilitadas cada vez que una de estos acontecimientos se presente el
PIC dejará de ejecutar el programa para ir a atender la interrupción y al término
de la misma continuará ejecutando el programa donde lo había dejado.

Los PIC16f877a tienen 4 causas de interrupción o fuentes posibles de


interrupción:

 Activación de la patita RB0/INT


 Desbordamiento del temporizador TMR0
 Cambio de estado en una de las 4 patitas de más peso (RB7 - RB4) de
la puerta B
 Finalización de la escritura en la EEPROM de datos

Cuando ocurre cualquiera de los 4 sucesos indicados se origina una petición de


interrupción, que si se acepta y se atiende comienza depositando el valor del
PC (contador de programa) actual en la Pila, poniendo el bit GIE = 0 y
cargando en el PC el valor 0004 H, que es el vector de interrupción donde se
desvía el flujo de control.

Cada fuente de interrupción dispone de un señalizador o "flag", que es un bit


que se pone automáticamente a 1 cuando se produce. Además cada fuente de
interrupción tiene otro bit de permiso, que según su valor permite o prohíbe la
realización de dicha interrupción.

La mayor parte de los señalizadores y bits de permiso de las fuentes de


interrupción en los PIC16f887A están implementadas sobre los bits de registro
"INTCON, que ocupa la dirección 0bH del banco 0, hallándose duplicada en
todos los bancos.

GIE: Permiso global de interrupción


1: Permite la ejecución de todas las interrupciones
0: Prohíbe todas las interrupciones

EEIE: Permiso de interrupción por fin de escritura de la EEPROM


1: Permite se origine una interrupción cuando termina la escritura de la
EEPROM
0: Prohíbe esta interrupción
T0IE: Permiso de interrupción de sobre pasamiento del TMR0
1: permite una interrupción al desbordarse el TMR0
0: Prohíbe esta interrupción

INTE: Permiso de interrupción por el pulso externo en RB0/INT


1: Interrupción al activarse RB0/INT
0: Prohíbe esta interrupción

RBIE: Permiso de interrupción por cambio de estado en RB7 - RB4


1: Permite esta interrupción
0: Prohíbe esta interrupción

T0IF: Señalizador o bandera de sobre pasamiento del TMR0


1: se pone a 1 cuando ha ocurrido el sobre pasamiento
0: Indica que el TMR0 no se ha desbordado

INTF: Señalizador o bandera de activación de la patita RB0/INT


1: se pone a 1 cuando ha ocurrido el pulso
0: no ha ocurrido nada

RBIF: Señalizador o bandera de cambio de estado de las patitas RB7-RB4


1: se pone a 1 cuando ha ocurrido
0: no ha ocurrido nada

Los registros asociados con las interrupciones son el registro de control de


interrupción INTCON, el registro habilitación de interrupciones de periféricos
PIE1 y el registro de interrupciones de periféricos PIR1. En el registro INTCON
se encuentra el bit de habilitación global de interrupciones GIE, el bit de
habilitación de interrupción por periféricos PEIE y los bits de habilitación de
algunas interrupciones como la interrupción externa del pin RB0 (INTE), la
interrupción por cambio de estado en los pines RB4 a RB7 (RBIE) y la
interrupción por desborde del timer 0 (T0IE), así como las banderas
correspondientes a cada interrupción (INTF, RBIF y T0IF). En el registro PIE1
se encuentran los bits de habilitación de las demás interrupciones y en el
registro PIR1 se encuentran las banderas asociadas con cada interrupción.

Para habilitar las interrupciones se deben seguir los siguientes pasos:

 Habilitar el bit correspondiente a cada interrupción.


 Limpiar la bandera correspondiente a la interrupción habilitada para
evitar falsas interrupciones.
 En caso de ser necesario habilitar el bit PEIE del registro INTCON
(necesario para todas las interrupciones con excepción de INTE y RBIE).
 Habilitar el bit de habilitación global de interrupciones GIE del registro
INTCON.

En el código también es necesario indicar hacia que rutina debe saltar el


programa al presentarse la interrupción. Ya se dijo que el vector de interrupción
está en la dirección 0x04 por lo que es necesario agregar las líneas org 0x04 y
goto ISR al programa, donde ISR es la rutina de servicio de interrupción y
puede, desde luego, tener cualquier otro nombre.

También podría gustarte