Está en la página 1de 35

3. Teclados.

1. 2. 3. 4. Fundamentos fsicos. Estructura y funcionamiento del teclado. Controlador de teclado. Ejemplo de aplicacin.

3. Teclados.

Perifricos e Interfaces , 3 ITIS

3.1. Fundamentos fsicos.


Funcionamiento bsico de un teclado
Decod. Columnas

Circuito de Control

Decod. Filas

Tecla

3.1. Fundamentos fsicos.

Perifricos e Interfaces , 3 ITIS

Tipos de pulsadores.
Pulsador Contactos Pulsador Rel Reed

N S
Imn

Mecnico

De laminas(reed)

Pulsador

Pulsador

Contactos Contactos Oscilador Amplificador

Bobedilla
3.1. Fundamentos fsicos.

Capacitivo
Perifricos e Interfaces , 3 ITIS
3

Tipos de pulsadores.

Pulsador

Sonda detectora efecto Hall

Entrada

Salida

De efecto Hall

3.1. Fundamentos fsicos.

Perifricos e Interfaces , 3 ITIS

Perfil del teclado. Realimentacin fisiolgica.

Inclinado

D
Horizontal

Curvado

Sensacin: Tactil Soft-touch Sonora Click

3.1. Fundamentos fsicos.

Perifricos e Interfaces , 3 ITIS

Los conectores del teclado.


Conector tipo AT 5-pin DIN
1 4 2
Pin 1 2 3 4 5 Seal Reloj Datos Reset Masa Vcc (+5 )

Conector tipo PS/2 Miniature 6-pin DIN


5 3 6 4

3 5

Pin 1 2 3 4 5 6

Seal Datos N/C Masa + 5 Vcc Reloj N/C

3.1. Fundamentos fsicos.

Perifricos e Interfaces , 3 ITIS

Formatos de los teclados.

Teclado XT

Teclado AT (84 teclas)


3.1. Fundamentos fsicos. Perifricos e Interfaces , 3 ITIS

Formatos de los teclados.

Teclado Multifuncin MF-II (101 teclas)

3.1. Fundamentos fsicos.

Perifricos e Interfaces , 3 ITIS

Cdigos de exploracin (Scan Codes).

Pulsacin tecla Generacin cdigo Make Liberacin tecla Generacin cdigo Break

3.1. Fundamentos fsicos.

Perifricos e Interfaces , 3 ITIS

Teclas normales

Make/Break code (Press/Release code)

Teclas grises (MF-II) E0h y Alt-Gr Make/Break/ Special code Tecla PAUSE E1h
Perifricos e Interfaces , 3 ITIS

3.1. Fundamentos fsicos.

10

3.2. Estructura y funcionamiento de un teclado.


Pulsacin tecla Teclado 8742 0 1 Cod. Make Cod. Brake

Controlador de teclado (8042)

(60h - 64h)

BIOS Manejador/Driver del teclado


ASCII -Scan

Controlador de interrupciones (8259)

Buffer de teclado
BIOS (Int 16h) DOS (Int 21h)

CPU

Aplicacin

3.2. Estructura y funcionamiento de un teclado.

Perifricos e Interfaces , 3 ITIS

11

La interfaz del teclado.

Interfaz serie bidireccional (10 Kbits/seg)


KBD CLOCK KBD DATA Lneas bidireccionales (colector abierto)

Teclado
CLOCK DATA
Idle Idle START

PC

STOP

3.2. Estructura y funcionamiento de un teclado.

Perifricos e Interfaces , 3 ITIS

12

PC
CLOCK DATA
Idle

Teclado

Idle START

STOP

ACK

PC

Formato de los datos:


START = Bit de inicio DB0 ..7 = Bits de datos PAR = Bit de paridad impar STOP = Bit de Stop ACK = Bit de reconocimiento

3.2. Estructura y funcionamiento de un teclado.

Perifricos e Interfaces , 3 ITIS

13

3.3. El controlador del teclado.


Buffer Entrada

60h

8042/8742

Buffer Salida

60h

Puerto Salida

Registro Control

64h

Teclado
Puerto Entrada

Registro Estado

