160 likes | 323 Views
Teclado. Estructura del teclado. Scan Code. Después de la exploración, el controlador de teclado genera un ScanCode Se genera un ScanCode al pulsar una tecla y al liberarla El receptor distingue y actúa en consecuencia La pulsación: “make” La liberación: “break”. 8048/8042.
E N D
Scan Code • Después de la exploración, el controlador de teclado genera un ScanCode • Se genera un ScanCode al pulsar una tecla y al liberarla • El receptor distingue y actúa en consecuencia • La pulsación: “make” • La liberación: “break”
8048/8042 • En el teclado reside el microcontrolador 8048 • Obtiene el ScanCode y lo envía de forma serial-síncrono al sistema • Start bit • 8 bits de ScanCode • paridad impar • Stop bit
8048/8042 • En el sistema reside el 8042 • Recibe el ScanCode y genera una interrupción • IRQ1 del controlador de interrupciones • INT 9 del vector de interrupciones (BIOS)
Tipos de teclas • Caracteres imprimibles • Controles de tecla Shift, Alt,Ctrl... • Otros F1,...,ImprPant, Pausa, ...
BIOS • Al recibir la tecla el 8042 genera la interrupción • La rutina de INT 9 lee el carácter de puerto 60h • Testea el ScanCode. • Activa de nuevo la interrupción
Testeo de la tecla • Si es imprimible lo almacena en el buffer de teclado • Si es de control de tecla no lo almacena • modifica el byte de estado apropiadamente 417h..418h • Si es otra tecla almacena el ScanCode y su código ascii en el buffer • 00 Si no existe un código ascii adecuado • Si es un Break desecha el ScanCode • Un SC break es igual al SC make previo +80h • Si transcurren >05s se copia de nuevo el último carácter en el buffer
Funciones de Bios • Para leer de teclado BIOS ofrece INT 16h • AH=0 Lee un carácter del buffer, con bloqueo y lo elimina del buffer • AH= ScanCode • AL=Código Ascii o 00h • AH=1 Lee un carácter del buffer, sin bloqueo. No lo elimina del buffer • AH=ScanCode (o Código Tecla si AL=0) si Zf=0 • AL=Código Ascii o 00 si Zf=0
Int 16h • AH=2 devuelve el byte de estado • AL byte de estado • d7 Activado Insert • d6 Activado Capslock • d5 Activado Numlock • d4 Activado Scroll lock • d3 Pulsado Alt • d2 Pulsado Ctrl • d1 Pulsado Shift Left • d0 Pulsado Shift Right
Int 16h • Funciones adicionales. • AH=10h lee un carácter incluyendo sección extendida (con bloqueo) • Puede aparecer E0h en AH, referido al teclado ampliado • AH=11h lee un carácter incluyendo sección extendida (sin bloqueo) • Puede aparecer E0h en AH, referido al teclado ampliado • AH=12h lee estado de la sección extendida • En AH byte de estado teclado ampliado
Int 16h • AH=12 devuelve el byte de estado teclado ampliado • AH Segundo byte de estado • d7 Pulsado PetSys • d6 Pulsado Capslock • d5 Pulsado Numlock • d4 Pulsado Scroll lock • d3 Pulsado Right Alt • d2 Pulsado Right Ctrl • d1 Pulsado Left Alt • d0 Pulsado Left Ctrl • AL byte de estado • d7 Activado Insert • d6 Activado Capslock • d5 Activado Numlock • d4 Activado Scroll lock • d3 Pulsado Alt • d2 Pulsado Ctrl • d1 Pulsado Shift Left • d0 Pulsado Shift Right
Tipos de teclado • PC/XT. 83 Teclas • PC/AT. 84 Teclas. + Sys o PetSys • MF-II 102 Teclas. • + Keypad • Teclas de función arriba + F11,F12 • AltGr (equivalente a Ctrl+Alt) • leds • Envía una identificación cuando se le pide.
Teclas especiales • ImprPant dispara la Int 5h • Pausa detiene el sistema • Ctrl y Inter dispara la Int 1Bh (IRET) • PetSis dispara la Int 15h con AH=85h • En principio está vacía (IRET)
Buffer de teclado • 41Eh..43Dh • 2 bytes por tecla pulsada • Un puntero de cabeza 41Ah y 41Bh • lugar donde almacenar la siguiente tecla leída • Un puntero de cola 41Ch y 41Dh • lugar de donde lee la última tecla • El buffer es circular
PC Interno ed. Marcombo • The 80x86 IBM PC and Compatible • Muhammad Ali Mazidi... Prentice Hall • Interrupción 16h de Bios • http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/keyboard/atkeyboard.html