Tecla F10
La tecla F10 es un dispositivo que habilita una forma rápida y práctica de ejecutar una interrupción por hardware. Está conectada a la línea INT0 del PIC. Puede accionarse presionando la tecla F10 el teclado físicamente o haciendo clic en el "botón rojo de interrupción" en la interfaz gráfica.
vonsim
; Programa: Contador de pulsaciones de la tecla F10 usando interrupciones
;-----------------------------------------------
; 1) Definiciones y variables
;-----------------------------------------------
org 10h ; Dirección de inicio de datos
cantidad db 0 ; Variable: almacena la cantidad de veces que se presionó F10
ID EQU 1 ; ID de la interrupción para F10 (puede ser 0-7)
IMR EQU 21h ; Dirección del registro IMR (máscara de interrupciones)
EOI EQU 20h ; Dirección para enviar End Of Interrupt al PIC
INT0 EQU 24h ; Dirección para configurar la línea INT0 (F10)
;-----------------------------------------------
; 2) Inicialización del PIC y vector de interrupción
;-----------------------------------------------
org 20h ; Dirección de inicio del código principal
; 2.1) Habilitar solo la interrupción de F10 (INT0)
mov al, 11111110b ; Habilita solo INT0 (bit 0 en 0), el resto deshabilitado
out IMR, al
; 2.2) Configurar el ID de la interrupción para INT0
mov al, ID ; Cargar el ID elegido para F10
out INT0, al
; 2.3) Asociar el vector de interrupción con la subrutina atenderf10
mov bl, ID ; BL = ID de la interrupción
mov [bl], atenderf10 ; Vector de interrupción: dirección de la rutina
;-----------------------------------------------
; 3) Bucle principal (espera activa)
;-----------------------------------------------
loop: jmp loop ; Espera indefinida (el programa queda esperando interrupciones)
hlt ; (Opcional) Detiene la CPU si sale del bucle
;-----------------------------------------------
; 4) Rutina de atención de la interrupción F10
;-----------------------------------------------
org 50h ; Dirección de la subrutina de atención
atenderf10:
inc cantidad ; Incrementa el contador cada vez que se presiona F10
mov al, 20h ; Código de End Of Interrupt (EOI)
out EOI, al ; Notifica al PIC que terminó la atención
iret ; Retorna de la interrupción