CONTROLADOR PROGRAMABLE DE INTERRUPCIONES 8259

Este circuito integrado controla las interrupciones del sistema. Como el microprocesador sólo posee dos entradas de interrupción, y puede controlar muchas más, es necesario algún integrado que no permita ello. El 8259 cumple este propósito.

El funcionamiento del 8259 es muy sencillo: Supongamos que no queda ninguna interrupción pendiente y el CPU está trabajando en el “Programa principal”. Al activarse una línea de interrupción, el 8259 verifica que no haya otra interrupción pendiente, y si no la hay, envía una señal a través del pin INTR hacia el pin INTR del CPU, adicionalmente, envía a través del bus de datos, el número de interrupción que se ha activado, de tal manera que el CPU ya sabe qué servicio de interrupción va a usar. Una vez que recibió el CPU este valor, activa su pin INTA, indicando que ya recibió y está ejecutando el servicio.

Una vez que el CPU termina, el pin INTA se desactiva, indicando al 8259 que está listo para procesar otras interrupciones.

Las rutinas de los servicios de interrupción están vectorizadas en las primeras posiciones de memoria, y están distribuidas de la manera siguiente: El los dos primeros bytes corresponden al valor que irá al registro IP, que indica el desplazamiento; y los dos siguientes, corresponden al registro CS, que indica el segmento donde está el servicio de interrupción. Estos dos pares de bytes se inician en la posición de memoria 0000h y corresponden a la interrupción 0; los siguientes cuatro corresponden a la interrupción 1, y así sucesivamente hasta las 256 interrupciones (total 1024 bytes). Esto significa que el usuario puede crear su propio servicio de interrupción y accederlo a través de la manipulación de estos bytes.

El 8259, posee varios modos de configuración, dependiendo de la manera cómo se desea que se traten a las interrupciones

Hay que tener en cuenta que la interrupción no enmascarable NMI, va directamente a CPU y es la encargada de indicar errores de paridad en la memoria, fallos de circuiteria y el procesador matemático. En el PC/XT original es posible un total de 256 interrupciones, de las cuales 8 son por hardware y las demás por software.

La distribución de las interrupciones en el PC/XT es:

IRQ

 FUNCION 

IRQ0

 Reloj en tiempo real

IRQ1

 Teclado

IRQ2

 PC-Net

IRQ3

 Puerto serie secundario

IRQ4

 Puerto serie primario

IRQ5

 Disco duro

IRQ6

 Diskette

IRQ7

 Impresora

El 8259 posee cuatro palabras de control que se encargan de configurar al integrado para que funcione correctamente. En la primera palabra de estado (ICW1), se configura el modo del 8259 (es decir para que trabaje junto con otro más y ampliar las interrupciones), el modo de disparo de las interrupciones (Nivel o flanco descendente) y parte de los vectores de interrupción.

En la segunda palabra de estado (ICW2), se configuran los vectores de interrupción.

La tercera palabra funciona cuando el 8259 trabaja en modo múltiple con otros más. Aquí se configura el modo maestro/esclavo.

El la ICW4, se configura el modo de manejo de las interrupciones (modo buffered, interrupciones anidadas y el tipo de procesador al que se conecta)

Hay que tener en cuenta que el pin INTR del CPU se puede configurar para que no reciba interrupciones (en ensamblador CLI). El pin NMI no se puede deshabilitar y esta interrupción puede interrumpir a cualquier otra interrupción que se esté ejecutando en ese momento.