PDF de programación - Unidad 6 Programación de los recursos hardware básicos del PC

Imágen de pdf Unidad 6 Programación de los recursos hardware básicos del PC

Unidad 6 Programación de los recursos hardware básicos del PCgráfica de visualizaciones

Actualizado el 6 de Enero del 2019 (Publicado el 1 de Enero del 2019)
1.141 visualizaciones desde el 1 de Enero del 2019
1,2 MB
109 paginas
Creado hace 10a (29/11/2013)
(6)

Unidad 6

Programación de los recursos

hardware básicos del PC

SISTEMAS BASADOS EN MICROPROCESADORES

Grado en Ingeniería Informática

EPS - UAM

(6)

Índice

6. Programación de recursos hardware básicos del PC.

Teclado.
Timer.

6.1.
6.2.
6.3. Reloj de Tiempo Real (RTC).
6.4. Controladora de Vídeo y Pantalla.
6.5. Puerto Paralelo. Impresora.
6.6. Puerto Serie Asíncrono (UART 8250).

(6)

6.1. Teclado (I)

Basado en un integrado de Intel (8042)

El controlador de teclado 8042 tiene 2 puertos paralelos E/S
(8 bits) programables y 2 entradas serie programables (TEST0,
TEST1).
Los pines P26 y P27 son para enviar CLK y DATOS al teclado.
Las entradas serie TEST0 yTEST1 son para recibir el CLK y los
DATOS enviados por el teclado.

8042

P20

P26

IRQ9
(IR1 PIC-0)

P27
TEST0

TEST1

CLK

DATOS

+Vcc

Conector del
teclado

GND

(6)

6.1. Teclado (II)

El 8042 es un microcontrolador
compatible con las familias MCS-48
(8048) y MCS-51 (8051) de Intel.
Se comporta como un PPI (Interfaz de
Periférico Programable) que permite
implementar interfaces a medida para
distintos periféricos.
Dispone de 2 KB de memoria ROM
(8042) o EPROM (8742), 128 KB de
memoria RAM, 2 puertos prog. de E/S
de 8 bits, 2 entradas serie prog.,
contador interno de 8 bits, reloj de 12
MHz, y otras señales de control y
especiales
Direcciones: 60h (REG. ENTRADA y
SALIDA), 64h (REG. CONTROL y
ESTADO)

8042

REG.

ENTRADA

REG.

SALIDA

REG.

ESTADO

REG.

CONTROL

ROM
(2 KB)

RAM

(128 KB)

(6)

6.1. Teclado (III)

Al transmitir señal de reloj (CLK) aparte de los datos, no es
necesario un controlador de línea serie (UART).
No hay problemas de transmisión del reloj por ser línea muy
corta.

+Vcc

CLK

P26

P27

DATOS

CLK

DATOS

TEST0

TEST1

Conector del
teclado

GND

CLK
DATOS

A

0

1

2

3

4

5

6

7

P S

(6)

6.1. Teclado (IV)

Teclado del PC tiene 83 teclas divididas en 3 grupos:

Teclas de funciones.
Teclado alfanumérico.
Teclado numérico.

Teclado se comunica con BIOS mediante INT 09h
(PIC-0, IR1).

Cada vez que se pulsa/suelta tecla se genera INT 09h.
Rutina de servicio otbiene código de tecla (SCAN
CODE) leyendo el puerto 60h del controlador de teclado.
Código de tecla al soltar es el mismo que al pulsar pero
con bit de mayor peso a 1.
Cada vez que se pulsa tecla, la rutina de servicio
almacena dos bytes en un buffer en memoria del BIOS:

Código ASCII correspondiente o 00h en caso de tecla
especial (F1,…,F12, shift, flechas, etc.).
Identificador de tecla pulsada (SCAN CODE).

(6)

6.1. Teclado (V)

Se pueden pulsar combinaciones de teclas.
Normalmente teclas de tipo modificador (ALT,
MAYÚSCULAS, CONTROL) acompañadas de otras
teclas.

Algunas combinaciones no son reconocidas por las
rutinas BIOS y no generan ningún tipo de código.

Teclas con significado especial:
Alt-Ctrl-Del (carga del sistema).
Ctrl-Pausa (llama a INT 1Bh del BIOS).
Pausa (detención de un programa hasta pulsar tecla).
Impr Pant (llama a INT 5h para imrpimir pantalla por
impresora)

(6)

6.1. Teclado (VI)

Teclado

