Documente Academic
Documente Profesional
Documente Cultură
CONTROL DE
INTERRUPCIONES
ING.VIVIANA PÁRRAGA MSC.
VIVIANA.PARRAGAV@EPN.EDU.EC
SEMESTRE: 2019A
CONTENIDO
Interrupciones
Registros Asociados
INTERRUPCIONES
• Las llamadas a subrutinas mediante la instrucción CALL son desviaciones del flujo de control
del programa originadas por instrucciones, por lo que se consideran Sincrónicas. Se producen
cada vez que se ejecuta dicha instrucción.
• Las Interrupciones son desviaciones del flujo de control del programa originadas de manera
Asincrónica por diversos eventos que no se hallan bajo la supervisión de las instrucciones.
• Estos eventos pueden ser externos al sistema, como la generación de un flanco o nivel activo
en un pin del microcontrolador, o bien internos, como el desbordamiento de un contador
INTERRUPCIONES
Subrutinas Interrupciones
• RBIE: (RB Port Change Interrupt Enable bit), Permiso de Interrupción por cambio de estado en RB7:RB4
1: Habilita la interrupción por cambio de estado en RB7:RB4
0: Deshabilita esta interrupción
• T0IF: (TMR0 Overflow Interrupt Flag bit), Bandera de desborde de TMR0
1: Ha ocurrido un desborde del TMR0 (debe ser restaurado por Programación)
0: No se ha desbordado el TMR0
• INTF: (RB0/INT External Interrupt Flag bit), Bandera de activación del pin RB0/INT
1: Ha ocurrido interrupción externa por RB0/INT (debe ser restaurado por Programación)
0: No ha ocurrido interrupción externa por RB0/INT
• RBIF (RB Port Change Interrupt Flag bit), Bandera de cambio de estado en RB7:RB4
1: Pasa a 1 cuando cambio de estado al menos uno de los bits RB7:RB4 (debe ser restaurado por Programación)
0: No han cambiado de estado ninguno de los bits RB7:RB4
• Los registros PIE1, PIE2, PIR1, PIR2, están asociados a las interrupciones de TMR1, TMR2, A/D,
EEPROM, USART (comunicación serial) los cuales no serán estudiados en este módulo.
HABILITACIÓN DE INTERRUPCIÓN
• Si se han activado dos o más causas de interrupción, como desborde del TMR0 y/o cambio de
nivel en RB0/INT, cuando ocurre cualquiera de estas interrupciones, ellas van a la misma rutina de
interrupción.
• Para determinar cuál es la interrupción, se debe testear las banderas, las cuales estarán en nivel
alto (1) cuando se haya activado la interrupción correspondiente.
• Por lo tanto, se debe realizar el testeo dentro de la rutina de servicio de interrupción, para
determinar cuál fue la razón de la interrupción.
• Cada vez que se produce una interrupción el bit GIE se pone en 0 automáticamente para
deshabilitar que se produzca una nueva interrupción durante la ejecución de la misma.
INSTRUCCIÓN RETFIE
• Usando TMR0 e Interrupciones generar una señal cuadrada de 200Hz por el pin RB0 (usar cristal de
4Mhz)
• Para una frecuencia de 200Hz, tendremos un periodo de:
1 1 1
• 𝐹 = por lo que 𝑇 = = = 5𝑚𝑠𝑒𝑔
𝑇 𝐹 200𝐻𝑧
• Se asume que el ciclo de trabajo es 50% por lo tanto el periodo en bajo y alto son iguales, es decir 2,5 mseg
1
• 2,5𝑚𝑠𝑒𝑔 = 4 ∗ ∗ 𝑉𝑇𝑀𝑅0 ∗ Preescalador
4𝑀ℎ𝑧
1
• 2,5𝑚𝑠𝑒𝑔 = 4 ∗ ∗ 𝑉𝑇𝑀𝑅0 ∗ 64
4𝑀ℎ𝑧
• 𝑉𝑇𝑀𝑅0 = 39,0625 ≅ 39
• 𝑇𝑀𝑅0 = 256 − 𝑉𝑇𝑀𝑅0 = 256 − 39 = 217 Valor a cargar en TMR0
EJEMPLO1
EJEMPLO 1
• Diagrama de flujo
EJEMPLO1
DEBER