Timer intel 8254 Contenido del chip: • 3 timers de 16 bits independientes, programables (6 modos), conteo en binario o BCD. Terminales y diagrama de bloques: Timer intel 8254 Acceso a los contadores y registros: A1 A0 Selección: 0 0 1 1 counter 0 counter 1 counter 2 control register 0 1 0 1 Formato de la palabra de control: Timer intel 8254 Modos de funcionamiento: Timer intel 8254 Función de la entrada GATE para cada modo: Timer intel 8254 Pasos a seguir para inicializar un contador: Ejemplo de conexionado: 1) Escribir una palabra de control en el registro de control. 2) Cargar el byte bajo de la cuenta en el registro contador. 3) Cargar el byte alto de la cuenta en el registro contador. Ejemplo: “obtener una onda cuadrada de 120Hz” f0= 2MHz 2MHz / 120Hz = 16666,66… N = 16667 = 411Bh Palabra de control para inicializar el contador 2: 7 6 5 4 3 2 1 START: 0 1 0 1 1 0 1 1 0 binario modo 2 byte bajo, luego alto contador 2 MVI OUT A,B6h 83h ; palabra de control MVI OUT A,1Bh 82h ; parte baja de N MVI OUT A,41h 82h ; parte alta de N HLT Timer intel 8254 Ejercicio: Haciendo uso del timer 8254 y de la salida Clock Out del 8085 (cristal de 4MHz), generar una interrupción cada 10 ms, por la entrada rst7.5 del micro. SDK-85: mainboard SDK-85: mapas Mapa de memoria: FFFF 3400 33FF 3000 2FFF 2800 27FF 2100 20FF 2000 1FFF 1800 17FF 1000 0FFF 0800 07FF 0000 Mapa de I/O: Port Función 20 Command/Status register 21 Port A 22 Port B RAM (2114) (1K) 23 Port C 24 Low order byte – Timer Count Libre 25 High order byte – Timer Count . . . . . Repetición de la RAM (8155) RAM (8155) (256) Keyboard/ Display (8279) Libre Zócalo Expansión (2K) ROM (2K) (Programa Monitor) SDK-85: Programa Monitor (ROM) Que nos permite hacer: • Examinar el contenido de cualquier posición de memoria y de los registros • Modificar el contenido de la memoria y de los registros • Ejecutar programas o subrutinas a partir de una direción determinada • Ejecutar paso a paso un programa • Resetear Además, en la ROM existen una serie de subrutinas útiles (documentadas) que están a disposición del programador para el manejo (indirecto) del display, teclado, etc. Dirección Nombre Descripción Registros afectados 05F1h DELAY Toma el contenido del registro par DE y cuenta descendente hasta llegar a cero antes de retornar. A,D,E,flags 02E7h RDKBD Espera hasta que un caracter es entrado por el teclado hexadecimal devolviendo su valor en el registro A. Nota: para que esta rutina funcione se debe desenmascarar primero la interrupción RST 5.5 por medio de la instrucción SIM. A,H,L,flags 0363h UPDAD El contenido del registro par DE es mostrado en hexadecimal en el campo de direcciones del display. all 036Eh UPDDT El contenido del registro A es mostrado en hexadecimal en el campo de datos del display. all SDK-85: Protoboard Conexionado de la protoboard con el chip 8155: 1 2 3 4 5 6 7 8 9 10 11 12 +5V PA1 PA3 PA5 PA7 PB1 PB3 PB5 PB7 PC0 PC1 PC2 24 23 22 21 20 19 18 17 16 15 14 13 MASA PA0 PA2 PA4 PA6 PB0 PB2 PB4 PB6 PC5 PC4 PC3 SDK-85: Ejercicios Ej. 1: “desensamblar” la subrutina DELAY y calcular los tiempos de retardo. Ej. 2: realizar un programa que incremente un contador cada medio segundo y muestre el valor en el campo de datos del display. Tabla rápida de instrucciones: SDK-85: vista completa SDK-85: placa principal SDK-85: placa de display/teclado (8279)