Al pulsar o soltar tecla se
envía código KSCAN
(KEYBOARD SCAN CODE)
que codifica posición física de
la tecla en el teclado.

Controlador teclado (8042)

Programa de la ROM traduce KSCAN
a SCAN CODE.
Teclas F1 a F12, flechas, shift, etc. no
generan codígo ASCII.

83 teclas

µC (8048, 8051)

Explora

matricialmente el
teclado y envía el

KSCAN al PC

TEST0,1

µC (8042)

SCAN CODE

Buffer del teclado (DOS)

BIOS (Int 09h)

PIC-0

(INT 09h)

Formato de palabra

ASCII-PAÍS SCAN CODE

BIOS

(INT 09h)

ASCII USA

SCAN CODE

Buffer de 16 palabras

KEYB.COM

(6)

6.1. Teclado (VII)

Buffer cíclico

0040:001E ... 0040:003D EN ZONA DE VARIABLES DE LA BIOS

ZONA LLENA

0040:001E

0040:003C
Los punteros son offsets
del segmento 40h entre

1E y 3C

Al leer se incrementa

el puntero en 2

PUNTERO
LECTURA

PUNTERO
ESCRITURA

(Posición del siguiente

(Posición del siguiente

carácter a leer)

carácter a escribir)

Se deja libre una posición (word). Se
pueden guardar hasta 15 caracteres

(words) en el buffer de 16 words

ASCII PAÍS
(1er byte)

SCAN CODE

(2º byte)

(6)

6.1. Teclado (VIII)

INT 16h (BIOS)

Función

Lee del buffer de teclado los códigos asociados a la tecla o
combinación de teclas y avanza el puntero del buffer al carácter
siguiente. Si el buffer está vacío espera a que se pulse una tecla.
Salidas:
AH = Identificador de la tecla (SCAN CODE)
AL = código ASCII del carácter
Devuelve el estado del buffer del teclado
Salidas:
ZF = 1 si buffer vacío
ZF = 0 si buffer no vacío
AH = Identificador de la tecla
AL = código ASCII del carácter
Estado de pulsación de distintas teclas
Salidas:
Devuelve en AL el byte de estado de pulsación de distintas teclas:
7: Ins, 6: Bloq. Mayúsculas, 5: Bloq. Numérico, 4: Bloq. Desplazamiento,
3: Alt, 2: Ctrl, 1: Mayúscula Izqda., 0: Mayúscula Dcha.

AH

00h
y
10h

01h
y
11h

02h
y
12h

(6)

6.1. Teclado (IX)

INT 16h (BIOS)

AH

12h

05h

Función
Estado de pulsación de distintas teclas.
Salidas:
Devuelve en AH el byte de estado de pulsación de distintas teclas:
7: Impresión Pantalla, 6: Bloq. Mayúsculas, 5: Bloq. Numérico,
4: Bloq. Desplazamiento, 3: Alt Dcho., 2: Ctrl Dcho., 1: Alt Izqdo.,
0: Ctrl Izqdo.
Escribe el carácter indicado en el buffer del teclado.
Entradas:
CH = Identificador de la tecla (SCAN CODE)
CL = Código ASCII del carácter.
Salidas:
AL = 1 si buffer lleno.

(6)

AH

01h

06h

07h

0Ah

0Bh

6.1. Teclado (X)

INT 21h (DOS)
Función

Espera para leer un carácter del teclado y lo escribe por pantalla
Salidas: AL = carácter tecleado
Lee un carácter del teclado sin salida por pantalla (DL = FFh)
Salidas: AL = carácter tecleado si hay disponible, AL = 0 si no disponible
Espera para leer un carácter del teclado sin escribirlo por
pantalla
Salidas: AL = carácter tecleado si hay disponible
Lee caracteres del teclado sin escribirlos por pantalla
Entrada: DS:DX = dirección del buffer de memoria
El primer byte del buffer debe indicar el número máximo de caracteres
a leer (incluido el retorno de carro)
Salidas: El segundo byte del buffer indica el número de caracteres
leídos sin incluir el retorno de carro. Los códigos ASCII de los
caracteres tecleados se guardan a partir del tercer byte.
Lee el estado del teclado
Salidas: AL = FFh si carácter disponible, AL = 0 si no disponible.

(6)

6.2. Timer (I)

