Informática


Teclado


EL TECLADO

RESEÑA HISTORICA

Los teclados de ordenador tienen su ascendiente directo en los teclados de máquinas de escribir.  En concreto, la disposición QWERTY se remonta al año 1868 en que fue patentada por Christopher Sholes.  En 1873 vendió la patente a Remington, que fue la primera máquina de escribir con éste tipo de teclado (las primeras no disponían de teclado como tal, sino de ruedas y otros artificios para introducir los caracteres).

Existen varias teorías sobre el porqué de la disposición QWERTY, incluyendo las que sostienen que fue un intento deliberado de hacer difícil teclear los caracteres más frecuentes, de modo que los mecanógrafos no las atascaran (cosa muy frecuente en las antiguas máquinas de escribir mecánicas, si se escribía demasiado rápido).  Algunos sostienen que este diseño es poco funcional, razón por la que se han ideado otras disposiciones.  El teclado Dvorak es uno de estos diseños fundamentado en consideraciones ergonómicas

1. INTRODUCCION.

La familia de procesadores 80x86, presente en el IBM PC, utiliza la arquitectura Von Neumann (figura 1). El denominado bus del sistema conecta las diferentes partes de una maquina Von Neumann, y en la familia 80x86, se diferencian 3 clases de buses:

a) Bus de datos.- Existen de 8, 16, 32 o 64 bits dependiendo del modelo (64 bits para los Pentium de última generación). El número de bits se usa, en general, para determinar el tamaño del procesador.

b) Bus de direcciones.- Para poder conectar la CPU con la memoria y con los dispositivos de entrada/salida.

c) Bus de control.- Para enviar señales que determinan como se comunica la CPU con el resto del sistema (por ejemplo, las líneas de lectura (read) y escritura (write) especifican que es lo que se esta haciendo en la memoria)

Figura 1. Arquitectura básica de una maquina Von Neumann.

Por tanto los dispositivos de E/S son una parte fundamental del computador y tienen velocidades muy diferentes, lentas (como el teclado o ratón), de velocidad media (como una impresora) y rápidas (como los discos duros).

Para homogenizar las velocidades de los dispositivos de E/S con la del CPU se crearon circuitos de interfaz. Tenemos dos tipos de conexiones con los dispositivos:

a) Conexión mapeada.

b) Conexión mediante puertos especiales de E/S.

La PC IBM usa la conexión mediante puertos especiales de E/S. En este computador existen 2 espacios de direcciones que son para la memoria y para los dispositivos de E/S.

El bus de direcciones para la E/S es siempre de 16 bits. Entonces el microprocesador puede direccionar hasta 65536 diferentes localizaciones especiales, suficiente para varios dispositivos. Hay 2 espacios de direcciones pero un solo bus de direcciones, por eso las líneas de control son las que deciden a que espacio estamos accediendo en cada momento (figura 2).

Entonces, la memoria y los dispositivos de E/S, comparten el bus de datos y los primeros 16 bits del bus de direcciones.

Figura 2. Interfaces de entrada/salida.

