You are on page 1of 14

Laboratorio de Microprocesadores EL TIMER 8254

M.C. Carlos E. Canto Quintal



- 88 -






NOMBRE DE LA PRCTICA

EL TIMER 8254, SU CONEXIN Y PROGRAMACIN

OBJETIVO ESPECFICO:
CONOCER LA UTILIZACIN Y LA PROGRAMACIN
DEL TIMER 8254

INTRODUCCIN:
El Temporizador programable de intervalos 8254, consta de tres contadores
(temporizadores ) de 16 bits. Cada contador puede contar en binario o en decimal
codificado en binario (BCD). La frecuencia mxima permisible de entrada a
cualquier contador es de 10 MHz .
El 8253/8254 es un chip que puede ser empleado cuando el microprocesador
debe controlar eventos en tiempo real, como reloj de tiempo real, contador de
eventos, generador de baudaje programable, generador de onda cuadrada, etc.

Este temporizador tambin aparece en la PC en los puertos 40h al 43h para
generar una interrupcin bsica del temporizador a ms o menos, 18.2 Hz; hacer
que se refresque la memoria DRAM del sistema; constituir una fuente de
temporizacin para la bocina interna y otros dispositivos.

DESCRIPCIN DEL CIRCUITO INTEGRADO 8254

Este circuito integrado posee 3 contadores totalmente independientes, que
pueden ser programados de 6 formas diferentes.


PRACTICA N0.9
24
23
22
21
1
2
3
4
5
6
7
8
9
10
11
12
VCC
RD
CS
A1
A0
CLK2
OUT2
GATE2
WR
CLK1
GATE1
OUT1
D3
D2
D1
D0
CLK0
OUT0
GATE0
GND
D7
D6
D5
D4
20
19
18
17
16
15
14
13
CS
RD
WR
OUT0 OUT0
OUT1 OUT1
OUT2 OUT2
GATE0 GATE0
GATE1 GATE1
GATE2 GATE2
CLK2 CLK2
CLK1 CLK1
CLK0 CLK0
A0
A1
D0 D0- -D7 D7
Contador 0
Contador 1
Contador2
24
23
22
21
1
2
3
4
5
6
7
8
9
10
11
12
VCC
RD
CS
A1
A0
CLK2
OUT2
GATE2
WR
CLK1
GATE1
OUT1
D3
D2
D1
D0
CLK0
OUT0
GATE0
GND
D7
D6
D5
D4
20
19
18
17
16
15
14
13
CS
RD
WR
OUT0 OUT0
OUT1 OUT1
OUT2 OUT2
GATE0 GATE0
GATE1 GATE1
GATE2 GATE2
CLK2 CLK2
CLK1 CLK1
CLK0 CLK0
A0
A1
D0 D0- -D7 D7
Contador 0
Contador 1
Contador2
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 89 -
Buffer
del bus
de datos
Buffer
del bus
de datos
Lgica de
lectura/
escritura
Lgica de
lectura/
escritura
Registro de
control
Registro de
control
Contador 0
Contador 0
Contador 1
Contador 1
Contador 2
Contador 2
BUS INTERNO
BUS INTERNO
D0-D7
CLK0
CLK1
CLK2
GATE0
GATE1
GATE2
OUT2
OUT1
OUT0
WR
RD
A0
A1
CS
Buffer
del bus
de datos
Buffer
del bus
de datos
Lgica de
lectura/
escritura
Lgica de
lectura/
escritura
Registro de
control
Registro de
control
Contador 0
Contador 0
Contador 1
Contador 1
Contador 2
Contador 2
BUS INTERNO
BUS INTERNO
D0-D7
CLK0
CLK1
CLK2
GATE0
GATE1
GATE2
OUT2
OUT1
OUT0
Buffer
del bus
de datos
Buffer
del bus
de datos
Lgica de
lectura/
escritura
Lgica de
lectura/
escritura
Registro de
control
Registro de
control
Contador 0
Contador 0
Contador 1
Contador 1
Contador 2
Contador 2
BUS INTERNO
BUS INTERNO
D0-D7
CLK0
CLK1
CLK2
GATE0
GATE1
GATE2
OUT2
OUT1
OUT0
WR
RD
A0
A1
CS
DEFINICIN DE LAS TERMINALES
D7..D0: BUS de datos bidireccional de 3 estados.
CLK 0: CLOCK 0, entrada de reloj al contador 0.
OUT 0: Salida del contador 0.
GATE 0: Puerta de entrada al contador 0.
CLK 1: CLOCK 1, entrada de reloj al contador 1.
OUT 1: Salida del contador 1.
GATE 1: Puerta de entrada al contador 1.
CLK 2: CLOCK 2, entrada de reloj al contador 2.
OUT 2: Salida del contador 2.
GATE 2: Puerta de entrada al contador 2.
A0..A1: Lneas de direccin para seleccionar uno de los tres contadores o el registro de la palabra de control.
-CS: Habilita la comunicacin con la CPU.
-WR: Permite al 8254 aceptar datos de la CPU.
-RD: Permite al 8254 enviar datos a la CPU.

DESCRIPCIN FUNCIONAL

