Вы находитесь на странице: 1из 19

INTERRUPCIONES

Interrupciones
Una interrupcin es un evento interno o externo que interrumpe al microcontrolador para informarle que un dispositivo necesita de sus servicios.. Interrupciones vs. Consultas (Polling) Un solo microcontrolador puede dar servicio a varios dispositivos. Hay dos maneras de hacerlo: interrupciones o consultas (polling). El programa que est asociado con la interrupcin se llama subrutina de servicio de la interrupcion.

mircoles, 29 de enero de 2014

Hugo Villavicencio V.

INTERRUPCIONES
El microcontrolador 8051 tiene 5 fuentes de interrupcin, lo que significa que el microcontrolador reconoce cinco eventos diferentes que pueden interrumpir la ejecucin normal de un programa. Cada interrupcin puede habilitarse o deshabilitarse seteando bits del registro IE. Asi mismo, el sistema de interrupciones total puede deshabilitarse encerando el bit EA del registro IE. Las interrupciones externas INT0 (P3.2), INT1(P3.3) generan una interrupcion con flanco negativo siempre que los bits IT0, IT1 del registro TCON se eencuentren seteados (=1). Tambin, las interrupciones externas INT0, INT1 generan interrupcin si los bits IT0, IT1 se mantienen en nivel bajo (IT0=IT1=0).

INTERRUPCIONES 8051

Hay 5 Fuentes de Interrupcin en el estandar 8051


Interrupcin
INT0 TIMER 0 INT1 TIMER 1 PUERTO SERIAL
mircoles, 29 de enero de 2014

Localidad ROM
0003H 000BH 0013H 001BH 0023H
Hugo Villavicencio V.

Bandera
IE0 TF0 IE1 TF1 RI o TI

Pin
P3.2

P3.3

Registro IE (habilita interrupciones)

IE.7: EA permiso global de interrupcione. EA=1 habilita, EA=0 deshabilita IE.6: No implementado. Reservado para uso futuro.

IE.5: ET2 habilita o deshabilita timer 2 (8052 solamente)


IE.4: ES habilita o deshabilita interrupcin del puerto serial. IE.3: ET1 habilita o deshabilita interrupcin por desborde de timer 1. IE.2: EX1 habilita o deshabilita interrupcin externa 1 (INT1). IE.1: ET0 habilita o deshabilita interrupcin por desborde de timer 0. IE.0: EX0 habilita o deshabilita interrupcin externa 0 (INT0). NOTA: Este registro IE es bit-direccionable.

Registros TCON y SCON

Estos registros contienen banderas de interrupcin.

Modo de disparo de las interrupciones Externas


Cada una de las fuentes de interrupcion externa puede definirse para que se active por flanco negativo o por nivel bajo. Generalmente se prefiere el flanco negativo ya que en este modo la bandera de interrupcin (IEx)se encera automticamente. Los bits IT0 y IT1 del registro TCON definen el modo de operacion de las interrupciones externas en P3.2 y P3.3. Para definir disparo por flanco negativo para las dos interrupciones externas use las instrucciones SETB IT0 ;flanco negativo para INT0 SETB IT1 ;flanco negativo para INT1
mircoles, 29 de enero de 2014 Hugo Villavicencio V.

Interrupcin externa activada por nivel


Normalmente INT0 y INT1 estan en alto, si se aplica un nivel bajo a estas patitas se dispara la interrupcion. Entonces el microcontrolador deja de hacer lo que este haciendo y salta a una tabla de vectores para dar servicio a la interrupcin. El nivel bajo en la patita correspondiente debe retirarse antes de la ejecucin de RETI; sino otra interrupcin sera generada. De acuerdo con la hoja de datos del fabricante la patita debe permanecer en bajo hasta el inicio de la subrutina de servicio de interrupcin, si regresa a nivel alto antes del inicio de la subrutina no habr interrupcin. Sin embargo, activada la interrupcin por nivel bajo, este debe regresar a nivel alto antes de la ejecucin de RETI, de lo contrario se genera una segunda interrupcin. Por eso, para asegurar el disparo de la interrupcin por nivel mantenga la patita en bajo alrededor de 4 ciclos de mquina, pero no ms. Con cristal de 12 MHz, sera 4 microsegundos.

mircoles, 29 de enero de 2014

Hugo Villavicencio V.

Interrupciones Externas:

Por nivel (default) INT0 (Pin 3.2) 0 1 2 IT0 IE0 (TCON.1)

0003

Por flanco negativo Por nivel (default) INT1 (Pin 3.3) 0 1 2 IT1 IE1 (TCON.3) 0013

Por flanco negativo

mircoles, 29 de enero de 2014

Hugo Villavicencio V.

Pasos de reconocimiento de una interrupcin externa:


Termina la instruccin que esta ejecutando. Guarda en la Pila la direccion (PC)de la siguiente instruccin. Guarda el estado actual de todas las interrupciones , registro IE. Encera la bandera IEx de tal forma que una segunda interrupcin se inhibe mientras esta dando servicio a la actual. Salta a una tabla de vectores que contiene la direccin de la subrutina de servicio de la interrupcin. Salta a la subrutina de servicio iniciando su ejecucion hasta llegar a la ltima instruccion que es RETI. La instruccin RETI restaura desde la Pila el registro IE y la direccin de retorno, reinicia la ejecucin normal de instrucciones.

mircoles, 29 de enero de 2014

Hugo Villavicencio V.

Ejemplo 1
Muestre las instrucciones para: a) Habilitar las Interrupciones de: Puerto Serial, Timer 0, interrupcin externa 1 (EX1). b) Deshabilitar las interrupciones: Timer 0, Timer 1. c) Muestre como deshabilitar todas las interrupciones con una sla instruccin. Ir a Solucin.

mircoles, 29 de enero de 2014

Hugo Villavicencio V.

Solucin de Ejemplo 1
a) MOV IE, #10010110B b) CLR IE.1 CLR IE.3 c) CLR IE.7 Otra forma de resolver a) es: SETB IE.7; EA=1, permiso global SETB IE.4; Habilita interrupcin puerto serial SETB IE.1; Habilita int. timer 0 SETB IE.2; Habilita int. externa 1 (EX1)
mircoles, 29 de enero de 2014 Hugo Villavicencio V.

EJ13: INTERRUPCIONES EXTERNAS


C:\EJERCICIOS-MCS51-Ensamblador\EJ13

mircoles, 29 de enero de 2014

Hugo Villavicencio V.

Uso de las Interrupciones


Ejemplo: Escriba un programa que simultneamente genere dos ondas cuadradas usando interrupciones. Una onda de 7 KHz en la patita P1.7, y la otra de 500 Hz en P1.6. Asuma un cristal de 12 MHz. Entonces el ciclo de mquina es de 1.0 us. Ir a Solucin
mircoles, 29 de enero de 2014

Hugo Villavicencio V.

VER EJ14 EN CARPETA APRACTICAS_MCS8051

Solucin:
ORG LJMP ORG LJMP ORG LJMP ORG PRINCIPAL: MOV MOV SETB SETB MOV SJMP T0SUBI: CPL RETI T1SUBI: CLR MOV MOV SETB CPL RETI END
mircoles, 29 de enero de 2014

0 PRINCIPAL 000BH T0SUBI 001BH T1SUBI 0030H TMOD,#12H TH0,#B9H TR0 TR1 IE,#8AH $ P1.7
TR1 TH1,#0FCH TL1,#18H TR1 P1.6

8051 P1.7

143s 71s

2ms

P1.6

1ms

Hugo Villavicencio V.

Prioridades de las Interrupciones


Si una interrupcin de alta prioridad llega mientras se ejecuta la de baja prioridad, inmediatamente para su ejecucin para ejecutar primero la interrupcin de alta prioridad. Si arriban al mismo tiempo dos interrupciones de distinta prioridad , entonces la interrupcin de mas alta prioridad se ejecuta primero. Si arriban una despus de otra dos interrupciones de la misma prioridad, entonces la interrupcion que arriba ltimo tiene que esperar hasta finalizar la ejecucion de la primera. Si dos interrupciones de la misma prioridad arriban al mismo tiempo entonces la interrupcin que se ejecuta primero se selecciona de acuerdo con la lista de prioridades siguiente: 1. Interrupcion externa INT0 (prioridad alta) 2. Interrupcion TMR0 3. Interrupcion externa INT1 4. Interrupcion TMR1 5. Interrupcion Puerto Serial (prioridad baja)
mircoles, 29 de enero de 2014 Hugo Villavicencio V.

REGISTRO DE PRIORIDADES: IP

Un 1 define prioridad alta, un 0 define prioridad baja PT2 IP.5 Prioridad T2 PS IP.4 Prioridad puerto Serial PT1 IP.3 Prioridad T1 PX1 IP.2 Prioridad Interrupcin externa 1 PT0 IP.1 Prioridad T0 PX0 IP.0 Prioridad Interrupcin externa 0
mircoles, 29 de enero de 2014 Hugo Villavicencio V.

FIN

Вам также может понравиться