64h IRQ1

Ratn PS/2

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

14

El controlador del teclado: Registro de Estado.

Registro de Estado

OUTB: Estado del buffer de salida INPB: Estado del buffer de entrada SYSF: Indicador del sistema C/D: Comando o dato KEYL: Estado del teclado
AUXB: Datos de teclado o disp. auxiliar TIMOUT: Error de timeout PARE: Error de paridad

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

15

El controlador del teclado: Puertos de entrada/salida.


7 6 5 4 3 2 1 0

Puerto de Entrada
KBDI: Entrada de datos desde el teclado AUXD : Entrada de datos desde disp. aux. Reservado C/B: Monitor color/Monocromo KBLK: Bloqueo del teclado

7 6 5 4 3 2 1 0

Puerto de Salida
SYSR: Reset del procesador GA20 : Habilitar/deshabilitar A20 AXDO: Datos de salida del disp. aux. ACLK: Reloj del disp. auxiliar OUTB: Buffer de salida lleno AUXB: Buffer de salida del disp. aux. lleno KCLK: Reloj del teclado KBDO: Datos de salida para el teclado

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

16

Programacin del controlador del teclado.


INICIO INICIO

Leer registro de estado


NO Bit 0 = 0
Bit 0 = 1 ?

Leer registro de estado


SI
Bit 1 = 1 ?

SI Bit 0 = 1

Bit 1 = 1

NO Bit 1 = 0

Leer dato (Puerto 60h)


FIN

Escribir comando (Puerto 64h)


FIN Programacin del controlador
Perifricos e Interfaces , 3 ITIS
17

Acceso al buffer de salida


3.3. El controlador del teclado.

Programacin del controlador del teclado.

INICIO Leer registro de estado Escribir comando (Puerto 60h)

SI Bit 1 =1

NO

Leer registro de estado NO SI

Bit 0 = 1

Leer dato (puerto 60h) FIN

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

18

Programacin del controlador del teclado. Comandos dirigidos al controlador (8742).


Comando a7h a8h a9h Deshabilitar dispositivo auxiliar Habilitar dispositivo auxiliar Comprobar interfaz al dispositivo auxiliar Descripcin Deshabilita el dispositivo auxiliar Habilita el dispositivo auxiliar Comprueba el interfaz hacia el dispositivo auxiliar devolviendo su estado en el buffer de salida. (00h= no error, 01= linea del reloj baja, 02h= linea de reloj alta, 03h= linea de datos alta, 04h= linea de datos baja, ffh= no hay dispositivo auxiliar) El controlador del teclado ejecuta un auto test y escribe 55h en el buffer de salida si no se detecta ningn error.

aah

Auto-Test

abh

Comprobar interfaz de teclado Comprueba el interfaz hacia el teclado devolviendo su estado en el buffer de salida. (00h= no error, 01= linea del reloj baja, 02= linea de reloj alta, 03h= linea de datos alta, 04h= linea de datos baja, ffh= error general) Deshabilitar teclado Habilitar teclado Deshabilita el teclado. Habilita el teclado

adh aeh

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

19

Programacin del controlador del teclado. Comandos dirigidos al controlador (8742).


Comando c0h d0h d1h d2h Leer puerto de entrada Leer puerto de salida Escribir puerto de salida Escribir buffer de salida del teclado Escribir buffer de salida del dispositivo auxiliar Escribir en el dispositivo auxiliar Descripcin Lee el puerto de entrada y transfiere su contenido al buffer de salida Lee el puerto de salida y transfiere su contenido al buffer de salida Escribe el byte siguiente en el puerto de salida Escribe el byte siguiente en el puerto de salida y pone el bit AUXB del registro de estado a 0 Escribe el byte siguiente en el puerto de salida y pone el bit AUXB del registro de estado a 1 Manda el siguiente byte hacia el dispositivo auxiliar

d3h

d4h e0h

Leer y comprobar el puerto Lee el test del puerto de entrada y escribe t0 de entrada en el bit 0 y t1 en el bit 1 del buffer de salida

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

20

Programacin del controlador del teclado. Comandos dirigidos al procesador (8042).