El buffer del bus de datos, de 8 bits y tres estados, comunica el 8254 con la
CPU. La lgica de lectura y escritura acepta entradas del bus y genera seales
de control para las partes funcionales del 8254. Las lneas A0..A1 seleccionan uno
de los tres contadores o el registro de la palabra de control, para poder leerlos o
escribirlos. El registro de la palabra de control es seleccionado cuando
A0=A1=1, este registro slo puede ser escrito (se puede obtener informacin de
estado, como se ver ms adelante, con el comando read-back del 8254, no
disponible en el 8253). Los contadores 1, 2 y 3 son idnticos en su
funcionamiento y son totalmente independientes y cada uno de ellos puede ser
programado en un modo diferente.


Si se observa el esquema de un contador, a la derecha, se ver el registro de la
palabra de control: aunque no es parte del contador propiamente dicho, afecta a
su modo de funcionamiento.
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 90 -
El registro de estado, cuando es transferido al correspondiente latch, contiene el
valor en curso del registro de la palabra de control y alguna informacin adicional
(como se ver despus en el comando read-back).
El contador propiamente dicho est representado en la figura por CE (Counting
Element) y es un contador descendente sncrono de 16 bits que puede ser
inicializado. OL
M
y OL
L
son dos latch de 8 bits (OL significa Output Latch; los
subndices M y L estn relacionados con el ms y el menos significativo byte,
respectivamente); ambos son referenciados normalmente como un conjunto
denominado OL a secas. Estos latches siguen normalmente la cuenta
descendente de CE, pero la CPU puede enviar un comando para congelarlos y
poder leerlos; tras la lectura continuarn siguiendo a CE.

La lgica de control del contador se encarga de que un slo latch est activo a un
tiempo, ya que el bus interno del 8254 es de 8 bits. CE no puede ser nunca ledo
directamente (lo que se lee es OL). De manera anloga, existen un par de
registros CR
M
y CR
L
(CR significa Count Register) que almacenan la cuenta del
contador y se la transmiten convenientemente a CE. Los valores de cuenta se
escriben siempre sobre CR (y no directamente sobre CE). La lgica de control
gestiona la conexin con el exterior a travs de las lneas CLK, GATE y OUT

PROGRAMACIN DEL 8254
Para programar un contador del 8254 hay que enviar primero una palabra de
control y, despus, un valor de cuenta inicial. Los contadores se seleccionan con
las lneas A0 y A1; el valor A0=A1=1 selecciona la escritura de la palabra de
control (en la que se identifica el contador implicado). Por tanto, el 8254 ocupa
normalmente 4 direcciones de E/S consecutivas ligadas a los contadores 0, 1, 2 y
al registro de la palabra de control. Para enviar la cuenta inicial se utiliza
Lgica de
Control
Lgica de
Control
Registro de control
Registro de control
Latch De Salida (OLM)
MSB
Latch De Salida (OLM)
MSB
Latch de status
Latch de status
Registro de status
Registro de status
Registro de conteo
(CRM) MSB
Registro de conteo
(CRM) MSB
CONTADOR n (CE)
CONTADOR n (CE)
Bus interno de Datos
Bus interno de Datos
Registro de conteo
(CRL)LSB
Registro de conteo
(CRL)LSB
Latch de salida (OLL)
LSB
Latch de salida (OLL)
LSB
CLK n GATE n OUT n
Arquitectura interna de un contador del 8254 Arquitectura interna de un contador del 8254
Lgica de
Control
Lgica de
Control
Registro de control
Registro de control
Latch De Salida (OLM)
MSB
Latch De Salida (OLM)
MSB
Latch de status
Latch de status
Registro de status
Registro de status
Registro de conteo
(CRM) MSB
Registro de conteo
(CRM) MSB
CONTADOR n (CE)
CONTADOR n (CE)
Bus interno de Datos
Bus interno de Datos
Registro de conteo
(CRL)LSB
Registro de conteo
(CRL)LSB
Latch de salida (OLL)
LSB
Latch de salida (OLL)
LSB
CLK n GATE n OUT n
Arquitectura interna de un contador del 8254 Arquitectura interna de un contador del 8254
FORMATO DE LA PALABRA DE CONTROL FORMATO DE LA PALABRA DE CONTROL
SC1
SC1
SC0
SC0
RW1
RW1
RW0
RW0
M2
M2
M1
M1
M0
M0
BCD
BCD
D0 D1 D2 D3 D4 D5 D6 D7
SC1
SC1
SC0
SC0
RW1
RW1
RW0
RW0
M2
M2
M1
M1
M0
M0
BCD
BCD
SC1
SC1
SC0
SC0
RW1
RW1
RW0
RW0
M2
M2
M1
M1
M0
M0
BCD
BCD
D0 D1 D2 D3 D4 D5 D6 D7
Elegir contador:
0 0 contador 0
0 1 contador 1
1 0 contador 2
1 1 comando Read Back Operacin:
0 0 comando de enclavamiento
0 1 leer/escribir byte bajo
1 0 leer/escribir byte alto
1 1 leer/escribir byte bajo y
despus el alto
Contador:
0 binario 16 bits
1 BCD 4 dcadas
Modo:
0 0 0 modo 0
0 0 1 modo 1
x 1 0 modo 2
x 1 1 modo 3
1 0 0 modo 4
1 0 1 modo 5
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 91 -
simplemente el puerto E/S ligado al contador que se trate. El formato de la palabra
de control es:
Operaciones de escritura.

El 8254 es muy flexible a la hora de ser programado. Basta con tener en cuenta
dos cosas: por un lado, escribir siempre primero la palabra de control, antes de
enviar la cuenta inicial al contador. Por otro, dicha cuenta inicial debe seguir
exactamente el formato seleccionado en la palabra de control (enviar slo byte
bajo, enviar slo byte alto, o bien enviar ambos consecutivamente). Teniendo en
cuenta que cada contador tiene su propio puerto y que la palabra de control indica
el contador al que est asociada, no hay que seguir un orden especial a la hora de
programar los contadores. Esto significa que, por ejemplo, se puede enviar la
palabra de control de cada contador seguida de su cuenta inicial, o bien enviar
todas las palabras de control para los 3 contadores y despus las 3 cuentas
iniciales; tambin es vlida cualquier combinacin intermedia de estas secuencias
(por ejemplo: enviar la palabra de control para el contador 0, despus la palabra
de control para el contador 1, despus la parte baja de la cuenta para el contador
0, luego la parte baja de la cuenta para el contador 1, la parte alta de la cuenta
para el contador 0, etc...).

Un nuevo valor de cuenta inicial puede ser almacenado en un contador en
cualquier momento, sin que ello afecte al modo en que ha sido programado (el
resultado de esta operacin depender del modo, como se ver ms adelante). Si
se programa el contador para leer/escribir la cuenta como dos bytes consecutivos
(bajo y alto), el sentido comn indica que entre ambos envos/recepciones no
conviene transferir el control a una subrutina que utilice ese mismo contador para
evitar un resultado incorrecto.
Operaciones de lectura.
Existen tres posibles mtodos para leer el valor de un contador en el 8254. El
primero es el comando Read-Back, slo disponible en el 8254 (y no en el 8253). El
segundo consiste en leer simplemente el contador accediendo a su puerto
correspondiente: este mtodo requiere inhibir la entrada CLK al contador (por
ejemplo, a travs de la lnea GATE o utilizando circuitera exterior de apoyo) con
objeto de evitar leer la cuenta en medio de un proceso de actualizacin de la
misma, lo que dara un resultado incorrecto. El tercer mtodo consiste en el
comando de enclavamiento.
Comando de enclavamiento (Counter Latch Command).
Este comando se enva como si se tratara de una palabra de control (A1=A0=1):
para diferenciarlo de ellas los bits 5 y 4 estn a cero. En los bits 7 y 6 se indica el
contador afectado. Los dems bits deben estar a cero para compatibilizar con
futuras versiones del chip. Cuando se enva el comando, el OL del contador
seleccionado queda congelado hasta que la CPU lo lee, momento en el que se
descongela y pasa de nuevo a seguir a CE. Esto permite leer los contadores al
vuelo sin afectar la cuenta en curso. Se pueden enviar varios de estos comandos
a los diversos contadores, cuyos OL's quedarn enclavados hasta ser ledos.

SC1
SC1
SC0
SC0
0
0
0
0
X
X
X
X
X
X
X
X
D0 D1 D2 D3 D4 D5 D6 D7
contador afectado:
0 0 contador 0
0 1 contador 1
1 0 contador 2
SC1
SC1
SC0
SC0
0
0
0
0
X
X
X
X
X
X
X
X
D0 D1 D2 D3 D4 D5 D6 D7
SC1
SC1
SC0
SC0
0
0
0
0
X
X
X
X
X
X
X
X
SC1
SC1
SC0
SC0
0
0
0
0
X
X
X
X
X
X
X
X
D0 D1 D2 D3 D4 D5 D6 D7
contador afectado:
0 0 contador 0
0 1 contador 1
1 0 contador 2
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 92 -
1
1
1
1
-CONTEO
-CONTEO
-STATUS
-STATUS
CONTADOR2
CONTADOR2
CONTADOR1
CONTADOR1
CONTADOR0
CONTADOR0
0
0
0 si enclava la cuenta
de los contadores
seleccionados
0 si enclava el byte de status del contador
seleccionado
A 1 los contadores seleccionados
D0 D1 D2 D3 D4 D5 D6 D7
1
1
1
1
-CONTEO
-CONTEO
-STATUS
-STATUS
CONTADOR2
CONTADOR2
CONTADOR1
CONTADOR1
CONTADOR0
CONTADOR0
0
0
1
1
1
1
-CONTEO
-CONTEO
-STATUS
-STATUS
CONTADOR2
CONTADOR2
CONTADOR1
CONTADOR1
CONTADOR0
CONTADOR0
0
0
0 si enclava la cuenta
de los contadores
seleccionados
0 si enclava el byte de status del contador
seleccionado
A 1 los contadores seleccionados
D0 D1 D2 D3 D4 D5 D6 D7
Si se envan varios comandos de enclavamiento al mismo contador, separados
por un cierto intervalo de tiempo, slo se considerar el primero (por tanto, la
cuenta leda corresponder al valor del contador cuando fue enclavado por vez
primera).