Existen 3 formas de realizar la E/S en un dispositivo:

  • Por encuesta.- El CPU sondea periódicamente el dispositivo para ver su estado. Esta forma de análisis es sencilla pero ineficiente ya que se pierde tiempo, y el mismo esta sujeto a la velocidad de procesador.

  • Por interrupciones.- El dispositivo es quien establece el momento en que se realiza la transferencia de datos. En la familia 80x86 existen 3 tipos de interrupciones. Las traps (invocadas por el usuario mediante software), las excepciones (traps generados automáticamente por alguna condición excepcional ejemplo, división por cero), y interrupciones hardware (se basa en un evento hardware externo al CPU, no tiene nada que ver con las instrucciones que se realicen en ese momento).

  • Por acceso directo a la memoria.- El dispositivo opera directamente sobre la memoria, siempre y cuando la CPU le otorgue el permiso para hacerlo.

  • En la E/S por interrupciones, todos los dispositivos se conectan al controlador programable de interrupciones o PIC, quien establece prioridad entre las interrupciones y se conecta con la CPU. Denominado genéricamente como Controlador 8259 acepta interrupciones de hasta 8 dispositivos, si cualquier dispositivo pide servicio, el 8259, se conectara con la CPU y le pasara un vector de interrupción programable. Actualmente la mayoría de computadores tienen 2 PICs (figura 3).

    Figura 3. Esquema de conexión de los PICs.

    El ordenador, manda y recibe la información del periférico que necesita para comunicarse con él, (una serie de señales y símbolos), siendo único para cada marca y modelo de periférico. El principal problema en la conexión de los periféricos con la CPU es el de compatibilizar las características entre periféricos y CPU, para solucionarlo se usan los Controladores de Periféricos.

    Los objetivos de un controlador son:

    a) Selección o direccionamiento del periférico.- La CPU sitúa en el bus de direcciones la dirección del puerto con el que quiere comunicarse.

    b) Almacenamiento temporal.- El controlador dispone de uno o varios puertos de datos para almacenar temporalmente los datos a transferir.

    c) Sincronización.- La velocidad a la que opera la CPU es muy superior a la de un periférico.

    d) Control del periférico.- La CPU debe ser capaz de interrogar al controlador para conocer su estado o enviar órdenes.

    e) Conversión de datos.- Consiste en la adaptación de las características eléctricas y lógicas de las señales empleadas por el dispositivo de E/S y el bus.

    f) Detección de errores.- Las transferencias de datos son operaciones sensibles a sufrir errores. En el controlador se realizan funciones como inclusión/detección de paridad.

    g) Gestión de transmisión de bloques de información.- Existen periféricos que intercambian información mediante un conjunto de palabras y no con palabras aisladas.

    En los primeros ordenadores la CPU controlaba las operaciones elementales de E/S. Con el tiempo y para descargar a la CPU de estas funciones, las operaciones de E/S las realizan los controladores, siendo éstos cada vez más complejos (algunos incluyen memoria y un procesador para uso exclusivo de operaciones de E/S).

    2. EL TECLADO.

    Un teclado de computadora es un periférico, físico o virtual (por ejemplo teclados en pantalla o teclados láser), utilizado para la introducción de órdenes y datos en una computadora (es la principal vía de entrada de comandos). Tiene su origen en los teletipos y las máquinas de escribir eléctricas, que se utilizaron como los teclados de los primeros ordenadores y dispositivos de almacenamiento (grabadoras de cinta de papel y tarjetas perforadas).

    Esta unido al PC por un conector de 5 contactos, por el que circulan la señal del reloj, la de datos y las señales de referencia. La comunicación con la PC es de tipo serie.

    El teclado multifunción II refleja y estandariza el teclado moderno con cuatro bloques diferenciados:

    a) Teclado principal.- Contiene los caracteres alfabéticos, numéricos y especiales, como en una maquina de escribir convencional.

    b) Teclado numérico.- es habitual que las teclas correspondientes a los dígitos decimales, signos de operaciones básicos y punto decimal están repetidas para facilitar al usuario la introducción de datos numéricos.

    c) Teclado de gestión de imagen o de control.- Sobre la pantalla se visualiza una marca o cursor indicador de posición. El cursor indica la posición donde aparecerá el siguiente carácter que tecleemos. Las teclas de posición de imagen permiten modificar la posición del cursor en la pantalla.

    d) Teclas de función.- Normalmente distribuidas en una hilera en la parte superior del teclado. Son teclas cuyas funciones están definidas por el usuario o predefinidas para una aplicación, por ejemplo F8.

    Básicamente, IBM ha soportado 3 tipos de teclados físicos:

  • El primero de éstos apareció en 1981, tenía 83 teclas, fue denominado XT, usaban es Scan Code set 1, unidireccionales y no eran muy ergonómicos, eran unidireccioales ahora está obsoleto (Figura 4).

  • En 1984 apareció el teclado PC/AT con 84 teclas (una más al lado de SHIFT IZQ), ya es bidireccional, usa el Scan Code set 2 y al igual que el anterior cuenta con un conector 5-pin DIN (Figura 4).

  • En 1987 IBM desarrolló el MF-II (Multifunción II o teclado extendido) a partir del AT. Sus características son que usa el mismo interfaz que el AT, añade muchas teclas más, se ponen leds y soporta el Scan Code set 3, aunque usa por defecto el 2. De este tipo hay dos versiones, la americana con 101 teclas y la europea con 102 (Figura 4).

    • Los teclados PS/2 son básicamente iguales a los MF-II. Las únicas diferencias son el conector (mini-DIN de 6 pin) más pequeño que el AT y más comandos, pero la comunicación es la misma, usan el protocolo AT.

    Teclado AT

    'Teclado'

    Teclado XT

    Teclado MF-II

    Figura 4. Tipos de teclados.

    Existen distintos tipos de pulsadores de teclas (Mecánicos, de laminas, de bovedilla, capacitivo, de efecto hall, etc.) Aquí definimos algunos:

  • Tipo resorte. Cuenta con un contacto metálico, con un resorte que hace retornar luego de la presión. Generalmente son muy resistentes y duraderos, ya que los contactos metálicos se limpian automáticamente. Más caros, más "duros" al tacto.

  • Tipo membrana. Consisten de una membrana en cuya superficie se encuentra una superficie conductora. En la placa, existen láminas de contacto aisladas. Cuando entran en contacto con la superficie conductora de la tecla presionada, se cierra el circuito. Son más baratos, más suaves y más frágiles.

  • 3. LOS CONECTORES DEL TECLADO

    Los primeros teclados, XT de 83 teclas; AT de 84, y algunos extendidos de 101/102 teclas, utilizan un conector DIN de 5 patillas con el macho del lado del teclado y la hembra del lado de la placa-base.  Salvo en algunos modelos de IBM el cable está sólidamente unido al teclado.

    La introducción del PS/2 de IBM inauguró la moda de utilizar conectores mini DIN para teclados y ratones.  La tendencia actual es utilizar conectores USB para ambos dispositivos de entrada.  Más recientemente se está extendiendo la moda de dispositivos inalámbricos ("Wireless").  Esto no significa que tales modelos no utilicen el conector de teclado; lo que en realidad desaparece es el cable entre el dispositivo que se conecta al conector del PC y el propio teclado.  La moda comenzó con los de enlace infrarrojo, pero actualmente casi todos son de radio-frecuencia (figura 5)

    Adaptador USB/mini-DIN

    Figura 5. Tipos de conectores y señales.

    4. EL CHIP DEL TECLADO

    Muchos ordenadores llevan en su interior el Chip 8048, 8049 o similares fabricados por Intel. Consta de unos 2Kb de memoria ROM y 128 bytes de RAM (Las 8 primeras posiciones son empleadas como registros) Este procesador se encarga de detectar la pulsación de las teclas, generando unos bytes que las identifican y enviándolos a continuación por el cable a través de un protocolo de comunicación en serie que en el AT consta de 11 bits por cada dato (1 de inicio, 8 de datos, 1 de paridad y otro de stop) y 9 en los XT (entre otras razones, porque no se controla la paridad).

    Los teclados de AT y de XT generan códigos diferentes para las mismas teclas. Además, al soltar una tecla, los teclados de XT generan el mismo código que al pulsarla pero con el bit 7 activo; sin embargo, en AT se generan dos códigos que se envían consecutivamente (0F0h y después el mismo código que al pulsarla). El teclado se encarga de repetir los códigos de una tecla cuando ésta lleva cierto tiempo pulsada, en el conocido mecanismo autorepeat de la mayoría de los teclados. Muchos teclados tienen debajo un interruptor que permite seleccionar su modo de funcionamiento (XT o AT). El teclado tiene algunos registros, dos de ellos son accesibles desde el exterior:

    a) Registro de Estado: Contiene información acerca del interfase.

    b) Registro de Datos: Si en la memoria interna del teclado hay pulsaciones registradas, en este registro se guarda una copia del SCAN CODE correspondiente a la primera que se pulsó.

    Chip 8048. Fabricado por NEC.

    5. CODIGO SCAN

    Los códigos que envía el teclado, y que llegan a la CPU a través del controlador de teclado, no son los correspondientes al código ASCII que devuelven las interrupciones del ROM BIOS. Son unos códigos particulares del teclado llamado SCAN CODE. El teclado no tiene información sobre qué tecla se encuentra en cada intersección de la matriz (si es una `a' o un `;'). La interfaz identifica la posición de la tecla en el teclado, y se la indica a la CPU por medio del SCAN CODE. Los SCAN CODE están asociados a posiciones del teclado. Es la propia CPU la que convierte un SCAN CODE del teclado en un código ASCII correspondiente a un carácter, y lo hace por medio de las rutinas de interrupción que son invocadas cuando el controlador de teclado genera una petición de interrupción. Estas rutinas leen el dato del controlador de teclado (el SCAN CODE) y lo convierten a código ASCII según una tabla interna (en caso de que sea un carácter del código ASCII; si se trata de teclas mudas, como la tecla Ctrl o Alt, se genera también un código, aunque no sea ASCII). Esto permite que una tecla situada en una posición determinada se traduzca como un código ASCII u otro, según el PC esté configurado para un idioma u otro (es el caso de la tecla `ñ' del teclado español, que en teclados para otros idiomas tiene un carácter distinto: el código scan que envía el teclado es el mismo en todos los teclados, son las rutinas de interrupción las que deciden que sea una `ñ' u otro carácter).

    Hay códigos scan de dos tipos: los códigos make y los códigos break. Los primeros se generan cuando se pulsa una tecla, y los segundos cuando se suelta. Esto permite que el PC pueda saber cuándo se pulsan dos teclas a la vez. Por ejemplo, si se recibe el código make de la tecla mayúsculas y luego el código make de la “a”, el PC deduce que se debe generar una “A”. Más adelante se recibirán el código break de la “a” y el código break de la tecla “mayúsculas”, al ser soltada cada una de ellas. Como observación, el código scan de la “a” y el de la “A” es el mismo, puesto que para ambas se pulsa la misma tecla. Lo que cambia es que, en el caso de la “A”, además, se pulsa la tecla “mayúsculas”. En general, el código make de una tecla es único, independientemente de cuántos caracteres tenga dibujados encima. Lo que distingue entre unos y otros son los códigos adicionales de teclas de modificación que se reciben (mayúsculas, Ctrl, Alt...). Lo mismo ocurre para los códigos break. Para facilitar la conversión entre códigos make y códigos break, éstos se establecen de forma que para obtener el código break correspondiente a un código make únicamente hay que sumar al código make 128 (80h), por lo que los códigos make tienen el bit más significativo a 0 y los códigos break a 1.

    6. FUNCIONAMIENTO.

    El funcionamiento del teclado es básicamente el siguiente:

    Cada tecla se encuentra en el cruce entre un hilo vertical y un hilo horizontal en la denominada matriz de hilos. Los hilos verticales y los horizontales no se tocan en estado de reposo, están a distinta altura. Cuando se pulsa una tecla, se establece un contacto entre el hilo vertical y el horizontal que forman el cruce en el que se encuentra la tecla, produciéndose un cambio de corriente (figura 6).

    El chip del teclado (microcontrolador 8048, 8049 o 8051) está constantemente muestreando la matriz para detectar cuándo se ha producido un contacto entre un hilo vertical y uno horizontal, señal de que se ha pulsado una tecla. A partir del hilo vertical y el horizontal involucrados en el contacto, el chip de teclado reconoce la tecla que se ha pulsado.

    Cuando el chip del teclado reconoce que se ha pulsado una tecla, con el programa interno que tiene grabado en su respectiva ROM, calcula el código correspondiente a la tecla pulsada (cada ubicación tiene un código especifico). El código generado se llama KSCAN (Keyboard Scan Code).

    Figura 6. Comunicación con el ordenador.

    Luego de localizar el código, se dispone a enviarlo al sistema. Primero pasa por el controlador de teclado que se encuentra en la PC. Se encarga de recibir los datos en formato serie, convertirlos a formato paralelo, y solicitar una interrupción a la CPU para que los lea a través del bus del sistema. En los PC XT el controlador de teclado era un simple interfaz serie, capacitado únicamente para recibir datos del teclado. A partir del PC AT se incluye un controlador más sofisticado, como el 8042, o el 8741 ó 8742, más modernos. De esta manera, el controlador de teclado puede llevar a cabo algunas funciones más que en el PC XT. Por ejemplo, a partir del AT es posible, además de recibir los códigos KSCAN del teclado, enviarle información (por ejemplo: comandos).

    El Controlador del teclado, convierte propiamente el código KSCAN a SCAN CODE (código de 8 bits), con el programa que tiene en su ROM. La interrupción solicitada, se realiza a través del controlador de interrupciones 8259 o PIC, el que recibe las peticiones de interrupción de todos los periféricos del sistema y se las pasa de una en una a la CPU. En la arquitectura PC, el interface de teclado está conectado a la línea llamada IRQ1 del PIC. Como se puede (ver la Figura 6), la “lógica de petición de interrupciones” conecta con el PIC, (ver la Figura 8), la “lógica de petición de interrupciones” viene dada en parte por el “Output Buffer” o buffer de salida.

    Figura 7. Estructura y funcionamiento del teclado.

    El CPU a través del denominado “Vector 9”, se comunica con la BIOS. Cada vez que se pulsa una tecla se genera un código de interrupción y la rutina de servicio almacena el código de la tecla pulsada en un buffer de memoria cíclico situada en el área de datos del BIOS. El código de la tecla se obtiene leyendo dos veces el puerto 60h del controlador del teclado, obteniéndose el código SCAN, y el código ASCCI siempre y cuando no sean teclas especiales (F1,F2,…, F12, Shift, Cursor, etc.) en cuyo caso se devolvería 0 (figura 7).

    7. EL CONTROLADOR DEL TECLADO

    En los AT hay un circuito integrado encargado de interpretar los datos procedentes del teclado y, después de traducirles adecuadamente para compatibilizar con los XT si así ha sido programado, enviarles a la CPU: el 8042 de Intel. También sirve de intermediario a las transmisiones de datos de la CPU al teclado, que en el AT es un periférico bidireccional que puede recibir comandos para configurar los LEDs, entre otras tareas. El 8042 se comporta como una interfase de periférico programable: “permite implementar interfaces a medida para distintos periféricos”. Dispone de 2Kb de memoria ROM, 128Kb de memoria RAM, 2 puertos de entrada programable de E/S de 8 bits, contador interno de 8 bits, reloj de 12 Mhz y otras señales de control y especiales.

    Chip 8042. Fabricado por Megatrends Inc.

    Cuando el 8042 recibe un byte entero del teclado, inhibe la comunicación hasta que la CPU lo acepta. Si el dato se recibe con error de paridad, automáticamente el 8042 lo solicita de nuevo al teclado enviando un comando de reenvío al mismo y un byte 0FFh a la CPU indicando esta circunstancia, activando también el bit 7 del registro de estado del 8042. Además, chequea que no pasen más de 2 milisegundos durante la recepción: si se excede este límite se envía también un 0FFh a la CPU y se activa el bit 6 en el registro de estado. Cuando la CPU envía algo al teclado, el 8042 inserta el bit de paridad automáticamente. Si el teclado no empieza la comunicación en menos de 15 milisegundos o tarda en recibir el dato más de 2 milisegundos, se envía un 0FEh a la CPU y se activa el bit 5 en el registro de estado.

    Además, el teclado ha de responder a todas las transmisiones con un byte de reconocimiento, si en esta operación hay un error de paridad se activarán los bits 5 y 7 en el registro de estado; si tarda más de 25 milisegundos en responder también se envía el byte 0FEh a la CPU y se activan los bits 5 y 6 del registro de estado.

    (figura 8).

    Figura 8. Esquema de los registros del controlador del teclado.

    La comunicación teclado-CPU puede ser inhibida por hardware por medio de la llave que incorpora la unidad central, aunque la comunicación CPU-teclado sigue habilitada. El 8042 se apoya en tres registros básicos: uno de estado, uno de salida y otro de entrada. El registro de estado, del que ya se ha explicado parte de su funcionalidad, se encuentra en el puerto de E/S 64h y puede ser leído en cualquier momento.

    El registro de salida está ubicado en el puerto 60h y es de sólo lectura; el 8042 lo usa para enviar los códigos de las teclas a la CPU y los bytes de datos de los comandos que los soliciten. Debería ser leído sólo cuando el bit 0 del registro de estado está activo. El registro de entrada del 8042 es de sólo escritura y puede ser accedido por los puertos 60h y 64h según que lo que se quieran enviar sean datos o comandos al 8042, respectivamente; los datos serán reenviados por el 8042 hacia el teclado a menos que el propio 8042 esté esperando un dato de la CPU a consecuencia de un comando previo enviado por ésta. Los datos deben ser escritos en este registro sólo cuando el bit 1 del registro de estado esté inactivo. En el cuadro 2 se listan los comandos que admite el 8042 (enviados al puerto 64h). Debe darse cuenta el lector de la particularidad de que los registros de salida y entrada son accedidos por el mismo puerto (60h), siendo la lectura y escritura las que seleccionan el acceso a uno u otro respectivamente.

    Figura 9. Conexión del controlador del teclado con el puerto AT.

    Bit

    Significado

    0

    Registro de salida lleno. Un 1 indica que el 8042 ha colocado un dato en el registro de salida y la CPU aún no lo ha leído. Este bit se pone a 0 cuando la CPU lee el puerto 60h.

    1

    Registro de entrada lleno. Un 1 significa que ha sido colocado un dato en el registro de entrada y el 8042 aún no lo ha leído.

    2

    Banderín del sistema: asignado con un comando del 8042. 0 al arrancar.

    3

    Comando/dato. Se pone a 1 o a 0 al enviar algo al puerto 60h o al 64h respectivamente: de esta manera, el 8042 sabe si lo que se le envía son órdenes o datos (órdenes = 1). Ambos puertos conectan con el registro de entrada.

    4

    Bit de inhibición. Este bit se actualiza siempre que se coloca un dato en el registro de salida, un 0 indica teclado inhibido.

    5

    Transmisión fuera de tiempo. Indica que la transmisión de un dato hacia el teclado no ha sido respondida en los márgenes de tiempo adecuados.

    6

    Recepción fuera de tiempo. Indica si el teclado ha enviado un dato y sigue enviando más después del tiempo esperado.

    7

    Error de paridad. Indica la paridad del dato recibido: 0 la correcta.

    Tabla 1. Registros de Estado.

    Comando

    Significado

    20h

    Leer el byte de comando del 8042 (ver cuadro 3). Esta orden envía al registro de salida (en el puerto 60h) dicho byte para que sea leído.

    60h

    Escribir el byte de comando del 8042. El siguiente byte que se envíe al registro de entrada (puerto 60h) será el byte de comando del 8042.

    AAh

    Autotest. El 8042 realiza un diagnóstico interno y coloca un 55h en el registro de salida si todo va bien.

    ABh

    Test del interface. El controlador chequea las líneas de reloj y datos devolviendo: 0 si no hay errores; 1: el reloj está demasiado en bajo, 2: está demasiado en alto; 3: la línea de datos está demasiado en bajo y 4: la línea de datos está demasiado en alto.

    ACh

    Volcado de diagnóstico. Envía al registro de salida, sucesivamente, 16 bytes de la RAM del 8042, el estado de los registros de entrada y salida y la palabra de estado del controlador.

    ADh

    Inhibir teclado. Esto activa el bit 4 del byte de comando del 8042.

    AEh

    Habilitar teclado. Esto baja el bit 4 del byte de comando del 8042.

    C0h

    Leer el puerto de entrada (véase cuadro 4). Esto obliga al 8042 a leer el puerto de entrada y colocar lo que lee en el registro de salida; sólo ha de emplearse este comando cuando el registro de salida está vacío.

    D0h

    Leer el puerto de salida. El 8042 lee el puerto de salida y lo coloca en el registro de salida; sólo debe emplearse este comando si el registro es vacío.

    D1h

    Escribir el puerto de salida (ver cuadro 5). El siguiente byte que se envíe al registro de entrada (puerto 60h) se colocará en el puerto de salida.

    E0h

    Leer entradas de testeo. El 8042 coloca en el registro de salida los bits de reloj (bit 0) y datos (bit 1) para permitir la comunicación directa con el teclado.

    Fxh

    Los bits 0 al 3 de este comando se relacionan con los bits 0 al 3 del puerto de salida del 8042; un 0 indica bit pulsado durante 6 microsegundos (apróx.) y un 1 que el bit no resulta modificado; ¡cuidado con el reset!.

    Tabla 2. Comandos del 8042.

    8. EL CONTROLADOR DE INTERRUPCIONES.

    El PIC 8259 puede aceptar hasta ocho señales de interrupción independientes (vectores), numeradas del 0 al 7 (16 en la PCs actuales “2 PICs”). Las entradas de señales de interrupción al 8259 están alambradas en el bus de control así que cualquier dispositivo conectado al bus puede acceder a este mecanismo de interrupción. En el bus de control, las señales se llaman IRQ0 hasta IRQ15 (figura 10).

    • -CS: Habilita la comunicación con la CPU.

    • -WR: Permite al 8259 aceptar comandos de la CPU.

    • -RD: Permite al 8259 dejar la información en el bus de datos.

    • D7...D0: Bus de datos bidireccional, por el que se transmite la información de control/estado y el número de vector de interrupción.

    • CAS0..CAS2: Líneas de cascada, actúan como salida en el 8259 maestro y como entrada en los 8259 esclavos, en un sistema con varios 8259 interconectados, constituyendo un bus local.

    • -SP/-EN: Pin de doble función: en el buffered mode del 8259 actuará como -EN, para habilitar los buffers del bus; en el modo normal indicará si el 8259 es maestro o esclavo (-SP).

    • INT: Conectado a la patilla INT de la CPU para producir la interrupción cuando llegue el momento.

    • IR0...IR7: Líneas asíncronas de petición de interrupción. Una petición de interrupción se ejecuta manteniendo IR en alto hasta que se recibe el reconocimiento (modo por flancos) o simplemente poniendo en alto la línea IR (modo por niveles).

    • -INTA: Línea de reconocimiento de interrupción, por medio de esta línea se fuerza al 8259 a depositar en el bus la información del vector de interrupción. INTA es independiente de -CS.

    • A0: En conjunción con -CS, -WR y -RD es empleada para enviar las palabras de comando al 8259 y para solicitar información al mismo. Suele ir conectada a la línea A0 de la CPU.

    Chip Intel 8259

    Figura 10. Circuito del controlador de interrupciones.

    El funcionamiento del 8259 varía ligeramente en función del sistema en que esté instalado, según sea este un 8086 o un 8080/8085. Veremos primero el caso del 8086:

  • Una o más líneas IR son activadas por los periféricos, lo que pone a 1 el correspondiente bit del IRR.

  • El 8259 evalúa la prioridad de estas interrupciones y solicita la interrupción a la CPU (línea INT) si es necesario.

  • Cuando la CPU reconoce la interrupción, envía la señal -INTA.

  • Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR. En este ciclo, el 8259 aún no controla el bus de datos.

  • Cuando la CPU envía un segundo ciclo -INTA, el 8259 deposita en el bus de datos un valor de 8 bits que indica el número de vector de interrupción del 8086, para que la CPU lo pueda leer.

  • En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el segundo pulso -INTA; en caso contrario, ese bit permanece activo hasta que la CPU envíe el comando EOI al final de la rutina que trata la interrupción (caso más normal).

  • En el caso de sistemas basados en el 8080/8085, el funcionamiento es idéntico hasta el punto (3), pero a continuación sucede lo siguiente: 4) Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR. En este ciclo, el 8259 deposita en el bus de datos el valor 11001101b, correspondiente al código de operación de la instrucción CALL del 8080/85.

  • Esta instrucción CALL provoca que la CPU envíe dos pulsos -INTA.

  • El 8259 utiliza estos dos pulsos -INTA para depositar en el bus de datos, sucesivamente, la parte baja y alta de la dirección de memoria del ordenador de la rutina de servicio de la interrupción (16 bits).

  • Esto completa la instrucción CALL de 3 bytes. En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el tercer pulso -INTA; en caso contrario, ese bit permanece activo hasta que la CPU envíe el comando EOI al final de la rutina que trata la interrupción.

  • Si en el paso (4), con ambos tipos de microprocesador, no está presente la petición de interrupción (por ejemplo, porque ha sido excesivamente corta) el 8259 envía una interrupción de nivel 7 (si hubiera un 8259 conectado en IR7, las líneas CAS permanecerían inactivas y la dirección de la rutina de servicio de interrupción sería suministrada por el 8259 maestro).

    Entrada al 8259

    Código

    Dispositivo

    IRQ0

    08H

    Timer del sistema

    IRQ1

    09H

    Teclado

    IRQ2

    0AH

    8259 esclavo

    IRQ3

    0BH

    COM2/COM4

    IRQ4

    0CH

    COM1/COM3

    IRQ5

    0DH

    Reservada/ Tarjeta de sonido

    IRQ6

    0EH

    Disco flexible

    IRQ7

    0FH

    LPT1

    IRQ8

    70H

    Reloj de tiempo real

    IRQ9

    71H

    Reservada

    IRQ10

    72H

    Reservada

    IRQ11

    73H

    Reservada

    IRQ12

    74H

    Ratón PS/2

    IRQ13

    75H

    Coprocesador matemático

    IRQ14

    76H

    Disco duro

    IRQ15

    77H

    Reservada

    Tabla 3. Peticiones de ininterrupción.

    9. COMUNICACIÓN DE LA CPU CON EL TECLADO.

    El teclado del AT es bidireccional y admite comandos por parte del ordenador. Estudiaremos ahora cuáles son esos comandos. En primer lugar, tras el arranque del ordenador y al recibir la alimentación el teclado, éste realiza un autotest denominado BAT (Basic Assurance Test) donde chequea su ROM, RAM y enciende y apaga todos los LEDs. Esta operación emplea entre 600 y 900 milisegundos; al acabar el BAT y cuando sea posible establecer la comunicación con el ordenador (líneas de reloj y datos en alto) envía un byte 0AAh si todo ha ido bien y un 0FCh si ha habido fallos; inicializando después los parámetros de auto repetición de las teclas.

    El teclado tiene un buffer interno con capacidad para 17 bytes (unas 8 teclas) con objeto de almacenar las últimas teclas pulsadas cuando no puede enviarlas al 8042. Cuando este buffer se llena, su última posición (17ª) se rellena con 0 y se ignoran las siguientes pulsaciones.

    Los comandos al teclado pueden ser enviados en cualquier momento al puerto 60h: a menos que el 8042 esté esperando por un byte de datos en el registro de entrada, como consecuencia de un comando previo, redireccionará todo lo que se le envíe por el puerto 60h hacia el teclado. El teclado responderá en menos de 20 milisegundos, devolviendo una señal de reconocimiento por medio de un byte 0FAh. Los principales comandos (diferenciados de los datos por tener el bit 7 activo) son:

    • Reset (0FFh): Al recibirlo envía una señal de reconocimiento y se asegura de que la CPU se de por enterada poniendo en alto las líneas de reloj y datos un mínimo de 500 microsegundos; el teclado permanece inhibido hasta que la CPU acepta la señal de reconocimiento o envía otro comando que sobrescribe y anula éste. Llegados a este punto, el teclado ejecuta de nuevo el BAT, estableciendo valores por defecto para la auto repetición y limpiando su registro de salida.

    • Reenvío (0FEh): El sistema puede enviar este comando al teclado cuando detecta un fallo en la recepción desde el teclado. Este comando sólo puede ser enviado después de una transmisión del teclado y antes de habilitar la comunicación para la siguiente recepción. El teclado responde enviando de nuevo el dato anterior (si ya era un 0FEh, el último dato que envió que no fuera 0FEh).

    • Establecer valores por defecto (0F6h): Devuelve la auto repetición a los valores habituales, limpia su registro de salida y continúa rastreando las teclas si no estaba inhibido; es una especie de reset en caliente.

    • Establecer valores por defecto y parar (0F5h): Similar al comando anterior, pero dejando de rastrear las teclas y permaneciendo inhibido hasta recibir más instrucciones.

    • Habilitar (0F4): Reanuda el funcionamiento interrumpido por el comando anterior o algún otro.

    • Establecer ratio y retardo de auto repetición (0F3h): Tras este comando debe enviarse otro inmediatamente a continuación, que se interpretará como dato, estableciendo los valores de auto repetición. De este segundo byte, el bit 7 estará siempre a cero; el valor de los bits 5 y 6, sumándole una unidad, indica el tiempo que ha de pasar desde que se pulsa una tecla hasta que comience a auto repetirse, en unidades de 0,25 segundos (±20%). Los bits 2, 1 y 0 forman un número A; los bits 4 y 3 forman otro número B; por medio de la siguiente fórmula se obtiene la tasa o ratio de auto repetición en “teclas por segundo”:

    Una vez recibido este comando, el teclado envía la acostumbrada señal de reconocimiento, deja de rastrear las teclas y espera por el parámetro de auto repetición, respondiendo al mismo con otra señal de reconocimiento y volviendo a rastrear las teclas. Si en lugar de recibir el parámetro recibe otro comando (bit 7 activo) dejará inalterados los valores de auto repetición y procesará dicho comando, aunque ¡cuidado!: permanecerá inhibido hasta que se le habilite con el comando 0F4h. Por defecto, el sistema establece una tasa de 10 caracteres por segundo y 0,5 segundos de espera (parámetro 4Ch).

    ABh

    Test del interface. El controlador chequea las líneas de reloj y datos devolviendo: 0 si no hay errores; 1: el reloj está demasiado en bajo, 2: está demasiado en alto; 3: la línea de datos está demasiado en bajo y 4: la línea de datos está demasiado en alto.

    ACh

    Volcado de diagnóstico. Envía al registro de salida, sucesivamente, 16 bytes de la RAM del 8042, el estado de los registros de entrada y salida y la palabra de estado del controlador.

    ADh

    Inhibir teclado. Esto activa el bit 4 del byte de comando del 8042

    AEh

    Habilitar teclado. Esto baja el bit 4 del byte de comando del 8042

    COh

    Leer el puerto de entrada (véase cuadro 4). Esto obliga al 8042 a leer el puerto de entrada y colocar lo que lee en el registro de salida; sólo ha de emplearse este comando cuando el registro de salida está vacío.

    DOh

    Leer el puerto de salida. El 8042 lee el puerto de salida y lo coloca en el registro de salida; sólo debe emplearse este comando si dicho registro está vacío

    DIh

    Escribir el puerto de salida (ver cuadro 5). El siguiente byte que se envíe al registro de entrada (puerto 60h) se colocará en el puerto de salida.

    EOh

    Leer entradas de testeo. El 8042 coloca en el registro de salida los bits de reloj (bit 0 y datos (bit 1) para permitir la comunicación directa con el teclado

    Fxh

    Los bits 0 al 3 de este comando (la parte baja de este mismo comando) se relacionan con los bits 0 al 3 del puerto de salida del 8042; un 0 indica bit pulsado durante 6 microsegundos (apróx.) y un 1 que el bit no resulta modificado; ¡cuidado con el reset

    Tabla 4: Comandos del 8042

    BIT

    SIGNIFICADO

    0

    Activar la interrupción del registro de salida lleno: un 1 indica que el 8042 genere una IRQ1 (INT 9) tras colocar un dato en el registro de salida (esto es lo normal).

    1

    Reservado (escribir 0)

    2

    Banderín del sistema. Este bit define el bit 2 del registro de estado

    3

    Ignorar inhibición: con 1 se ignorará la función de inhibir el teclado

    4

    Deshabilitar el teclado: un 1 baja la línea de reloj inhibiendo la comunicación del 8042 con el teclado.

    5

    Modo IBM PC. Con 1 no se traducen los códigos del teclado ni se controla la paridad.

    6

    IBM PC compatibilidad. Un 1 selecciona la conversión de los códigos del teclado para emular los del PC y XT, traduciendo los códigos de rastreo y generando un único byte al soltar las teclas. Puesto a 1 por la BIOS antes de cargar el DOS (compatibilidad).

    7

    Reservado (escribir 0)

    Tabla 5: Bit de comandos del 8042

    BIT

    SIGNIFICADO

    BIT

    SIGNIFICADO

    0-3

    Indefinidos

    0

    Reset del sistema (como Ctrl-Alt-Del).

    4

    RAM del sistema. A 1 si instalada la extensión de 256 Kb

    1

    Línea A20: 0 fuerza la línea A20 de la CPU a 0, con lo que se prohíbe acceder a la memoria por encima de 1 Mb lo cual emula el direccionamiento de los PC/XT; un 1 deja que A20 la controle la CPU aunque hay PC's en que esto no basta.

    5

    A 0 si presente el puente (o jumper) del fabricante.

    2-3

    Indefinidos.

    6

    Tipo de pantalla. 0 si la pantalla principal es de color y 1 si es monocroma

    4

    Registro de salida lleno.

    7

    0: el teclado ha sido bloqueado con la llave externa de la unidad central.

    5

    Registro de entrada vacío.

    Tabla 6: Byte recibido por el puerto de entrada.

    7

    Línea de datos (comunicación directa con el teclado).

    Tabla 7: Byte a enviar al puerto de salida.

    • No operación (0F7h a 0FDh y 0EFh al 0F2h): Son códigos reservados; el teclado al recibirlos envía la señal de reconocimiento de siempre y no realiza ninguna acción.

    • Eco (0EEh): Si el teclado recibe este comando, lo reenvía a continuación. Es una ayuda al diagnóstico.

    • Encender/apagar los LED (0EDh). Tras este comando se ha de enviar otro byte de datos, cuyos bits 0, 1 y 2 están ligados al estado de los LED de Scroll Lock, Num Lock y Caps Lock, respectivamente; los demás están reservados. Al recibir el comando envía la correspondiente señal de reconocimiento y deja de rastrear las teclas, esperando por el dato. Si en vez de un dato recibe otro comando, dejará intactos los LED, procesará dicho comando y continuará rastreando las teclas (sin quedar inhibido en esta ocasión).

    En general, este será el procedimiento a seguir para cualquier comando que requiera parámetros: hay que esperar el momento adecuado para enviarlos; el LOOPNZ evita que la CPU se quede colgada si por cualquier motivo fallara el teclado o el 8042.

    Como se ve, se establecen los 3 LED a la vez, aunque si sólo se desea cambiar uno habrá que consultar el estado actual de los otros en las variables de la BIOS. No obstante, este cambio es sólo puntual ya que al pulsar las teclas que actúan sobre los LED, la BIOS o el KEYB los reajustarán anulando el cambio, siendo necesario reprogramar parcialmente la interrupción del teclado si se desea evitarlo.

    10. COMUNICACIÓN DEL TECLADO CON LA CPU.

    Más bien cabría llamarla la comunicación “teclado con el 8042”: aunque muchos de estos códigos acaben siendo interpretados por la CPU, algunos se los queda el 8042 que siempre es el primero en enterarse. A continuación se listan los valores que el teclado puede enviar a la CPU o al 8042 en un momento dado.

    • Reenvío (0FEh): El teclado puede enviar este comando a la CPU para solicitar el reenvío cuando detecta un fallo en la recepción (normalmente de paridad) o una entrada incorrecta.

    • Reconocimiento ó ACK (0FAh): El teclado devuelve este valor cada vez que la CPU le envía algo, para indicar que lo ha recibido (excepto en el caso de los comandos Eco y Reenvío de la CPU).

    • Desbordamiento (0): Cuando la CPU intenta leer el teclado directamente sin haber códigos en el buffer del teclado (el buffer interno del propio teclado, se entiende) accederá a la posición 17ª del mismo, encontrándose este valor.

    • Fallo en el diagnóstico (0FDh): El teclado periódicamente se auto chequea y envía este código si detecta algún fallo. Si el fallo sucede durante el BAT, dejará de rastrear las teclas en espera de un comando de la CPU; en cualquier otro momento continuará rastreando las teclas.

    • Código de tecla soltada ó break code (0F0h): El teclado envía este código a la CPU para indicar que el siguiente código que enviará a continuación corresponderá a una tecla soltada. Bajo MS-DOS este código lo intercepta el 8042 y se lo oculta a la CPU, con objeto de emular el código de tecla soltada de los PC/XT.

    • BAT completado (0AAh): Después de realizar el BAT el teclado envía un 0AAh para indicar que ha salido bien, o un 0FCh (u otro valor) si ha habido fallos.

    • Respuesta al eco (0EEh): El teclado envía este valor a la CPU si ésta se lo ha enviado a él.

    11. BUFFER DEL TECLADO.

    Cuando se pulsa una tecla normal, la rutina que gestiona INT 9 deposita en un buffer dos bytes con su código ASCII y el código de rastreo, para cuando el programa principal decida explorar el teclado -lo hará siempre consultando el buffer-. Si el código ASCII depositado es cero ó 0E0h, se trata de una tecla especial (ALT-x, cursor, etc.) y el segundo byte indica cuál (son los denominados códigos secundarios). El código ASCII 0E0h sólo es generado en los teclados expandidos por las teclas expandidas, aunque las funciones estándar de la BIOS y del DOS que informan del teclado lo convierten en cero para compatibilizar con teclados no expandidos. Así mismo, el código ASCII 0F0h está reservado para indicar las combinaciones de ALT-tecla que no fueron consideradas inicialmente en el software de soporte de los teclados no expandidos, pero sí actualmente (de esta manera, las rutinas de la BIOS saben si deben informar de estas teclas o no según se esté empleando una función avanzada u obsoleta, para compatibilizar). En todo caso, las secuencias introducidas por medio de ALT-teclado numérico llevan asociado un código de rastreo 0, por lo que el usuario puede generar los caracteres ASCII 0E0h y 0F0h sin que se confundan con combinaciones especiales; además, según IBM, si el código ASCII 0 va acompañado de un código de rastreo 3 los programas deberían interpretarlo como un auténtico código ASCII 0 (esta secuencia se obtiene con Ctrl-2) lo que permite recuperar ese código perdido en indicar combinaciones especiales.

    Es importante señalar que aunque el buffer (organizado como cola circular) normalmente está situado entre 0040h:001Eh y 0040h:003Eh, ello no siempre es así; realmente el offset del inicio y el fin del buffer respecto al segmento 0040h lo determinan las variables (tamaño palabra) situadas en 0040h:0080h y 0040h:0082h en todos los ordenadores posteriores a 1981. Por ello, la inmensa mayoría de las pequeñas utilidades de las revistas y los ejemplos de los libros son, por desgracia, incorrectos: la manera correcta de colocar un valor en el buffer -para simular, por ejemplo, la pulsación de una tecla- o extraerlo del mismo es comprobando adecuadamente los desbordamientos de los punteros teniendo en cuenta las variables mencionadas. El puntero al inicio del buffer es una variable tamaño palabra almacenada en la posición 0040h: 001Ah y el fin otra ubicada en 0040h: 001Ch. El siguiente ejemplo introduce un carácter de código ASCII AL y código de rastreo AH (es cómodo y válido hacer AH=0) en el buffer del teclado.

    El valor 0 para el código de rastreo es usado para introducir también algunos caracteres especiales, como las vocales acentuadas, etc., aunque por lo general no es demasiado importante su valor (de hecho, los programas suelen comprobar preferentemente el código ASCII; de lo contrario, en un teclado español y otro francés, ¡la tecla Z tendría distinto código!). No estaría de más en este ejemplo comprobar si las variables 40h:80h y 40h:82h son distintas de cero por si el ordenador es demasiado antiguo, medida de seguridad que de hecho toma el KEYB del DR-DOS (en estas máquinas además no es conveniente ampliar el tamaño del buffer cambiándolo de sitio, por ejemplo; lo normal es que esté entre 40h:1Eh y 40h:3Eh). Los códigos secundarios: son el segundo byte (el más significativo) de la palabra depositada en el buffer del teclado por la BIOS o el KEYB.

    MOV

    BX,40h

    meter carácter AX en el buffer del teclado

    MOV

    DS,BX

    CLI

    evitar conflictos con interrupciones

    MOV

    BX,DS:[1Ch]

    puntero a la cola del buffer

    MOV

    CX,BX

    ADD

    CX,2

    apuntar CX al siguiente dato

    CMP

    CX,DS:[82h]

    más allá del fin del buffer

    JB

    no desb

    MOV

    CX,DS:[80h]

    inicio de la cola circular no desb

    CMP

    CX,DS:[1Ah]

    puntero al inicio del buffer

    JE

    Fin de la rutina

    ZF = 1 --> buffer lleno

    MOV

    DS:[BX],AX

    introducir carácter ASCII (AL) en el buffer

    MOV

    DS:[1Ch],CX

    actualizar puntero al final del buffer

    CMP

    SP,0

    ZF=0 (SP siempre <> 0) --> buffer no lleno fin de la rutina: STI

    Tabla 8. Códigos de rastreo.

    ANEXOS

    1. TABLA DE CODIGOS SCAN

    Ubicación de Tecla

    Teclados MF-II

    Código Scan 1 make

    Código Scan 1 break

    Código Scan 2 make

    Codigo Scan 2 brake

    DO NOT USE

    00

    80

    00

    F0 00

    DO NOT USE

    E0_00

    E0_80

    E0_00

    E0_F0 00

    1

    ~ `

    29

    A9

    0E

    F0 0E

    E0_29

    E0_A9

    E0_0E

    E0_F0 0E

    2

    ! 1

    02

    82

    16

    F0 16

    E0_02

    E0_82

    E0_16

    E0_F0 16

    3

    @ 2

    03

    83

    1E

    F0 1E

    E0_03

    E0_83

    E0_1E

    E0_F0 1E

    4

    # 3

    04

    84

    26

    F0 26

    E0_04

    E0_84

    E0_26

    E0_F0 26

    5

    $ 4

    05

    85

    25

    F0 25

    E0_05

    E0_85

    E0_25

    E0_F0 25

    6

    % 5

    06

    86

    2E

    F0 2E

    E0_06

    E0_86

    E0_2E

    E0_F0 2E

    7

    ^ 6

    07

    87

    36

    F0 36

    E0_07

    E0_87

    E0_36

    E0_F0 36

    8

    & 7

    08

    88

    3D

    F0 3D

    E0_08

    E0_88

    E0_3D

    E0_F0 3D

    9

    * 8

    09

    89

    3E

    F0 3E

    E0_09

    E0_89

    E0_3E

    E0_F0 3E

    10

    ( 9

    0A

    8A

    46

    F0 46

    E0_0A

    E0_8A

    E0_46

    E0_F0 46

    11

    ) 0

    0B

    8B

    45

    F0 45

    E0_0B

    E0_8B

    E0_45

    E0_F0 45

    12

    _ -

    0C

    8C

    4E

    F0 4E

    E0_0C

    E0_8C

    E0_4E

    E0_F0 4E

    13

    + =

    0D

    8D

    55

    F0 55

    E0_0D

    E0_8D

    E0_55

    E0_F0 55

    15

    Backspace

    0E

    8E

    66

    F0 66

    E0_0E

    E0_8E

    E0_66

    E0_F0 66

    16

    Tab

    0F

    8F

    0D

    F0 0D

    E0_0F

    E0_8F

    E0_0D

    E0_F0 0D

    17

    Q

    10

    90

    15

    F0 15

    E0_10

    E0_90

    E0_15

    E0_F0 15

    18

    W

    11

    91

    1D

    F0 1D

    E0_11

    E0_91

    E0_1D

    E0_F0 1D

    19

    E

    12

    92

    24

    F0 24

    E0_12

    E0_92

    E0_24

    E0_F0 24

    20

    R

    13

    93

    2D

    F0 2D

    E0_13

    E0_93

    E0_2D

    E0_F0 2D

    21

    T

    14

    94

    2C

    F0 2C

    E0_14

    E0_94

    E0_2C

    E0_F0 2C

    22

    Y

    15

    95

    35

    F0 35

    E0_15

    E0_95

    E0_35

    E0_F0 35

    23

    U

    16

    96

    3C

    F0 3C

    E0_16

    E0_96

    E0_3C

    E0_F0 3C

    24

    I

    17

    97

    43

    F0 43

    E0_17

    E0_97

    E0_43

    E0_F0 43

    25

    O

    18

    98

    44

    F0 44

    E0_18

    E0_98

    E0_44

    E0_F0 44

    26

    P

    19

    99

    4D

    F0 4D

    E0_19

    E0_99

    E0_4D

    E0_F0 4D

    27

    { [

    1A

    9A

    54

    F0 54

    E0_1A

    E0_9A

    E0_54

    E0_F0 54

    28

    } ]

    1B

    9B

    5B

    F0 5B

    E0_1B

    E0_9B

    E0_5B

    E0_F0 5B

    29*

    | \

    2B

    AB

    5D

    F0 5D

    E0_2B

    E0_AB

    E0_5D

    E0_F0 5D

    30

    Caps Lock

    3A

    BA

    58

    F0 58

    E0_3A

    E0_BA

    E0_58

    E0_F0 58

    31

    A

    1E

    9E

    1C

    F0 1C

    E0_1E

    E0_9E

    E0_1C

    E0_F0 1C

    32

    S

    1F

    9F

    1B

    F0 1B

    E0_1F

    E0_9F

    E0_1B

    E0_F0 1B

    33

    D

    20

    A0

    23

    F0 23

    E0_20

    E0_A0

    E0_23

    E0_F0 23

    34

    F

    21

    A1

    2B

    F0 2B

    E0_21

    E0_A1

    E0_2B

    E0_F0 2B

    35

    G

    22

    A2

    34

    F0 34

    E0_22

    E0_A2

    E0_34

    E0_F0 34

    36

    H

    23

    A3

    33

    F0 33

    E0_23

    E0_A3

    E0_33

    E0_F0 33

    37

    J

    24

    A4

    3B

    F0 3B

    E0_24

    E0_A4

    E0_3B

    E0_F0 3B

    38

    K

    25

    A5

    42

    F0 42

    E0_25

    E0_A5

    E0_42

    E0_F0 42

    39

    L

    26

    A6

    4B

    F0 4B

    E0_26

    E0_A6

    E0_4B

    E0_F0 4B

    40

    : ;

    27

    A7

    4C

    F0 4C

    E0_27

    E0_A7

    E0_4C

    E0_F0 4C

    41

    “ `

    28

    A8

    52

    F0 52

    E0_28

    E0_A8

    E0_52

    E0_F0 52

    42**

    2B

    AB

    5D

    F0 5D

    E0_2B

    E0_AB

    E0_5D

    E0_F0 5D

    43

    Enter

    1C

    9C

    5A

    F0 5A

    44

    L SHIFT

    2A

    AA

    12

    F0 12

    E0_2A

    E0_AA

    E0_12

    E0_F0 12

    45**

    56

    D6

    61

    F0 61

    E0_56

    E0_D6

    E0_61

    E0_F0 61

    46

    Z

    2C

    AC

    1A

    F0 1A

    E0_2C

    E0_AC

    E0_1A

    E0_F0 1A

    47

    X

    2D

    AD

    22

    F0 22

    E0_2D

    E0_AD

    E0_22

    E0_F0 22

    48

    C

    2E

    AE

    21

    F0 21

    E0_2E

    E0_AE

    E0_21

    E0_F0 21

    49

    V

    2F

    AF

    2A

    F0 2A

    E0_2F

    E0_AF

    E0_2A

    E0_F0 2A

    50

    B

    30

    B0

    32

    F0 32

    E0_30

    E0_B0

    E0_32

    E0_F0 32

    51

    N

    31

    B1

    31

    F0 31

    E0_31

    E0_B1

    E0_31

    E0_F0 31

    52

    M

    32

    B2

    3A

    F0 3A

    E0_32

    E0_B2

    E0_3A

    E0_F0 3A

    53

    < ,

    33

    B3

    41

    F0 41

    E0_33

    E0_B3

    E0_41

    E0_F0 41

    54

    > .

    34

    B4

    49

    F0 49

    E0_34

    E0_B4

    E0_49

    E0_F0 49

    55

    ? /

    35

    B5

    4A

    F0 4A

    E0_35

    E0_B5

    E0_4A

    E0_F0 4A

    56***

    73

    F3

    51

    F0 51

    E0_73

    E0_F3

    E0_51

    E0_F0 51

    57

    R SHIFT

    36

    B6

    59

    F0 59

    E0_36

    E0_B6

    E0_59

    E0_F0 59

    58

    L CTRL

    1D

    9D

    14

    F0 14

    60

    L ALT

    38

    B8

    11

    F0 11

    E0_38

    E0_B8

    E0_11

    E0_F0 11

    61

    Space Bar

    39

    B9

    29

    F0 29

    E0_39

    E0_B9

    E0_29

    E0_F0 29

    62

    R ALT

    E0 38

    E0 B8

    E0 11

    E0 F0 11

    64

    R CTRL

    E0 1D

    E0 9D

    E0 14

    E0 F0 14

    75

    Insert

    Note 1

    Note 1

    Note 2

    Note 2

    76

    Delete

    Note 1

    Note 1

    Note 2

    Note 2

    79

    L Arrow

    Note 1

    Note 1

    Note 2

    Note 2

    80

    Home

    Note 1

    Note 1

    Note 2

    Note 2

    81

    End

    Note 1

    Note 1

    Note 2

    Note 2

    83

    Up Arrow

    Note 1

    Note 1

    Note 2

    Note 2

    84

    Dn Arrow

    Note 1

    Note 1

    Note 2

    Note 2

    85

    Page Up

    Note 1

    Note 1

    Note 2

    Note 2

    86

    Page Down

    Note 1

    Note 1

    Note 2

    Note 2

    89

    R Arrow

    Note 1

    Note 1

    Note 2

    Note 2

    90

    Num Lock

    45

    C5

    77

    F0 77

    E0_45

    E0_C5

    E0_77

    E0_F0 77

    91

    Numeric 7

    47

    C7

    6C

    F0 6C

    92

    Numeric 4

    4B

    CB

    6B

    F0 6B

    93

    Numeric 1

    4F

    CF

    69

    F0 69

    95

    Numeric /

    Note 3

    Note 3

    Note 3

    Note 3

    96

    Numeric 8

    48

    C8

    75

    F0 75

    97

    Numeric 5

    4C

    CC

    73

    F0 73

    98

    Numeric 2

    50

    D0

    72

    F0 72

    99

    Numeric 0

    52

    D2

    70

    F0 70

    100

    Numeric *

    37

    B7

    7C

    F0 7C

    E0_37

    E0_B7

    E0_7C

    E0_F0 7C

    101

    Numeric 9

    49

    C9

    7D

    F0 7D

    102

    Numeric 6

    4D

    CD

    74

    F0 74

    103

    Numeric 3

    51

    D1

    7A

    F0 7A

    104

    Numeric .

    53

    D3

    71

    F0 71

    105

    Numeric -

    4A

    CA

    7B

    F0 7B

    106

    Numeric +

    4E

    CE

    79

    F0 79

    107***

    7E

    FE

    6D

    F0 6D

    DO NOT USE

    E0_7E

    E0_FE

    E0_6D

    E0_F0 6D

    108

    Numeric Enter

    E0 1C

    E0 9C

    E0 5A

    E0 F0 5A

    110

    Esc

    01

    81

    76

    F0 76

    E0_01

    E0_81

    E0_76

    E0_F0 76

    112

    F1

    3B

    BB

    05

    F0 05

    E0_3B

    E0_BB

    E0_05

    E0_F0 05

    113

    F2

    3C

    BC

    06

    F0 06

    E0_3C

    E0_BC

    E0_06

    E0_F0 06

    114

    F3

    3D

    BD

    04

    F0 05

    E0_3D

    E0_BD

    E0_04

    E0_F0 05

    115

    F4

    3E

    BE

    0C

    F0 0C

    E0_3E

    E0_BE

    E0_0C

    E0_F0 0C

    116

    F5

    3F

    BF

    03

    F0 03

    E0_3F

    E0_BF

    E0_03

    E0_F0 03

    117

    F6

    40

    C0

    0B

    F0 0B

    E0_40

    E0_C0

    E0_0B

    E0_F0 0B

    118

    F7

    41

    C1

    83

    F0 83

    E0_41

    E0_C1

    E0_83

    E0_F0 83

    119

    F8

    42

    C2

    0A

    F0 0A

    E0_42

    E0_C2

    E0_0A

    E0_F0 0A

    120

    F9

    43

    C3

    01

    F0 01

    E0_43

    E0_C3

    E0_01

    E0_F0 01

    121

    F10

    44

    C4

    09

    F0 09

    E0_44

    E0_C4

    E0_09

    E0_F0 09

    122

    F11

    57

    D7

    78

    F0 78

    123

    F12

    58

    D8

    07

    F0 07

    124

    Print Screen

    Note 4

    Note 4

    Note 4

    Note 4

    125

    Scroll Lock

    46

    C6

    7E

    F0 7E

    E0_46

    E0_C6

    E0_7E

    E0_F0 7E

    126

    Pause

    Note 5

    Note 5

    Note 5

    Note 5

    59

    D9

    0F

    F0 0F

    E0_59

    E0_D9

    E0_0F

    E0_F0 0F

    5B

    DB

    1F

    F0 1F

    Left Win

    E0_5B

    E0_DB

    E0_1F

    E0_F0 1F

    5C

    DC

    27

    F0 27

    Right Win

    E0_5C

    E0_DC

    E0_27

    E0_F0 27

    5D

    DD

    2F

    F0 2F

    Application

    E0_5D

    E0_DD

    E0_2F

    E0_F0 2F

    5E

    DE

    37

    F0 37

    ACPI Power

    E0_5E

    E0_DE

    E0_37

    E0_F0 37

    5F

    DF

    3F

    F0 3F

    ACPI Sleep

    E0_5F

    E0_DF

    E0_3F

    E0_F0 3F

    DO NOT USE

    60

    E0

    47

    F0 47

    DO NOT USE

    E0_60

    E0_E0

    E0_47

    E0_F0 47

    DO NOT USE

    61

    E1

    4F

    F0 4F

    DO NOT USE

    E0_61

    E0_E1

    E0_4F

    E0_F0 4F

    62

    E2

    56

    F0 56

    E0_62

    E0_E2

    E0_56

    E0_F0 56

    63

    E3

    5E

    F0 5E

    ACPI Wake

    E0_63

    E0_E3

    E0_5E

    E0_F0 5E

    64

    E4

    08

    F0 08

    E0_64

    E0_E4

    E0_08

    E0_F0 08

    65

    E5

    10

    F0 10

    E0_65

    E0_E5

    E0_10

    E0_F0 10

    66

    E6

    18

    F0 18

    E0_66

    E0_E6

    E0_18

    E0_F0 18

    67

    E7

    20

    F0 20

    E0_67

    E0_E7

    E0_20

    E0_F0 20

    68

    E8

    28

    F0 28

    E0_68

    E0_E8

    E0_28

    E0_F0 28

    69

    E9

    30

    F0 30

    E0_69

    E0_E9

    E0_30

    E0_F0 30

    6A

    EA

    38

    F0 38

    E0_6A

    E0_EA

    E0_38

    E0_F0 38

    6B

    EB

    40

    F0 40

    E0_6B

    E0_EB

    E0_40

    E0_F0 40

    6C

    EC

    48

    F0 48

    E0_6C

    E0_EC

    E0_48

    E0_F0 48

    6D

    ED

    50

    F0 50

    E0_6D

    E0_ED

    E0_50

    E0_F0 50

    6E

    EE

    57

    F0 57

    E0_6E

    E0_EE

    E0_57

    E0_F0 57

    6F

    EF

    6F

    F0 6F

    E0_6F

    E0_EF

    E0_6F

    E0_F0 6F

    DBE_KATAKANA‡

    70

    F0

    13

    F0 13

    E0_70

    E0_F0

    E0_13

    E0_F0 13

    71

    F1

    19

    F0 19

    E0_71

    E0_F1

    E0_19

    E0_F0 19

    72

    F2

    39

    F0 39

    E0_72

    E0_F2

    E0_39

    E0_F0 39

    74

    F4

    53

    F0 53

    E0_74

    E0_F4

    E0_53

    E0_F0 53

    75

    F5

    5C

    F0 5C

    E0_75

    E0_F5

    E0_5C

    E0_F0 5C

    76

    F6

    5F

    F0 5F

    E0_76

    E0_F6

    E0_5F

    E0_F0 5F

    DBE_SBCSCHAR‡

    77

    F7

    62

    F0 62

    E0_77

    E0_F7

    E0_62

    E0_F0 62

    78

    F8

    63

    F0 63

    E0_78

    E0_F8

    E0_63

    E0_F0 63

    CONVERT‡

    79

    F9

    64

    F0 64

    E0_79

    E0_F9

    E0_64

    E0_F0 64

    DO NOT USE

    7A

    FA

    65

    F0 65

    DO NOT USE

    E0_7A

    E0_FA

    E0_65

    E0_F0 65

    NONCONVERT‡

    7B

    FB

    67

    F0 67

    DO NOT USE

    E0_7B

    E0_FB

    E0_67

    E0_F0 67

    DO NOT USE

    7C

    FC

    68

    F0 68

    DO NOT USE

    E0_7C

    E0_FC

    E0_68

    E0_F0 68

    DO NOT USE

    7D

    FD

    6A

    F0 6A

    DO NOT USE

    E0_7D

    E0_FD

    E0_6A

    E0_F0 6A

    DO NOT USE

    7F

    FF

    6E

    F0 6E

    DO NOT USE

    E0_7F

    E0_FF

    E0_6E

    E0_F0 6E

    BIBLIOGRAFIA.

    • http://atc.ugr.es/docencia/udigital/

    • http://www.saludmed.com/Educ-Web/TecnoEdu/Equipo-C.html

    • http://www.monografias.com/trabajos21/partes-computadora/partes-computadora.shtml

    • http://es.wikipedia.org/wiki/Teclado_de_computadora

    • http://lv.wikipedia.org/wiki/Intel_8042

    • http://www.beyondlogic.org/keyboard/keybrd.htm

    • http://www.trucoswindows.net/foro/topico-30061-placas-madres.html

    ORGANIZACIÓN Y ARQUITECTURA CPIIS

    DEL COMPUTADOR

    'Teclado'




    Descargar
    Enviado por:Hector Ugarte Rojas
    Idioma: castellano
    País: Perú

    Te va a interesar