Sistemas Digitales II Interrupciones en el µC51. INTRODUCCIÓN Una interrupción es la ocurrencia de un evento o condición la cuál causa una suspensión temporal del programa mientras la condición es atendida por otro subprograma. Una interrupción dá la apariencia de que un sistema realiza varias tareas simultáneamente, pero la CPU sólo puede ejecutar una instrucción cada ciclo de máquina. El proceso anterior se conoce como SUBRUTINA. La diferencia de un sistema con interrupciones es que la interrupción no se genera con una instrucción CALL, sino en respuesta a una llamada generada por HARDWARE o por SOFTWARE. El programa que se ejecuta cuando se genera una interrupción se llama: RUTINA DE ATENCIÓN A INTERRUPCIÓN (ISR). Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. INTRODUCCIÓN Cuando se genera una interrupción el programa principal se detiene y “salta” a atender la llamada a interrupción (subrutina). La ISR se ejecuta y regresa al programa principal mediante la instrucción de retorno de interrupción RETI, entonces, el programa principal continua desde donde ocurrió la interrupción. Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. TIPOS DE INTERRUPCIONES La familia de los µC51 tiene cinco fuentes de interrupción: 2 interrupciones externas, 2 interrupciones por timer y 1 interrupción por puerto serial. Después de un reset al sistema, todas las interrupciones son deshabilitadas y se habilitan individualmente por software. Cada una de las fuentes de interrupción es habilitada o deshabilitada individualmente mediante direccionamiento por bit en el registro de funciones especiales (SFR) IE. Además, pueden habilitarse o deshabilitarse las interrupciones de manera global. Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. VECTORES DE INTERRUPCIONES Cuando una interrupción es aceptada, el valor cargado dentro del PC es llamado VECTOR DE INTERRUPCIÓN. Este es una dirección en la cual se tiene el inicio de la ISR solicitada. Los vectores de interrupción que son direccionados cuando ocurre alguna interrupción están distribuidos dentro de la memoria de programa espaciados 8 bytes cada uno: Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES Registro SFR IE (Interrupt Enable) Este registro se utilíza para controlar el funcionamiento de las interrupciones (bits IE.0 hasta IE.7). EA (IE.7). Bit de control de habilitación global de interrupciones. ES (IE.4). Bit de control de habilitación de interrupción por puerto serie. ET1 (IE.3). Bit de control de habilitación de interrupción por timer 1. EX1 (IE.2). Bit de control de habilitación de interrupción externa 1. ET0 (IE.1). Bit de control de habilitación de interrupción por timer 0. EX0 (IE.0). Bit de control de habilitación de interrupción externa 0. bit = 1, hab. int.; bit = 0, deshab. int. Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES Registro SFR TCON (Control Timer) Este registro se utilíza para controlar el modo de operación de las interrupciones externas (bits TCON.0 hasta TCON.3). IE1 (TCON.3). Bandera de sobre flujo de interrupción externa 1. IT1 (TCON.2). Bit de control de interrupción por nivel bajo ó flanco negativo de la interrupción externa 1. (0 = nivel, 1 = flanco) IE0 (TCON.1). Bandera de sobre flujo de interrupción externa 0. IT0 (TCON.0). Bit de control de interrupción por nivel bajo ó flanco negativo de la interrupción externa 0. (0 = nivel, 1 = flanco) Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES Prioridades de las Interrupciones Existen dos niveles de interrupción: alta prioridad y baja prioridad de interrupción. Una prioridad baja puede ser interrumpida por una prioridad alta, pero no por otra de baja prioridad, es decir, una de alta prioridad trabaja como interrupción no mascarable. Si dos fuentes de interrupción son recibidas simultaneamente, se ejecutará la rutina de interrupción que tenga la mayor prioridad de las dos. Si dos fuentes de interrupción tienen la misma prioridad, entonces se ejecutará una secuencia aleatoria (polling) la cuál determinará la atención a dicha interrupción. Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES Registro SFR IP (Interrup Priority) Este registro se utilíza para asignar el nivel de prioridad para cada interrupción. (bits IP.0 hasta IP.4). PS (IP.4). Bit de prioridad para interrupción por puerto serie. PT1 (IP.3). Bit de prioridad para interrupción por timer 1. PX1 (IP.2). Bit de prioridad para interrupción externa 1. PT0 (IP.1). Bit de prioridad para interrupción por timer 0. PX0 (IP.0). Bit de prioridad para interrupción externa 0. bit = 1, prioridad alta; bit = 0, prioridad baja Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES Registro SFR PCON (Power Control) Este registro se utilíza para controlar el consumo de energia por el microcontrolador. Esto se consigue mediante dos modos de operación. SMOD (PCON.7). Bit para doblar la velocidad comunicación del puerto serie en los modos 1 y 2. de PD (PCON.1). Bit de control para modo POWER DOWN. IDL (PCON.0). Bit de control para modo IDLE MODE. Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES POWER DOWN (Modo de bajo consumo). En este modo el oscilador se detiene, y por tanto, todas las funciones son desactivadas, pero la RAM interna se mantiene. La zona de SFR’s no se mantiene. Vcc puede ser reducida para minimizar el consumo de corriente despues de entrar en el modo POWER DOWN y ha de ser reestablecida antes de volver al modo normal, dejando un lapso de tiempo suficiente para que el oscilador se estabilice (normalmente menos de 10 mseg). La única manera de salir de este modo es mediante un RESET externo. Ing. Ricardo Godínez Bravo. Sistemas Digitales II Interrupciones en el µC51. FUNCIONAMIENTO DE INTERRUPCIONES IDLE MODE (Modo de espera). En este modo se conservan los datos de: SP, PC, PSW, Acc y Registros. La señal de reloj no se envia a la CPU, pero sí a los circuitos de interrupción, Timer’s y USART. Para iniciar este modo se ha de activar el bit IDL. La manera de salir de este modo es mediante un RESET externo ó al reconocer la solicitud de alguna fuente de interrupción. Ing. Ricardo Godínez Bravo.