Por supuesto, el contador debe ser ledo utilizando el formato que se defini al
enviar la palabra de control; aunque en el caso de leer 16 bits, las dos operaciones
no han de ser necesariamente consecutivas (se pueden insertar en medio otras
acciones relacionadas con otros contadores).
Otra caracterstica interesante consiste en la posibilidad de mezclar lecturas y
escrituras del mismo contador. Por ejemplo, si ha sido programado para cuentas
de 16 bits, es vlido hacer lo siguiente: 1) leer el byte menos significativo, 2)
escribir el nuevo byte menos significativo, 3) leer el byte ms significativo, 4)
escribir el nuevo byte ms significativo.
Comando Read-Back.
Slo est disponible en el 8254, no en el 8253. Este comando permite leer el
valor actual de la cuenta, as como averiguar tambin el modo programado para
un contador y el estado actual de la patilla OUT, adems de verificar el bandern
de cuenta nula (Null Count) de los contadores que se indiquen. El formato del
comando Read-Back es el siguiente:
El comando Read-Back permite enclavar la cuenta en varios OL's de mltiples
contadores de una sola vez, sin requerir mltiples comandos de enclavamiento,
poniendo el bit 5 a cero. Todo funciona a partir de aqu como cabra esperar (los
contadores permanecen enclavados hasta ser ledos, los que no son ledos
permanecen enclavados, si el comando se reitera slo acta la primera vez
reteniendo la primera cuenta...). Tambin es posible enviar informacin de estado
al latch OL, enclavndola para que puede ser leda con comodidad por el puerto
que corresponda a ese contador. La palabra de estado tiene el siguiente formato:

En D0..D5 se devuelve justo la misma informacin que se envi en la ltima
palabra de control; en el bit D7 se entrega el estado actual de la patilla OUT del
OUTPUT
OUTPUT
NULL COUNT
NULL COUNT
RW1
RW1
RW0
RW0
M2
M2
M1
M1
M0
M0
BCD
BCD
D0 D1 D2 D3 D4 D5 D6 D7
Valor de la
terminal out
1 Null count
0 cuenta disponible para ser leda
Modo del
contador activo
Contador:
0 binario 16 bits
1 BCD 4 dcadas
OUTPUT
OUTPUT
NULL COUNT
NULL COUNT
RW1
RW1
RW0
RW0
M2
M2
M1
M1
M0
M0
BCD
BCD
OUTPUT
OUTPUT
NULL COUNT
NULL COUNT
RW1
RW1
RW0
RW0
M2
M2
M1
M1
M0
M0
BCD
BCD
D0 D1 D2 D3 D4 D5 D6 D7
Valor de la
terminal out
1 Null count
0 cuenta disponible para ser leda
Modo del
contador activo
Contador:
0 binario 16 bits
1 BCD 4 dcadas
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 93 -
8254, lo que permite monitorizar por software las salidas del temporizador
economizando hardware en ciertas aplicaciones. El bit NULL COUNT (D6) indica
cundo la ltima cuenta escrita en CR ha sido transferida a CE: el momento
exacto depende del modo de funcionamiento del contador. Desde que se
programa un nuevo valor de cuenta, pasa un cierto tiempo hasta que ste valor
pasa de CR a CE: leer el contador antes de que se haya producido dicha
transferencia implica leer un valor no relacionado con la nueva cuenta. Por ello,
segn las aplicaciones, puede llegar a ser necesario esperar a que NULL COUNT
alcance el valor 0 antes de leer. El funcionamiento es el siguiente:
Operacin Consecuencias
A -Escribir al registro de la palabra de control (1) NULL COUNT = 1
B -Escribir al registro contador (CR) (2) NULL COUNT = 1
C -Nueva cuenta cargada en CE (CR ->CE) NULL COUNT = 0
Notas:
(1) Slo el contador especificado por la palabra de control tiene su NULL COUNT
a 1; los dems contadores, lgicamente, no ven afectado su correspondiente
bit NULL COUNT.

(2) Si el contador es programado para cuentas de 16 bits, NULL COUNT pasa a
valer 1 inmediatamente despus de enviar el segundo byte.
Si se enclava varias veces seguidas la palabra de estado, todas sern
ignoradas menos la primera, por lo que el estado ledo ser el correspondiente al
contador en el momento en que se enclav por vez primera la palabra de estado.

Se pueden enclavar simultneamente la cuenta y la palabra de estado (en un
comando Read-Back con D5=D4=0), lo que equivale a enviar dos Read-Back
consecutivos. En este caso, y con independencia de quin de los dos hubiera sido
enclavado primero, la primera lectura realizada devolver la palabra de estado y la
segunda la cuenta enclavada (que automticamente quedar de nuevo
desenclavada).
MODOS DE OPERACIN DEL 8254
MODO 0: Interrupt On Terminal Count (Interrupcin al final de la cuenta).
Es empleado tpicamente para contar eventos. Tras escribir la palabra de
control, OUT est inicialmente en estado bajo, y permanecer as hasta que el
contador alcance el cero: entonces se pone a 1 y no volver a bajar hasta que se
escriba una nueva cuenta o una nueva palabra de control. La entrada GATE
puesta a 0 permite inhibir la cuenta, sin afectar a OUT. El contador sigue
evolucionando tras llegar a cero (0FFFFh, 0FFFEh, ...) por lo que lecturas
posteriores del mismo devuelven valores pseudoaleatorios.
Tras escribir la cuenta inicial y la palabra de control en el contador, la cuenta inicial
ser cargada en el prximo pulso del reloj conectado (CLK), pulso que no
decrementa el contador: para una cuenta inicial N, OUT permanecer a 0 durante
N+1 pulsos del reloj tras escribir la cuenta inicial.
Si se escribe una nueva cuenta en el contador, ser cargada en el prximo
pulso del reloj y el contador comenzar a decrementarse; si se enva una cuenta
de dos bytes, el primer byte enviado inhibe la cuenta y OUT es puesto a cero
inmediatamente (sin esperar a CLK): tras escribir el segundo byte, la cuenta ser
(3) (2) (1) (0)
Inicia conteo
Final de conteo
Se carga la cuenta al
registro de conteo
(4)
Pulso de
escritura
CLK
WR
GATE
OUT
(3) (2) (1) (0)
Inicia conteo
Final de conteo
Se carga la cuenta al
registro de conteo
(4)
Pulso de
escritura
CLK
WR
GATE
OUT
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 94 -
cargada en el siguiente pulso del reloj. Esto permite sincronizar la secuencia de
conteo por software.

Si se escribe una nueva cuenta mientras GATE=0, sta ser cargada en cualquier
caso en el siguiente pulso del reloj: cuando GATE suba, OUT se pondr en alto
tras N pulsos del reloj (y no N+1 en este caso).
MODO 1: Hardware Retriggerable One-Shot (Monoestable programable).
OUT ser inicialmente alta y bajar en el pulso de reloj que sigue al flanco de
subida de GATE, permaneciendo en bajo hasta que el contador alcance el cero.
Entonces, OUT sube y permanece activo hasta el pulso del reloj que siga al
prximo flanco de subida de GATE.
Tras escribir la palabra de control y la cuenta inicial, el contador est
preparado. Un flanco de subida de GATE provoca la carga del contador (CR -
< CE) y que OUT baje en el prximo pulso del reloj, comenzando el pulso One-
Shot de N ciclos de reloj de duracin; el contador vuelve a ser recargado si se
produce un nuevo flanco de subida de GATE, de ah que OUT permanezca en
bajo durante N pulsos de reloj tras la ltima vez que suceda esto. El pulso One-
Shot puede repetirse sin necesidad de recargar el contador con el mismo valor.
GATE no influye directamente en OUT.
Si se escribe una nueva cuenta durante un pulso One-Shot, el One-Shot en
curso no resulta afectado, a menos, lgicamente, que se produzca un nuevo
flanco de subida de GATE: en ese caso, el contador sera recargado con el nuevo
valor.
MODO 2: Rate Generator (Generador de ritmo).
En este modo, el contador funciona como un divisor por N. Es empleado
tpicamente para las interrupciones de los relojes de tiempo real.
OUT estar inicialmente en alto. Cuando el contador se decremente hasta el
valor 1, OUT pasar a estado bajo durante un pulso del reloj; tras ello, volver a
subir y el contador se recargar con la cuenta inicial, repitindose el proceso. Este
modo es, por tanto, peridico, y la misma secuencia se repite indefinidamente.
(3) (2) (1)
(0) (4) Pulso de
escritura
CLK
WR
GATE
OUT
Conteo detenido
(3) (2) (1)
(0) (4) Pulso de
escritura
CLK
WR
GATE
OUT
Conteo detenido
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
Disparos del monoestable
(3) (2) (4) (1)
GATE
(TRIGGER)
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
Disparos del monoestable
(3) (2) (4) (1) (3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
Disparos del monoestable
(3) (2) (4) (1)
GATE
(TRIGGER)
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 95 -
Para una cuenta inicial N, la secuencia se repite cada N ciclos de reloj (CLK).
Si GATE=0 la cuenta descendiente se detiene: si GATE es bajado durante un
pulso de salida, OUT sube inmediatamente. Un flanco de subida en GATE provoca
una recarga del contador con el valor de cuenta inicial en el siguiente pulso del
reloj (despus, como cabra esperar, OUT bajar tras los N pulsos del reloj
correspondientes): GATE puede ser utilizado para sincronizar el contador.
Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado
en el prximo pulso del reloj: OUT bajar N pulsos de reloj despus, lo que
permite tambin una sincronizacin por software.
Escribir un nuevo valor de cuenta durante el funcionamiento del contador no
afecta a la actual secuencia de cuenta; si se recibe un flanco de subida de GATE
antes del final del perodo el contador se recargar con ese nuevo valor de cuenta
inicial tras el prximo pulso del reloj y volver a comenzar, en caso contrario se
recargar con el nuevo valor tras finalizar con normalidad el ciclo en curso.
MODO 3: Square Wave Mode (Generador de onda cuadrada).
Este modo es empleado normalmente para la generacin de una seal de onda
cuadrada. Este modo es similar al 2, con la diferencia de que la salida OUT
conmuta al transcurrir la mitad de la cuenta: inicialmente est en alto, pero al
pasar la mitad de la cuenta pasa a estado bajo hasta que la cuenta finaliza. Este
modo es tambin peridico: la onda resultante para una cuenta inicial N tiene un
perodo de N ciclos.
Si GATE=0 la cuenta descendiente se detiene: si GATE es bajado durante un
pulso de salida, OUT sube inmediatamente sin esperar ningn CLK. Un flanco de
subida en GATE provoca una recarga del contador con el valor de cuenta inicial en
el siguiente pulso del reloj: GATE puede ser utilizado para sincronizar el contador.
Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado
en el prximo pulso del reloj: tambin puede ser sincronizado por software.
Escribir un nuevo valor de cuenta durante el funcionamiento del contador no
afecta a la actual secuencia de cuenta; si se recibe un flanco de subida de GATE
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
(3) (2) (4) (1)
GATE
un periodo de reloj (Tc)
N=cuenta cargada
Tc=periodo del reloj en CLK=1/fclk
(0) (4) (3) (3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
(3) (2) (4) (1)
GATE
un periodo de reloj (Tc)
N=cuenta cargada
Tc=periodo del reloj en CLK=1/fclk
(0) (4) (3)
N = cuenta cargada
Tc = periodo del reloj en CLK = 1/fclk
T= NTc
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
(3) (2) (4) (1)
GATE
(0) (4) (3)
T1 T0-
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
(3) (2) (4) (1)
GATE
(0) (4) (3)
T1 T0-
Ya que es una onda cuadrada T1 = T0 = N/2
Si N es impar entonces T1 = (N+1)/2 y T0 = (N-1)/2
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 96 -
antes del final del medio-perodo el contador se recargar con ese nuevo valor de
cuenta inicial tras el prximo pulso del reloj y volver a comenzar, en caso
contrario se recargar con el nuevo valor tras finalizar con normalidad el medio-
ciclo en curso.
Para valores de cuenta impares, la duracin a nivel alto de OUT ser un
perodo de reloj mayor que la duracin a nivel bajo.

MODO 4: Software Triggered strobe Mode (Pulso Strobe iniciado por
software).
OUT est en alto al principio; cuando la cuenta inicial expira, OUT baja durante
un pulso de reloj y luego vuelve a subir. El proceso se inicia cuando se escribe la
cuenta inicial.
GATE=0 inhibe el contador y GATE=1 lo habilita; GATE no influye en OUT.
Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el
prximo pulso del reloj: como ese pulso no decrementa el contador, para una
cuanta inicial N, OUT no bajar hasta N+1 pulsos de CLK. Si se escribe una nueva
cuenta durante el proceso, se cargar en el prximo pulso CLK y continuar el
proceso de cuenta con la nueva cuenta escrita; si la cuenta es de 2 bytes, al
escribir el primero no se altera el funcionamiento del contador hasta que se enve
el segundo.
MODO 5: Hardware Triggered Strobe (Pulso Strobe iniciado por hardware).
OUT estar en alto al principio: con el flanco de subida de la seal GATE, el
contador comienza a decrementar la cuenta. Cuando llega a cero, OUT baja
durante un pulso CLK y luego vuelve a subir.
Despus de escribir la palabra de control y la cuenta inicial, el contador no ser
cargado hasta el pulso de reloj posterior al flanco de subida de GATE. Este pulso
CLK no decrementa el contador: por ello, ante una cuenta inicial N, OUT no bajar
hasta que pasen N+1 pulsos de reloj. GATE no afecta a OUT.
Si una nueva cuenta inicial es escrita durante el proceso, la actual secuencia
del contador no ser alterada; si se produce un flanco de subida en GATE antes
de que la nueva cuenta sea escrita pero despus de que expire la cuenta actual, el
contador ser cargado con la nueva cuenta en el prximo pulso del reloj.
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
GATE
un periodo de reloj (Tc)
N=cuenta cargada
Tc=periodo del reloj en CLK=1/fclk
Strobe
Strobe
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
GATE
un periodo de reloj (Tc)
N=cuenta cargada
Tc=periodo del reloj en CLK=1/fclk
Strobe
Strobe
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
GATE
(TRIGGER)
un periodo de reloj (Tc)
Strobe
Strobe
Disparo del Strobe
(3) (2) (1) (0) (4)
N=4
CLK
WR
OUT
T=NTc
GATE
(TRIGGER)
un periodo de reloj (Tc)
Strobe
Strobe
Disparo del Strobe
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 97 -
MATERIAL Y EQUIPO UTILIZADO:
1 CI 8254
1 CI L293
1 MOTOR DE CD
Sensor ptico de herradura
Encoder ( disco con una ranura)
I Transistor NPN
Bocina pequea (o buzzer)
1 CI 74LS14 (inversor Schmitt Trigger)


CORRELACIN CON TEMAS DEL PROGRAMA VIGENTE:
Con esta prctica se cubre algunos de los aspectos de la unidad II: Interfases

METODOLOGA (DESARROLLO DE LA PRCTICA):

1.-Use el timer 0 del 8254 como contador de nmero de vueltas que realiza un
motor de CD, tal que cuando cuente 1000 vueltas, usando el timer 1 se produzca
en la bocina un pitido de 1Khz por 1 segundo despus de los cuales se invierte el
sentido de giro del motor usando el doble puente H (L293) y de nuevo se contar
con el 8254 1000 vueltas y se repite indefinidamente.
2.- El L293 que va a controlar el sentido de giro del motor, se va a manipular por el
bit 0 y bit 1 del puerto B del PPI.
3.- El inicio del giro del motor va ser controlado con el push-button conectado al bit
7 del puerto A. del PPI.
4.-El timer 1 generar un tono de 1 Khz al poner en alto su terminal gate1 con el
bit 0 del puerto C del PPI

Ejemplo de Conexin del 8254 con el Z80
Direcciones vlidas
para el 8254:
84h contador 0
85h contador 1
86H contador 2
87H r. control
Direcciones vlidas
para el 8254:
84h contador 0
85h contador 1
86H contador 2
87H r. control
Gate 1
Clock 1
Z80
Z80
Bus de Datos
Bus de Datos
CS
RD
WR
RD
WR
A0
A1
A0
A1
A2
A3
A4
A5
A6
A7
B
u
s

d
e

D
i
r
e
c
c
i
o
n
e
s

(
B
a
j
o
)
B
u
s

d
e

D
i
r
e
c
c
i
o
n
e
s

(
B
a
j
o
)
A
B
C
G1A
G1B
G2
74LS138
Y1=84H-87H
A3
A2
A6
A5
A4
A7
IORQ
Out 0
Gate 0
Clock 0
Out 1
Out 2
Gate 2
Clock 2
Contador 0
Contador 1
Contador 2
Timer
8254
IORD
IOWR
Direcciones vlidas
para el 8254:
84h contador 0
85h contador 1
86H contador 2
87H r. control
Direcciones vlidas
para el 8254:
84h contador 0
85h contador 1
86H contador 2
87H r. control
Gate 1
Clock 1
Z80
Z80
Bus de Datos
Bus de Datos
CS
RD
WR
RD
WR
A0
A1
A0
A1
A2
A3
A4
A5
A6
A7
B
u
s

d
e

D
i
r
e
c
c
i
o
n
e
s

(
B
a
j
o
)
B
u
s

d
e

D
i
r
e
c
c
i
o
n
e
s

(
B
a
j
o
)
A
B
C
G1A
G1B
G2
74LS138
Y1=84H-87H
A3
A2
A6
A5
A4
A7
IORQ
Out 0
Gate 0
Clock 0
Out 1
Out 2
Gate 2
Clock 2
Contador 0
Contador 1
Contador 2
Timer
8254
IORD
IOWR
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 98 -













Contador2
Contador2
Contador1
Contador1
Contador0
Contador0
Clk 1
Circuito
De reloj
del z80
Circuito
De reloj
del z80
Out 1
Encoder
Encoder
L293B
L293B
Z80
INT
Clk0
Gate0
Gate1
Out 0
PPI
8255
PPI
8255
TIMER 8254
Programado en modo 0 Programado en modo 0
Programado en modo 3 Programado en modo 3
No se usa
No se usa No se usa
Tono de 1khz
fclk =2Mhz
Start
PA.7
PB.0
PB.1
PC.0
Contador2
Contador2
Contador1
Contador1
Contador0
Contador0
Clk 1
Circuito
De reloj
del z80
Circuito
De reloj
del z80
Out 1
Encoder
Encoder
L293B
L293B
Z80
INT
Clk0
Gate0
Gate1
Out 0
PPI
8255
PPI
8255
TIMER 8254
Programado en modo 0 Programado en modo 0
Programado en modo 3 Programado en modo 3
No se usa
No se usa No se usa
Tono de 1khz
fclk =2Mhz
Start
PA.7
PB.0
PB.1
PC.0
Circuito de un sensor Circuito de un sensor ptico herradura para un encoder ptico herradura para un encoder
Motor
Motor Motor
CIRCUITO SUGERIDO PARA LIMPIAR LOS PULSOS
ENVIADOS POR EL ENCODER
+5V
CLK 0
CLK 0
220
10 k
7414
Al 8254
Motor
Motor Motor
Motor
Motor Motor
Motor
Motor Motor
CIRCUITO SUGERIDO PARA LIMPIAR LOS PULSOS
ENVIADOS POR EL ENCODER
+5V
CLK 0
CLK 0
220
10 k
+5V
CLK 0
CLK 0
220
10 k
7414
Al 8254
CIRCUITO DE CONTROL DE SENTIDO DE GIRO DE UN CIRCUITO DE CONTROL DE SENTIDO DE GIRO DE UN
MOTORES DE CD USANDO UN CI ( MOTORES DE CD USANDO UN CI ( ) L293 ) L293
L293B
VEN D C
+VCC=5v
+VS
M
8
16
2
1 7
6
3
L293B
VEN D C
+VCC=5v
+VS
M
8
16
2
1 7
6
3
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 99 -












Circuito para contar el n Circuito para contar el n mero de revoluciones de un motor de CD mero de revoluciones de un motor de CD
8254
8254
Motor de CD
10 k
220
Clk 0
L293
L293
PPI
8255
PPI
8255
Bus de Datos
Z80
Z80
Out 0
INT
gate0
+5v
8254
8254
Motor de CD
10 k
220
Clk 0
L293
L293
PPI
8255
PPI
8255
Bus de Datos
Z80
Z80
Out 0
INT
gate0
+5v
Diagrama de flujo que muestran las tareas a realizar por el
programa
Inicio
Inicio
Configurar
PPI
Configurar
PPI
Programar
El 8254
Programar
El 8254
Arranca motor
Arranca motor
Motor gir
1000 vueltas?
Out 0=alto?
Motor gir
1000 vueltas?
Out 0=alto?
Detener el
motor
Detener el
motor
iniciar pitido
Bocina a 1khz
iniciar pitido
Bocina a 1khz
Invertir giro
del motor
Invertir giro
del motor
Inicializar
El 8254
Inicializar
El 8254
Inicializar
El 8254
Inicializar
El 8254
Habilitar
Interrupciones.
en modo1
Habilitar
Interrupciones.
en modo1
Rehabilitar
Interrupciones.
Rehabilitar
Interrupciones.
No
Si
Ubica el
Stack
Ubica el
Stack
Si
Delay 1 seg
Delay 1 seg
Parar pitido
De bocina
Parar pitido
De bocina
RSI
RSI
RETI
RETI
CALL RSI
CALL RSI
Aqu Aqu el Z80 entra en un el Z80 entra en un
estado HALT hasta que ocurra estado HALT hasta que ocurra
la interrupci la interrupci n n
Inicio
Inicio
Configurar
PPI
Configurar
PPI
Programar
El 8254
Programar
El 8254
Arranca motor
Arranca motor
Motor gir
1000 vueltas?
Out 0=alto?
Motor gir
1000 vueltas?
Out 0=alto?
Detener el
motor
Detener el
motor
iniciar pitido
Bocina a 1khz
iniciar pitido
Bocina a 1khz
Invertir giro
del motor
Invertir giro
del motor
Inicializar
El 8254
Inicializar
El 8254
Inicializar
El 8254
Inicializar
El 8254
Habilitar
Interrupciones.
en modo1
Habilitar
Interrupciones.
en modo1
Rehabilitar
Interrupciones.
Rehabilitar
Interrupciones.
No
Si
Ubica el
Stack
Ubica el
Stack
Si
Delay 1 seg
Delay 1 seg
Parar pitido
De bocina
Parar pitido
De bocina
RSI
RSI
RETI
RETI
CALL RSI
CALL RSI
Aqu Aqu el Z80 entra en un el Z80 entra en un
estado HALT hasta que ocurra estado HALT hasta que ocurra
la interrupci la interrupci n n
Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 100 -
VS
A0
LAS DIRECCIONES SELECCIONADAS SON DE 84H A 87H
PB.1
INT
VCC
A1
PPI
8255
PRACTICA NUM.9
APLICACIONES DEL TIMER /CONTADOR 8254
A2
AL 8254
+5V
D1
Carlo
L293
2
7
10
15
1
9
3
6
11
14
16
8
1A
2A
3A
4A
1/2EN
3/4EN
1Y
2Y
3Y
4Y
VCC1
VCC2
A3
7414
1 2
A0
PPI
8255
A5
+5V
+5V
START
SPEAKER
D4
220
2N3904
3
2
1
A4
+5V
MOTOR CD
1 2
A1
A6
VCC
PA.7 D2
A2
2.7 K
A7
D3
IORD
A3
0
IOWR
7414
1 2
A4
8254
8
7
6
5
4
3
2
1
22
23
19
20
21
9
11
10
15
14
13
18
16
17
24
12
D0
D1
D2
D3
D4
D5
D6
D7
RD
WR
A0
A1
CS
CLK0
G0
OUT0
CLK1
G1
OUT1
CLK2
G2
OUT2
VCC
GND
84H-87H
0 X
+5V
4.7 K
A5
0
CIRCUITO DE
RELOJ DEL
Z80
PB.0
SENSOR PTICO
74LS138
1
2
3
6
4
5
15
14
13
12
11
10
9
7
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A6
BUS DE DIRECCIONES
0
10K
A7
1 X 1
BUS DE DATOS
PC.0

SUGERENCIA DIDCTICA:
1.- investigue como se usa el 8253/8254 en un IBM PC compatible.
a) Cul es el uso del timer 0, cul del timer 1 y cul del timer2?
b) Cules son las direcciones de los puertos de la PC con los que se tiene
acceso al 8254?
2.-Implemente un programa para generar los tonos musicales en la bocina en la
salida del timer 1 del 8254, tal que se le asigne a cada tecla del teclado matricial
un tono diferente (teclado musical).


Laboratorio de Microprocesadores EL TIMER 8254



M.C. Carlos E. Canto Quintal

- 101 -
REPORTE:
1.- Reporte el listado del programa LST o PRN (documentado) del control de
sentido de giro del motor de CD
2.-incluya en su reporte la investigacin de la sugerencia didctica
3.-el listado del programa de teclado musical con el 8254
4.- reporte sus conclusiones y comentarios respecto al desarrollo de esta
prctica

BIBLIOGRAFA:
Ramesh S. Gaonkar
Prentice Hall
The Z80 Microprocessor: Architecture, Interfacing,
Programming, and Design
Barry B. Brey
Prentice Hall
Los microprocesadores de Intel, Arquitectura, programacin e
interfases
TTL Data Book
TI
Manual de Zilog
Manual de National Semiconductor linear
Manual del L293
http://atc.ugr.es/docencia/udigital/index.html