You are on page 1of 35

Perifricos e Interfaces , 3 ITIS

1
3. Teclados.
3. Teclados.
1. Fundamentos fsicos.
2. Estructura y funcionamiento del teclado.
3. Controlador de teclado.
4. Ejemplo de aplicacin.
Perifricos e Interfaces , 3 ITIS
2
3.1. Fundamentos fsicos.
3.1. Fundamentos fsicos.
Funcionamiento bsico de un teclado
Decod. Columnas
Circuito
de
Control
D
e
c
o
d
.

F
i
l
a
s
Tecla
Perifricos e Interfaces , 3 ITIS
3
Tipos de pulsadores.
De laminas(reed)
Rel
Reed
Imn
Pulsador
N
S
Mecnico
Contactos
Pulsador
Bobedilla
Contactos
Pulsador
Capacitivo
Oscilador
Contactos
Pulsador
Amplificador
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
4
Tipos de pulsadores.
De efecto Hall
Salida Entrada
Pulsador
Sonda detectora
efecto Hall
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
5
Perfil del teclado. Realimentacin fisiolgica.
Inclinado
Horizontal
Curvado
F
D
Sensacin:
Tactil
Soft-touch
Sonora
Click
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
6
Los conectores del teclado.
1 3
2
4 5
Pin Seal
1 Reloj
2 Datos
3 Reset
4 Masa
5 Vcc (+5 )