Temporizador de intervalo programable de Intel (8254).
Contiene 3 contadores independientes de 16 bits.
Cada contador se decrementa en una unidad en cada
flanco de bajada del reloj (entrada CLK) si está
activada su señal de habilitación (entrada GATE).
La salida de cada contador
(señal OUT) se activa
en función del modo
en que el contador
se haya programado
previamente.
6 modos de
funcionamiento.

CLK 1
GATE 1

CLK 0
GATE 0

8254

CONT 0

OUT 0

CONT 1

OUT 1

CLK 2
GATE 2

CONT 2

OUT 2

(6)

6.2. Timer (II)

El timer tiene 4 puertos de E/S.
Puerto 43h (sólo de escritura)
Registro de control del timer.
Permite definir la configuración inicial de un contador y
enviar un comando de memorización del valor de conteo
actual.

Puerto 40h (CONT 0)

En escritura modifica valor de conteo inicial de CONT 0.

El contador decrementa a partir de ese valor inicial.
Al llegar a cero, el contador puede volverse a cargar con el
mismo valor inicial según el modo de funcionamiento.

En lectura retorna el valor memorizado de CONT 0.

Puertos 41h (CONT 1) y 42h (CONT 2)

Igual comportamiento que 40h para los otros contadores.

(6)

6.2. Timer (III)

Palabra de control

Se escribe en el puerto 43h el siguiente valor:

SC1 SC0 RW1 RW0 M2

M1

M0

BCD

(6)

6.2. Timer (IV)

Palabra de control

Se escribe en el puerto 43h el siguiente valor:

SC1 SC0 RW1 RW0 M2

M1

M0

BCD

Selección del contador

SC1

SC0

Acción

0
0
1

0
1
0

Selecciona CONT 0
Selecciona CONT 1
Selecciona CONT 2

Configuraciones del resto de la palabra de control
aplicadas sólo al contador seleccionado.

(6)

6.2. Timer (V)

Palabra de control

Se escribe en el puerto 43h el siguiente valor:

SC1 SC0 RW1 RW0 M2

M1

M0

BCD

Comando de memorización del valor actual del contador
+ Configuración de Lectura/Escritura en contador

RW1

RW0

Acción

0

0

1

1

0

1

0

1

Comando de memorización del valor
actual (campos M y BCD sin efecto).
Lectura/Escritura en puerto del contador
sólo afecta al byte bajo.
Lectura/Escritura en puerto del contador
sólo afecta al byte alto.
Primera Lectura/Escritura en puerto del
contador afecta a byte bajo y segunda al
byte alto.

(6)

6.2. Timer (VI)

Palabra de control

Se escribe en el puerto 43h el siguiente valor:

SC1 SC0 RW1 RW0 M2

M1

M0

BCD

Configuración de modo de funcionamiento

M2 M1 M0
0
0
X
X
1
1

0
0
1
1
0
0

Acción

0 Modo 0: Interrupción al final del conteo.
1 Modo 1: Monoestable programable.
0 Modo 2: Generador de frecuencia.
1 Modo 3: Generador de onda cuadrada.
0 Modo 4: Pulso Strobe iniciado por software.
1 Modo 5: Pulso Strobe iniciado por hardware.

(6)

6.2. Timer (VII)

Palabra de control

Se escribe en el puerto 43h el siguiente valor:

SC1 SC0 RW1 RW0 M2

M1

M0

BCD

Configuración de codificación del contador

BCD

0
1

Acción

Contador binario de 16 bits.
Contador BCD de cuatro dígitos.

Binary-Coded Decimal (BCD): Cada cuatro bits codifican
un dígito entre 0 (0000b) y 9 (1001b).

(6)

6.2. Timer (VIII)

Configuración inicial: Se envía palabra de control al
puerto 43h indicando contador y su configuración inicial
(RW ≠ 00b).
Valor de conteo inicial de un contador:

Se envía al puerto del contador (40h, 41h o 42h).
Se envía byte bajo, byte alto o byte bajo seguido de
byte alto según campo RW de la palabra de control.

Ejemplo: Configurar contador 2 (SC = 10b) en modo 3
(M = 011b), con codificación binaria (BCD = 0), e
inicializarlo a 1234h (RW = 11b).

; Palabra de control: SC | RW | M | BCD

; Envía palabra de control

mov al, 10110110b
out 43h, al
mov al, 34h
out 42h, al
mov al, 12h
out 42h, al

; Envía byte bajo
  • Links de descarga
http://lwp-l.com/pdf14746

Comentarios de: Unidad 6 Programación de los recursos hardware básicos del PC (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad