Z80_APL

Páginas: 9 (2146 palabras) Publicado: 22 de octubre de 2015
 Ejemplos de Aplicación del Z80 CTC.–––––

Ejemplo No. 11:

Realizar el software y hardware para que cada 30 ms después de activarse un sensor se envie por el puerto 05 H una señal (activo alto) que indica que se activó el sensor, utilizándo una señal de reloj de f = 2MHz.

Solución:

Programando un canal del Z80-CTC en modo Timer:
––––––––––
Fsalida = Freloj / (cte. detiempo)(pre-escalador)]

==> Tsalida = (cte. de tiempo)(pre-escalador) / Freloj

Cte. de Tiempo = (Tsalida)(Freloj) / pre-escalador = (30 x 10-3)(2x106) / 256

Cte. de Tiempo = 234.37

Cte. de Tiempo » 234


Utilizándo el siguiente mapeo de puertos, se propone el hardware de la figura No. 43:



A7
A6
A5
A4
A3
A2
A1
A0
Canal 0 ==> F0 H
1
1
1
10
0
0
0
Canal 1 ==> F1 H
1
1
1
1
0
0
0
1
Canal 2 ==> F2 H
1
1
1
1
0
0
1
0
Canal 3 ==> F3 H
1
1
1
1
0
0
1
1

Programa:

CANAL_0: EQU 0F0H ;Definición de parámetros y P_CONT: EQU 0BDH ;constantes.
CONSTE: EQU 234H
VECTOR: EQU 20H

;Programa Principal:

ORG 0000H

IM 2 ;Programa Z80 en Modo 2 de Interupción
LD A,10H ;Cargaal Reg. I con la parte alta
LD I,A ;de la tabla de direcciones de
;rutinas de atención.
LD A,P_CONT ;Programa Canal 0 del CTC en Modo Timer
OUT (CANAL_0),A ;Habilita interrupciones y preescalar de 256.
LD A,VECTOR ;Envía al Canal 0 el vector de interrupción = 20 H
EI ;Habilita interrupciones
ESPERA: HALT ;Espera Interrupción
JR ESPERA

;Define la dirección de larutina de atención:

ORG 1020H

DB 00H,30H

;Rutina de Atención a la Interrupción:

ORG 3000H

LD A,0FFH ;Envía activo alto al puerto 05 para
OUT (5),A ;indicar que se activó sensor.
EI ;Vuelve a habilitar interrupciones RETI y regresa ;al programa principal.

Ejemplo No. 12:

Realizar el software y hardware para interfazar una CPU Z80 con una terminal serie, de formatal que el Z80 estará enviando a la terminal el valor leído de tres interrupciones a 3 indicadores ("LED'S") cada 2 segundos.

Se utilizará un USART 8251 transmitiendo a una velocidad de 1200 bps, usando un factor de baud-rate de x 16.

Las señales de reloj TxC y RxC se generan con un Z80-CTC que dispone de una señal de reloj del sistema de 4 MHz.

Solución:

Velocidad de Transmisión = TxC /Factor de baud-rate

==> TxC = (1200 bps) x 16 = 19.2 KHz

Además se requiere una interrupción cada 2 segundos. Entonces si utilizamos un sólo canal del CTC programando en Modo Counter obtenemos:

Fsalida = Fentrada / Cte. de tiempo ==> Tsalida = Cte. de tiempo / Fentrada

Máximo se podrá obtener un período de:

Tmáximo = 256 / 4 x 106 = 64 microsegundos

Por lo que vemos que con unsólo canal no es suficiente. Ahora, utilizándo dos canales programados en Modo Counter conectados en cascada:

Tmáximo = 2562 / 4 x 106= 0.016384 segs.

Que tampoco es suficiente. Por otra parte, si programamos un canal en Modo Timer, el período máximo que se obtiene será:

Fsalida = Freloj / (Cte. de tiempo)(pre-escalador)

==> Tsalida = (Cte. de tiempo)(pre-escalador) / FrelojTsalida máx. = 2562 / 4 x 106 = 0.016384 segs.

Y ahora el canal anterior se conecta en cascada con otro programado en Modo Counter para obtener:

Cte. de Tiempo = (Tsalida)(Fentrada) / Tentrada = Tsalida

Cte. de Tiempo = 2 segs. / 0.016384 seg. = 122.07 » 122

Para generar TxC = 19.2 KHz a partir de 4 MHz podemos utilizar un canal del CTC programado en Modo Counter:

Fsalida =Fentrada / Cte. de tiempo

Cte. de Tiempo = Fentrada / Fsalida = 4 x 106 / 19.2 x 103 = 208.33


Hardware:

Mapeo de puertos utilizándo:

Reg. Datos 8251 00 H
Reg. de Control 8251 01 H
Puerto de Entrada para los 3 interruptores 02 H
Puerto de salida para los 3 indicadores 03 H
Canal 0 CTC 04 H
Canal 1 CTC 05 H
Canal 2 CTC 06 H...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS