Dos dispositivos interrumpiendo en modo 1
Dos dispositivos interrumpiendo en modo 1
El archivo comprimido contiene los archivos:
Graben el archivo .sof en la placa con el Quartus, compilen el programa, cárguenlo en el procesador con el debugger y mandenlo correr. Pidan interrupciones con los pulsadores BUTTON[2] y BUTTON[1]. Usen los switches SW[1] y SW[0] para provocar una interrupción mientras se está atendiendo a la otra. Prueben con las diferentes ubicaciones de EI.
- interrupciones.sof e interrupciones.cdf: hardware con un sistema como el ejemplo "Ejemplo: dos dispositivos en Modo 1" de la página 7 de los apuntes sobre interrupciones.
- dos_en_modo1.s: fuente assembler con el ejemplo visto en clase en que dos periféricos interrumpen a través de INT trabajando en modo 1.
- Las solicitudes de interrupciones están conectadas a los botones (IRQ0 = BUTTON[1] e IRQ1 = BUTTON[2].
- Las direcciones de los puertos son diferentes a las indicadas en los apuntes, están definidas con la directiva EQU al comienzo del código assembler.
- En la dirección 0x0038 de ROM el monitor tiene un salto a la dirección 0xB038 (jp 0xB038). Si ensamblamos el programa dos_en_modo1.s con las herramientas del curso y lo cargamos en memoria utilizando el debugger, cuando llegue una interrupción en modo 1 la instrucción de salto mencionada transferirá el control a la instrucción cargada en la etiqueta "isr" del ejemplo.
- Las subrutinas isr0 e isr1 son similares: encienden un led, incrementan un contador y lo despliegan, esperan que una switch esté en 1, apagan el led y retorna.
Graben el archivo .sof en la placa con el Quartus, compilen el programa, cárguenlo en el procesador con el debugger y mandenlo correr. Pidan interrupciones con los pulsadores BUTTON[2] y BUTTON[1]. Usen los switches SW[1] y SW[0] para provocar una interrupción mientras se está atendiendo a la otra. Prueben con las diferentes ubicaciones de EI.
Haga clic en ejemplo_dos_interrupciones_modo1.zip para descargar el archivo.