Cdigo edh eeh f0h f2h f3h f4h f5h f6h feh ffh Comando Descripcin Encender/apagar LEDs Enciende o apaga los LEDs del teclado (A partir MFII) Eco Devuelve el byte eeh Seleccionar/identificar Selecciona un juego de cdigos de exploracin cdigos scan e identifica el actual juego de cdigos. Identificar el teclado Identifica el teclado (ACK=AT,ACK+abh+41h=MFII. Ajustar la tasa de Ajustar la tasa de repeticin/retardo del teclado. repeticin/retardo. Habilitar teclado Habilita el teclado. Deshabilitar/standar Selecciona los valores standar y deshabilita el teclado Habilitar/standar Selecciona los valores standar y habilita el teclado Reenviar Reenviar el ltimo carcter enviado al controlador del teclado. Reset Reinicializa el teclado internamente y ejecuta el BAT

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

21

Programacin del controlador del teclado. Comandos dirigidos al procesador (8042).


Ajustar el factor de repeticin del teclado (Cdigo f3h ) : Con este comando podremos ajustarel factor de repeticin del teclado y tambin el tiempo de espera hasta que comienzan las repeticiones. Despus de pasar el comando (f3h) el teclado responde con ACK y espera un byte de datos cuya estructura se puede apreciar en la figura X.
7 6 5 4 3 2 1 0

DEL 1

DEL 0

RAT 4

RAT 3

RAT 2

RAT 1

RAT 0

DEL1,DEL0 : Retardo en milisegundos 00 = 250 ms 01 = 500 ms 10 = 750 ms

11 = 1000 ms

RAT 4..0 : Tasa de repeticin en caracteres por segundo.


00000=30.0 00001=26.7 00010=24.0 00011=21.8 00100=20.0 00101=18.5 00110=17.1 00111=16.0 01000=15.0 01001=13.3 01010=12.0 01011=10.9 01100=10.0 10000=7.5 11000=3.7 10001=6.7 11001=3.3 10010=6.0 11010=3.0 10011=5.5 11011=2.7 10100=5.0 11100=2.5 01101=9.2 10101=4.6 11101=2.3 01110=8.5 10110=4.3 11110=2.1 01111=8.0 10111=4.0 11111=2.0

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

22

Programacin del controlador del teclado. Comandos dirigidos al procesador (8042).


Encender/apagar leds ( Cdigo edh ): Tras este comando, el teclado responde con ACK y espera que le mandemos la nueva disposicin de LEDS mediante un byte indicador a travs del buffer de entrada

Byte Indicador
7 6 5 4 3 2 1 0

CPLS

NUM L

SCRL

CPLS = Led para el bloqueo de mayusculas. NUML = Led para el bloqueo numrico. SCRL = Led para el bloqueo de desplazamiento.

Identificar el teclado(Cdigo f2h): Este comando identifica el tipo de teclado que el PC tiene conectado. Si el teclado conectado es un XT, no responder nunca y por tanto ocurrir un error de timeout. Un teclado AT retorna el cdigo ACK y un teclado MF-II retorna ACK seguido de dos bytes con valores abh, 41h.

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

23

Programacin del controlador del teclado. Comandos dirigidos al procesador (8042).

Cdigo 00h ffh 41abh aah eeh fah fch feh 1h-58h

Significado Error de desbordamiento Error de tecla Identificador del teclado MFII BAT completado Eco tras comando de eco ACK Reconocimiento Error en el BAT Peticin de reenvio Cdigos make-break de las teclas

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

24

Programacin del teclado:


BIOS del teclado: Rutina de interrupcin
40:3D 40:1A 40:1C 40:1E

32 bytes
LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE MAKE MAKE MAKE ASCII LIBRE LIBRE ASCII ASCII LIBRE

BUFFER TECLADO

PUNT

LIBRE

Teclas normales Teclas compuestas Teclas grises (MF-II) y Alt-Gr

ASCII Make code

00h Special code


E0h Make code/ Special code Perifricos e Interfaces , 3 ITIS

3.3. El controlador del teclado.

LIBRE

PUNT

ESCR

LECT

25

PUNT PUNT LECT PUNT ESCR LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE ASCII MAKE ASCII MAKE ASCII MAKE ASCII MAKE ASCII LIBRE LIBRE LIBRE LIBRE LIBRE MAKE ASCII MAKE ASCII MAKE MAKE ASCII MAKE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE

PUNT

40:1A 40:1C 40:1E

LECT PUNT ESCR LIBRE ASCII MAKE ASCII MAKE ASCII MAKE LIBRE LIBRE ASCII MAKE ASCII LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE LIBRE ESCR PUNT

Programacin del teclado:

3.3. El controlador del teclado.


LECT

32 bytes
40:3D

P_LECT < P_ESC ESTADO NORMAL

P_LECT = P_ESC BUFFER VACIO

Perifricos e Interfaces , 3 ITIS


26

P_LECT +1 = P_ESC BUFFER LLENO

Variables de la BIOS para gestin del teclado.

Direccin = 40:17

Tecla < Shift > izquierda pulsada Tecla < Shift > derecha pulsada Tecla < Ctrl > pulsada Tecal < Alt > pulsada Bloq Despl. (Scroll) activo
Bloq. Num. activo Bloq Mays activo Modo insercin activo

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

27

Variables de la BIOS para gestin del teclado.

Direccin = 40:18

Tecla < Ctrl > izquierda pulsada Tecla < ALT > izquierda pulsada Tecla < SysReq > pulsada Modo pausa activo Tecla < Bloq Despl. (Scroll) > pulsada
Tecla < Bloq. Num. > pulsada Tecla < Bloq Mays > pulsada Tecla < Insert > pulsada

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

28

Funciones del DOS para acceso al teclado (Int 21h).


FUNCION 01h: Entrada de caracteres con eco

Esta funcin lee un carcter del buffer de teclado de la BIOS y visualiza el carcter por medio del dispositivo de salida estndar.
Entrada: Salida: AH = 01h AL = Cdigo Ascii / 00h / Cdigo de exploracin

FUNCIN 06h: Entrada de caracteres desde el dispositivo de entrada estndar Con esta funcin se pueden enviar un carcter a la salida estndar o recibir un carcter desde la entrada estndar

Entrada:

AH = 06h DL = ffh Leer un carcter. 00h feh Enviar este caracter Salida: Durante la salida de caracteres no hay datos de salida. AL = Cdigo asccii / 00h / Cdigo de exploracin Indicador de cero = 1 carcter ledo 0 carcter no disponible
3.3. El controlador del teclado. Perifricos e Interfaces , 3 ITIS
29

Funciones del DOS para acceso al teclado (Int 21h).


FUNCIN 07h: Entrada de caracteres directa, sin salida Esta funcin intenta leer un carcter desde el buffer de teclado de la BIOS y espera hasta que haya un carcter disponible. Una vez ledo el cdigo no es enviado a la salida estndar. Entrada: Salida: AH = 07h AL = Carcter ledo

FUNCIN 08h: Entrada de caracteres con chequeo. No hay salida Esta funcin es similar a la funcin 07h con una diferencia. El carcter es chequeado por el sistema operativo y si detecta un Control-C se llama a la interrupcin 23h.

3.3. El controlador del teclado.

Perifricos e Interfaces , 3 ITIS

30

Funciones de la BIOS para acceso al teclado (Int 13h).


FUNCIN 4fh: Acceso al teclado Esta funcin es llamada por la rutina de servicio de la interrupcin 09h cada vez que se pulsa una tecla. Retorna el cdigo de exploracin de la tecla pulsada en AL. Entrada: AH = 4fh Salida: AL = cdigo de exploracin Indicador de acarreo = 0/1. FUNCIN 85h: Acceso al teclado El manejador de la interrupcin de teclado llama a esta funcin al pulsar o liberar la combinacin de teclas [Alt] + [SysReq] en un teclado MF-II.. Entrada: AH = 85h AL = 00h si se ha pulsado [SysReq] = 01h si se ha liberado [SysReq] Salida : AH = 00h Indicador de acarreo = 0 3.3. El controlador del teclado. Perifricos e Interfaces , 3 ITIS
31

Funciones de la BIOS para acceso al teclado (Int 16h).


FUNCIN 00h: Leer prximo carcter
Esta funcin lee el carcter del buffer de teclado apuntado por el puntero de lectura y actualiza dicho puntero. Si el teclado esta vaco la funcin espera hasta que se introduzca un nuevo carcter.

Entrada: AH = 00h Salida : AL = Cdigo ASCII de la tecla/Cero(Si es un carcter especial) AH = Cdigo de exploracin de la tecla FUNCIN 01h: Hay caracteres en el buffer de teclado?
Esta funcin determina si hay algn carcter en el buffer de teclado. En caso afirmativo entrega el carcter a la funcin invocadora, pero no actualiza el buffer puntero de lectura,

Entrada: AH = 01h Salida : Indicador de cero = 0 : No hay caracteres en el buffer de teclado Indicador de cero = 1 : Hay un carcter disponible AL = Cdigo ASCII / Cero AH = Cdigo de exploracin de la tecla 3.3. El controlador del teclado. Perifricos e Interfaces , 3 ITIS

32

Funciones de la BIOS para acceso al teclado (Int 16h).


FUNCIN 02h: Lee el primer byte de estado de las teclas de cambio del teclado Esta funcin accede a la posicin 40:17 del rea de datos de la BIOS, retornando el byte all almacenado en el registro AL. La estructura de dicho byte se muestra en la figura X. Entrada: AH = 02h Salida : AL = Byte de estado FUNCIN 03h: Ajustar el factor de repeticin de las teclas Esta funcin modifica la frecuencia de repeticin de las teclas, as como el tiempo que hay que tener pulsada la tecla para que comiencen las repeticiones, en teclados AT y MF-II. Entrada: AH = 03h BH = Retardo hasta que ocurre la repeticin BL = Factor o frecuencia de repeticin Salida : No tiene 3.3. El controlador del teclado. Perifricos e Interfaces , 3 ITIS

33

Funciones de la BIOS para acceso al teclado (Int 16h).


FUNCIN 05h: Simula la pulsacin de una tecla
Esta funcin escribe un cdigo ASCII y su correspondiente cdigo de exploracin en el buffer de teclado. Actualiza el puntero de escritura.

Entrada: AH = 05h CH = Cdigo de exploracin de la tecla CL = Cdigo ASCII de la tecla Salida : AL = 00h No hay error AL = 01h Buffer de teclado lleno, no se puede aadir el carcter
FUNCIN 10h: Lee un carcter del teclado extendido
Esta funcin lee un carcter desde el teclado extendido MF-II. La funcin es similar a la 00h, pero soporta los nuevos cdigos de las teclas de funcin [F11],[F12] y las nuevas teclas de cursor, cuyos cdigos de exploracin van precedidos del cdigo e0h.

Entrada: AH = 10h Salida : AH = Cdigo de exploracin de la tecla AL = Cdigo ASCII / 0 / e0h 3.3. El controlador del teclado. Perifricos e Interfaces , 3 ITIS

34

Funciones de la BIOS para acceso al teclado (Int 16h).


FUNCIN 11h: Determina el estado del buffer de teclado en un teclado MF-II
Esta funcin es similar a la 01h, pero soporta los cdigos del teclado ampliado. Cuando se el carcter corresponde a una de las teclas ampliadas se retorna e0h para diferenciarlas del resto.

Entrada: AH = 11h Salida : Indicador de cero = 0 : No hay caracteres en el buffer Indicador de cero = 1 : Hay un carcter disponible AL = Cdigo ASCII / Cero / e0h AH = Cdigo de exploracin de la tecla
FUNCIN 12h: Lee los bytes de estado asociados a las teclas < SIFHT >
Esta funcin accede las posiciones 40:17 y 40:18 para leer los dos bytes de estado asociados a las teclas de cambio. Es similar a la funcin 02h, pero esta permite leer tambin informacin relacionada con el teclado ampliado.

Entrada: AH = 12h Salida : AH = Segundo byte de estado AL = Primer byte de estado 3.3. El controlador del teclado. Perifricos e Interfaces , 3 ITIS
35

También podría gustarte