Conector tipo AT
5-pin DIN
1
3
2
4
5 6
Conector tipo PS/2
Miniature 6-pin DIN
Pin Seal
1 Datos
2 N/C
3 Masa
4 + 5 Vcc
5 Reloj
6 N/C
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
7
Formatos de los teclados.
Teclado XT
Teclado AT (84 teclas)
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
8
Teclado Multifuncin MF-II (101 teclas)
Formatos de los teclados.
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
9
Cdigos de exploracin (Scan Codes).
Pulsacin tecla Generacin cdigo Make
Liberacin tecla Generacin cdigo Break
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
10
Teclas normales
Make/Break code
(Press/Release code)
Tecla PAUSE E1h
Teclas grises (MF-II)
y Alt-Gr
E0h
Make/Break/ Special code
3.1. Fundamentos fsicos.
Perifricos e Interfaces , 3 ITIS
11
3.2. Estructura y funcionamiento de un
teclado.
Aplicacin
Controlador de
teclado (8042)
Controlador de
interrupciones (8259)
CPU
(60h - 64h)
BIOS
(Int 16h)
DOS
(Int 21h)
Teclado
8742
0 Cod. Make
1 Cod. Brake
BIOS
Manejador/Driver
del teclado
Pulsacin tecla
Buffer de
teclado
ASCII -Scan
3.2. Estructura y funcionamiento de un teclado.
Perifricos e Interfaces , 3 ITIS
12
Interfaz serie bidireccional (10 Kbits/seg)
CLOCK
DATA
STOP START
0 1 2 3 4 5 6 7 P
Idle
Idle
PC Teclado
KBD CLOCK
KBD DATA
Lneas bidireccionales (colector abierto)
3.2. Estructura y funcionamiento de un teclado.
La interfaz del teclado.
Perifricos e Interfaces , 3 ITIS
13
PC Teclado
CLOCK
DATA
STOP START
0 1 2 3 4 5 6 7 P
Idle
Idle
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
14
3.3. El controlador del teclado.
B
u
f
f
e
r
E
n
t
r
a
d
a
B
u
f
f
e
r
S
a
l
i
d
a
R
e
g
i
s
t
r
o
C
o
n
t
r
o
l
R
e
g
i
s
t
r
o
E
s
t
a
d
o
P
u
e
r
t
o
S
a
l
i
d
a
P
u
e
r
t
o
E
n
t
r
a
d
a
60h
60h
64h
64h
Ratn PS/2
Teclado
8042/8742
IRQ1
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
15
El controlador del teclado: Registro de Estado.
7 6 5 4 3 2 1 0
PARE: Error de paridad
TIMOUT: Error de timeout
AUXB: Datos de teclado o disp. auxiliar
KEYL: Estado del teclado
C/D: Comando o dato
SYSF: Indicador del sistema
INPB: Estado del buffer de entrada
OUTB: Estado del buffer de salida
Registro de Estado
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
16
El controlador del teclado: Puertos de entrada/salida.
7 6 5 4 3 2 1 0
KBDO: Datos de salida para el teclado
KCLK: Reloj del teclado
AUXB: Buffer de salida del disp. aux. lleno
OUTB: Buffer de salida lleno
ACLK: Reloj del disp. auxiliar
AXDO: Datos de salida del disp. aux.
GA20 : Habilitar/deshabilitar A20
SYSR: Reset del procesador
Puerto de Salida
7 6 5 4 3 2 1 0
Reservado
C/B: Monitor color/Monocromo
AUXD : Entrada de datos desde disp. aux.
KBDI: Entrada de datos desde el teclado
Puerto de Entrada
KBLK: Bloqueo del teclado
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
17
Programacin del controlador del teclado.
Acceso al buffer de salida
INICIO
Leer registro de
estado
Bit 0 = 1 ?
Bit 0 = 0
NO
Leer dato
(Puerto 60h)
Bit 0 = 1
SI
FIN
INICIO
Leer registro de
estado
Bit 1 = 1 ?
Bit 1 = 0
Escribir comando
(Puerto 64h)
NO
Bit 1 = 1
SI
FIN
Programacin del controlador
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
18
Programacin del controlador del teclado.
INICIO
Leer registro de
estado
Bit 1 =1
SI
Leer registro de
estado
Bit 0 = 1
NO
Leer dato
(puerto 60h)
SI
FIN
Escribir comando
(Puerto 60h)
NO
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
19
Programacin del controlador del teclado.
Comandos dirigidos al controlador (8742).
Comando Descripcin
a7h Deshabilitar dispositivo
auxiliar
Deshabilita el dispositivo auxiliar
a8h Habilitar dispositivo auxiliar Habilita el dispositivo auxiliar
a9h Comprobar interfaz al
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)
aah Auto-Test El controlador del teclado ejecuta un auto test y
escribe 55h en el buffer de salida si no se
detecta ningn error.
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)
adh Deshabilitar teclado Deshabilita el teclado.
aeh Habilitar teclado Habilita el teclado
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
20
Comando Descripcin
c0h Leer puerto de entrada Lee el puerto de entrada y transfiere su
contenido al buffer de salida
d0h Leer puerto de salida Lee el puerto de salida y transfiere su
contenido al buffer de salida
d1h Escribir puerto de salida Escribe el byte siguiente en el puerto de
salida
d2h Escribir buffer de salida
del teclado
Escribe el byte siguiente en el puerto de
salida y pone el bit AUXB del registro de
estado a 0
d3h Escribir buffer de salida
del dispositivo auxiliar
Escribe el byte siguiente en el puerto de
salida y pone el bit AUXB del registro de
estado a 1
d4h Escribir en el dispositivo
auxiliar
Manda el siguiente byte hacia el dispositivo
auxiliar
e0h Leer y comprobar el puerto
de entrada
Lee el test del puerto de entrada y escribe t0
en el bit 0 y t1 en el bit 1 del buffer de salida
3.3. El controlador del teclado.
Programacin del controlador del teclado.
Comandos dirigidos al controlador (8742).
Perifricos e Interfaces , 3 ITIS
21
Cdigo Comando Descripcin
edh Encender/apagar LEDs Enciende o apaga los LEDs del teclado (A partir
MFII)
eeh Eco Devuelve el byte eeh
f0h Seleccionar/identificar
cdigos scan
Selecciona un juego de cdigos de exploracin
e identifica el actual juego de cdigos.
f2h Identificar el teclado Identifica el teclado
(ACK=AT,ACK+abh+41h=MFII.
f3h Ajustar la tasa de
repeticin/retardo.
Ajustar la tasa de repeticin/retardo del teclado.
f4h Habilitar teclado Habilita el teclado.
f5h Deshabilitar/standar Selecciona los valores standar y deshabilita el
teclado
f6h Habilitar/standar Selecciona los valores standar y habilita el
teclado
feh Reenviar Reenviar el ltimo carcter enviado al
controlador del teclado.
ffh Reset Reinicializa el teclado internamente y ejecuta el
BAT
Programacin del controlador del teclado.
Comandos dirigidos al procesador (8042).
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
22

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 01101=9.2 01110=8.5 01111=8.0
10000=7.5 10001=6.7 10010=6.0 10011=5.5 10100=5.0 10101=4.6 10110=4.3 10111=4.0
11000=3.7 11001=3.3 11010=3.0 11011=2.7 11100=2.5 11101=2.3 11110=2.1 11111=2.0

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.
0 DEL 1 DEL 0 RAT 4 RAT 3 RAT 2 RAT 1 RAT 0
7 6 5 4 3 2 1 0
3.3. El controlador del teclado.
Programacin del controlador del teclado.
Comandos dirigidos al procesador (8042).
Perifricos e Interfaces , 3 ITIS
23
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
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.
CPLS = Led para el bloqueo de mayusculas.
NUML = Led para el bloqueo numrico.
SCRL = Led para el bloqueo de desplazamiento.
0 0 0 0 0 CPLS NUM L SCRL
7 6 5 4 3 2 1 0
Byte Indicador
3.3. El controlador del teclado.
Programacin del controlador del teclado.
Comandos dirigidos al procesador (8042).
Perifricos e Interfaces , 3 ITIS
24
Cdigo Significado
00h Error de desbordamiento
ffh Error de tecla
41abh Identificador del teclado MFII
aah BAT completado
eeh Eco tras comando de eco
fah ACK Reconocimiento
fch Error en el BAT
feh Peticin de reenvio
1h-58h Cdigos make-break de las teclas
3.3. El controlador del teclado.
Programacin del controlador del teclado.
Comandos dirigidos al procesador (8042).
Perifricos e Interfaces , 3 ITIS
25
Programacin del teclado:
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
P
U
N
T
L
E
C
T
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
P
U
N
T
E
S
C
R
4
0
:
1
A
4
0
:
1
C
4
0
:
1
E
BUFFER
TECLADO
4
0
:
3
D
32 bytes
BIOS del teclado: Rutina de interrupcin
Teclas normales
ASCII
Make code
Teclas compuestas
00h
Special code
Teclas grises (MF-II)
y Alt-Gr
E0h
Make code/ Special code
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
26
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
P
U
N
T
L
E
C
T
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
P
U
N
T
E
S
C
R
4
0
:
1
A
4
0
:
1
C
4
0
:
1
E
P_LECT < P_ESC
ESTADO NORMAL
P_LECT +1 = P_ESC
BUFFER LLENO
P_LECT = P_ESC
BUFFER VACIO
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
P
U
N
T
L
E
C
T
P
U
N
T
E
S
C
R
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
L
I
B
R
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
P
U
N
T
L
E
C
T
P
U
N
T
E
S
C
R
L
I
B
R
E
L
I
B
R
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
A
S
C
I
I
M
A
K
E
4
0
:
3
D
32 bytes
3.3. El controlador del teclado.
Programacin del teclado:
Perifricos e Interfaces , 3 ITIS
27
Variables de la BIOS para gestin del teclado.
7 6 5 4 3 2 1 0
Modo insercin activo
Bloq Mays activo
Bloq. Num. activo
Bloq Despl. (Scroll) activo
Tecal < Alt > pulsada
Tecla < Ctrl > pulsada
Tecla < Shift > derecha pulsada
Tecla < Shift > izquierda pulsada
Direccin = 40:17
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
28
7 6 5 4 3 2 1 0
Tecla < Insert > pulsada
Tecla < Bloq Mays > pulsada
Tecla < Bloq. Num. > pulsada
Tecla < Bloq Despl. (Scroll) > pulsada
Modo pausa activo
Tecla < SysReq > pulsada
Tecla < ALT > izquierda pulsada
Tecla < Ctrl > izquierda pulsada
Direccin = 40:18
3.3. El controlador del teclado.
Variables de la BIOS para gestin del teclado.
Perifricos e Interfaces , 3 ITIS
29
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: AH = 01h
Salida: 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
30
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: AH = 07h
Salida: 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.
Funciones del DOS para acceso al teclado
(Int 21h).
Perifricos e Interfaces , 3 ITIS
31
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
32
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
Funciones de la BIOS para acceso al teclado
(Int 16h).
3.3. El controlador del teclado.
Perifricos e Interfaces , 3 ITIS
33
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.
Funciones de la BIOS para acceso al teclado
(Int 16h).
Perifricos e Interfaces , 3 ITIS
34
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.
Funciones de la BIOS para acceso al teclado
(Int 16h).
Perifricos e Interfaces , 3 ITIS
35
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.
Funciones de la BIOS para acceso al teclado
(Int 16h).

You might also like