guía de referencia rápida 80186 · 2.3.6 interrupciones de manipulación de bits 18/08/2005 23 de...

42
Guía de referencia rápida 80186 Departamento de Sistemas e Informática Escuela de Electrónica Facultad de Cs. Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario Ing Esteban Almirón Ing. Andrés Capalbo Ing. José Luis Pepe Agosto 2005

Upload: others

Post on 29-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Guía de referencia rápida 80186

Departamento de Sistemas e Informática

Escuela de Electrónica

Facultad de Cs. Exactas, Ingeniería y Agrimensura

Universidad Nacional de Rosario

Ing Esteban Almirón Ing. Andrés Capalbo Ing. José Luis Pepe

Agosto 2005

Page 2: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Tabla de contenidos 1 Registro de FLAGS....................................................................................................................... 3 2 Set de Instrucciones..................................................................................................................... 3

2.1 Formato de las variables de las instrucciones....................................................................... 3 2.2 Tipo de operandos utilizados en las instrucciones ................................................................ 4 2.3 Set de instrucciones............................................................................................................... 4

2.3.1 Instrucciones de Transferencias ................................................................................... 4 2.3.2 Instrucciones Matemáticas............................................................................................ 8 2.3.3 Instrucciones de transferencia .................................................................................... 16 2.3.4 Control de iteraciones ................................................................................................. 21 2.3.5 Interrupciones.............................................................................................................. 23 2.3.6 Interrupciones de manipulación de bits....................................................................... 23 2.3.7 Instrucciones de control de procesos.......................................................................... 28

3 Unidad de Interfaces del Bus (BIU)........................................................................................... 29 3.1 Ciclo de bus (BC) ................................................................................................................. 30 3.2 Ciclo de lectura .................................................................................................................... 32 3.3 Ciclo de escritura ................................................................................................................. 33

4 Block de Control de Periféricos (PCB) ..................................................................................... 33 4.1 Registro de reubicación de la PCB ...................................................................................... 33

5 Registros de la CSU.................................................................................................................... 35 5.1 Definición del Registro START ............................................................................................ 35 5.2 Definición del Registro STOP .............................................................................................. 35

6 Unidad Controladora de Interrupciones (ICU) ......................................................................... 36 6.1 Esquema de prioridades ...................................................................................................... 36 6.2 Arquitectura del 8259A......................................................................................................... 37 6.3 Programación del módulo 8259A......................................................................................... 37

7 Unidad Temporizadora y de Contadores ................................................................................. 38 7.1 Esquema general de la unidad ............................................................................................ 38 7.2 Diagrama operacional .......................................................................................................... 38 7.3 Registros asociados a la unidad temporizadora y contadora .............................................. 40

7.3.1 Registros de control de Timer 0 y Timer 1 .................................................................. 40 7.3.2 Registro de control de Timer 2 .................................................................................... 41 7.3.3 Registros de cuenta de los timers ............................................................................... 42 7.3.4 Registros de comparación de cuenta máxima ............................................................ 42

18/08/2005 2 de 42

Page 3: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

1 Registro de FLAGS Nombre del Registro: Palabra de estado del procesador (Processor Status Word) Mnemónico del Registro: PSW (Flags) Función del Registro: Da información del estado del CPU

Mnemónico del Bit

Nombre del Bit

Estado de Reset Función

OF Flag de Overelow

0 Si OF = 1, entonces ocurrió un overflow aritmético.

DF Flag de dirección

0 Si DF = 1, entonces los strings de insrucciones se procesan desde las direcciones altas a las direcciones bajas. Si DF = 0, entonces los strings se procesan desde las direcciones bajas hacia las altas.

IF Flag de interrupción habilitada

0 Si IF = 1, entonces la CPU reconoce solicitudes enmascarables de interrupción. Si está en cero, ignora las solicitudes de interrupción.

TF Trap Flag 0 Si TF = 1, entonces el CPU entra en modo single-step para el depurar programas instrucción por instrucción.

SF Flag de Signo

0 Si SF = 1, entonces el bit más significativo del resultado de una operación resultó en 1 y esto indica que el resultado es negativo.

ZF Flag de cero

0 Si ZF = 1, el resultado de una operación es cero.

AF Flag Auxiliar

0 Si AF = 1, entonces ocurrió un carry desde un nibble (medio byte, 4 bits) bajo a un nibble alto o un borrow desde un nibble alto a uno bajo de una cantidad de 8 bits. Este flan se utiliza en operaciones con BCD.

PF Flag de paridad

0 Si CF = 1, entonces el resultado de una operación tiene paridad par.

CF Flag de Carry

0 Si CF = 1, entonces ocurrió un carry hacia, o un borrow desde el bit más significativo en el resultado de una instrucción.

Nota: Los bits reservados que se muestran en gris deberán setearse con ceros lógicos para asegurar la compatibilidad con productos futuros.

2 Set de Instrucciones

2.1 Formato de las variables de las instrucciones

dest Registro o posición de memoria que puede contener un dato u operando en una instrucción, además recibe (es reemplazada por) el resultado de la operación.

src Registro, posición de memoria o un valor inmediato que se utiliza en la operación pero no cambia luego de ejecutarse la instrucción.

target Etiqueta a la cual se le pasará el control de programa directamente, o registro o posición de memoria que representa la dirección en la memoria de programa a la cual se pasará el control indirectamente.

disp8 Es una etiqueta a la cual se transferirá el control de manera condicionada, su valor estará comprendido entre los -128 y 127 bytes del primer byte de la próxima instrucción.

acum Es el registro AX o AL ya se que se trate de transferencias tipo word o byte respectivamente.

port Es el número de puerto de E/S, se especifica mediante un inmediato entre 0 y 255, o mediante el registro DX (que contiene el número de puerto entre 1 – 64K)

count Especifica el número de bits que se desplazarán (shift) o rotarán; expresado mediante un inmediato o el registro CL (con un número dentro del rengo 0-255).

18/08/2005 3 de 42

Page 4: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.2 Tipo de operandos utilizados en las instrucciones

reg Uno de los registros de 8 o 16 bits de uso general

reg16 Uno de los registros de 16 bits de uso general

seg-reg Un registro de segmento

accum El registro AX o AL

immed Una constante en el rango 0 – FFFFh

immed8 Una constante en el rango 0 – FFh

mem Una dirección de memoria de 8 o 16 bits

mem16 Una dirección de memoria de 16 bits

mem32 Una dirección de memoria de 32 bits

short-label Una etiqueta comprendida entre -128 y 127 bytes del final de la instrucción

near-label Una etiqueta dentro del mismo segmento de código

far-label Una etiqueta en otro segmento de código

near-proc Un procedimiento en el mismo segmento de código

far-proc Un procedimiento en otro segmento de código

memptr16 Un word que contiene el offset de la dirección a la cual se le transferirá el control dentro del mismo segmento de código

memptr32 Un doble word que contiene la dirección mediante offset y segmento base a la cual se transferirá el control del programa en otro segmento de código.

regptr16 Uno de los registros de 16 bits de uso general que contiene el offset de la dirección dentro del mismo segmento de código a la cual se transferirá el control del programa

2.3 Set de instrucciones

2.3.1 Instrucciones de Transferencias

18/08/2005 4 de 42

Page 5: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 5 de 42

Page 6: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 6 de 42

Page 7: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 7 de 42

Page 8: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.2 Instrucciones Matemáticas

2.3.2.1 Adición

18/08/2005 8 de 42

Page 9: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.2.2 Substracción

18/08/2005 9 de 42

Page 10: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 10 de 42

Page 11: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 11 de 42

Page 12: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.2.3 Multiplicación

18/08/2005 12 de 42

Page 13: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 13 de 42

Page 14: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.2.4 División

18/08/2005 14 de 42

Page 15: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 15 de 42

Page 16: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.3 Instrucciones de transferencia

2.3.3.1 Transferencias condicionales

18/08/2005 16 de 42

Page 17: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 17 de 42

Page 18: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 18 de 42

Page 19: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 19 de 42

Page 20: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.3.2 Interpretación de los códigos de transferencias condicionales

2.3.3.3 Transferencias incondicionales

18/08/2005 20 de 42

Page 21: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.4 Control de iteraciones

18/08/2005 21 de 42

Page 22: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 22 de 42

Page 23: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.5 Interrupciones

2.3.6 Interrupciones de manipulación de bits

18/08/2005 23 de 42

Page 24: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 24 de 42

Page 25: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 25 de 42

Page 26: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 26 de 42

Page 27: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

18/08/2005 27 de 42

Page 28: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.7 Instrucciones de control de procesos

2.3.7.1 Operaciones con flags

18/08/2005 28 de 42

Page 29: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

2.3.7.2 Operaciones de sincronización externa

2.3.7.3 No operación

3 Unidad de Interfaces del Bus (BIU) Esta unidad es la encargada de cargar instrucciones en la cola de pre-carga y transferir datos hacia (y desde) la unidad de control y hacia (y desde) las unidades periféricas incluidas las memorias.

Para cada transferencia la BIU generará un “BUS CYCLE” (BC).

Al comienzo de un BC se presenta la dirección, el espacio de direcciones de que se trate (memoria o E/S) y el estado que indica el tipo de BC. A continuación se define la dirección de la transferencia (read o write) y luego se registra la información leída o se renueva la información grabada.

Los micros 80x86 multiplexan en el tiempo el comportamiento de un único bus de 20 bits de forma tal que en un momento se comportan como bus de direcciones y en otro (usando solo los 8 o 16 bits menos representativos) como bus de datos.

18/08/2005 29 de 42

Page 30: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Por razones de compatibilidad con equipos que manejan 8 bits el espacio de direcciones de memoria se considera compuesto por dos bancos de 512 KBytes cada uno, los cuales responden a direcciones pares e impares respectivamente. El bit de dirección menos significativo A0 determina si una dirección es par o impar. Un bit de control llamado BHE (Byte High Enable) determina si se desea leer o no los 8 bits más representativos del dato de 16. La figura muestra el circuito utilizado:

FFFFF

135

FFFFE

024

A19:1 D15:8 D7:0BHE A0

Enable

A0 BHE Transferencia de:

0 0 Una palabra

0 1 Un byte par

1 0 Un byte impar

1 1 Utilizado únicamente en memorias dinámicas Si se solicita un Byte en una dirección par este se transfiere en los bits D7:0 Si se solicita un Byte en una dirección impar este se transfiere en los bits D15:8. El BIU se encargará de realizar los ajustes que sean necesarios. Si se solicita una palabra en una dirección par esta se transfiere en un único BC en los bits D15:0. Si se solicita una palabra en una dirección impar la BIU necesitará dos BC. En el primer ciclo se obtiene un byte en D15:8 y luego se incrementa la dirección en 1 y se lee el segunda byte en D7:0. La BIU desencadena automáticamente los dos BC.

3.1 Ciclo de bus (BC) La figura siguiente muestra un ciclo de bus típico:

18/08/2005 30 de 42

Page 31: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Señales: ALE (Address Latch Enable): la transición de esta señal de 1 a 0 indica el momento correcto

para tomar una dirección válida del bus de direcciones. Es una señal que entrega el micro y generalmente se usa como STROBE en el latch de direcciones.

S2:0 (Status Signals): Son tres bits que entrega el micro para indicar el tipo de BC que se está ejecutando.

Bits de status

S2 S1 S0 Tipo de BC

0 0 0 Interrupción

0 0 1 Lectura en E/S

0 1 0 Escritura en E/S

0 1 1 Procesador detenido (Halt)

1 0 0 Carga de una instrucción en la cola de pre-carga

1 0 1 Lectura en memoria

1 1 0 Escritura en memoria

1 1 1 Bus no activo

AD15:0 – A19:16: Bus de datos y direcciones multiplexado en el tiempo. RD/WR (Read/Write): Define el sentido de transferencia de los datos.

La figura siguiente muestra la definición de los tiempos claves de la fase de direcciones y estado de un ciclo de bus:

La figura siguiente muestra la relación de tiempo entre señales para la fase de datos del ciclo de bus:

18/08/2005 31 de 42

Page 32: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

3.2 Ciclo de lectura La secuencia que implementa el micro para un ciclo de este tipo es:

1º) Presenta una dirección válida en el bus 2º) Selecciona el chip 3º) Activa la señal RD

Definición de tiempos del dispositivo periférico (ej. memoria): Tglqv = Toe: tiempo máximo entre la presentación de la señal de lectura RD (micro) y datos

disponibles (dispositivo). Telqv = Tac: tiempo máximo entre la presentación de la señal de selección de chip CS

(micro) y datos disponibles (dispositivo). Tavqv = Taa: tiempo máximo entre la presentación de una dirección válida (micro) y datos

disponibles (dispositivo). Tghq = Tohz: Tiempo máximo que el dispositivo puede demorar en retirar los datos del bus

luego de una lectura (RD desactivada) Para asegurar la correcta compatibilidad temporal entre el micro y el dispositivo se deberán satisfacer las siguientes inecuaciones:

Toe < 2T – Tclov – Tclis Tac < 3T – Tcliv – Tclis Taa < 3T – Tclov – Tclis – Tadlt Tohz < Trhax

Tclov: Tiempo que las señales del micro demoran entre el flanco de clock que las activa y el momento en el que alcanzan el estado de activación.

Tclis: Tiempo que el micro requiere entre el momento que se presentan datos validos en el bus y el momento en el que se toman dichos datos.

Tadlt: Tiempo adicional que transcurre entre la presencia de direcciones validas en el bus y el momento en que dichas direcciones están disponibles a la salida del latch. Este tiempo debe incluir Tavll (tiempo entre direcciones validas y caída de ALE y el tiempo de conmutación del latch).

18/08/2005 32 de 42

Page 33: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Trhax: Tiempo mínimo que el micro deja transcurrir entre que se desactiva la señal RD y la presentación en el bus de una nueva dirección. Puede calcularse como T–TclovMAX+TclovMIN pues RD se desactiva al final de T3 y la nueva dirección estará disponible al final de T4.

3.3 Ciclo de escritura La secuencia que implementa el micro es:

1º) Presentación de una dirección válida en el bus. 2º) Selección del dispositivo correspondiente activando la señal CS. 3º) Activación de la señal WR. 4º) Presentación de los datos en el bus. 5º) La señal WR es desactivada.

Definición de tiempos del dispositivo periférico (ej. memoria): Twc = Telwh tiempo mínimo entre un ciclo de grabado y el siguiente. Taw = Tavwh tiempo mínimo entre la presentación de una dirección válida y la grabación del dato

que se realiza cuando se desactiva WR. Tcw = Telwh tiempo mínimo que se requiere entre la activación de CS y la desactivación de WR. Tah = Twhax tiempo mínimo que debe permanecer la dirección valida luego de desactivar WR. Tdw = Tdvwh tiempo mínimo que debe presentarse el dato antes de grabar desactivando WR. Tdh = Twhdx tiempo mínimo que debe permanecer el dato valido luego de desactivar WR. Twp = Twlwh tiempo mínimo que debe permanecer WR activado.

Para asegurar la correcta compatibilidad temporal entre el micro y el dispositivo se deberán satisfacer las siguientes inecuaciones:

Twc < 4T Taw (Tavwh) < 3T- Tadltch Tcw (Telwh) < 3T Tah (Twhax del periférico) < Twhlh del micro Tdw (Tdvwh) < 2T Tdh (Twhdx del periférico) < Twhdx del micro Twp (Twlwh del periférico) < Twlwh del micro

4 Block de Control de Periféricos (PCB)

4.1 Registro de reubicación de la PCB Nombre del Registro: Registro de reubicación de la PCB Mnemónico del Registro: RELREG Función del Registro: Permite reubicar la PCB ya sea en el espacio de memoria o

de E/S

Mnemónico

del Bit Nombre del

Bit Estado

de Reset Función

ET Escape Trap 0 Este bit controla el acceso al coprocesador matemático. Si ET = 1, el CPU generará una interrupción (tipo 7) cuando se esté ejecutando una instrucción ESC.

MEM Memoria o E/S 0 Este bit especifica la ubicación de la PCB. Con MEM = 1 la PCB se ubicará en el espacio de memoria y con MEM = 0 en el espacio de E/S.

R19:8 Dirección de comienzo de la

0FFh R19:8 representan los bits más significativos de la dirección base de la PCB. Los bits menos significativos son cero. Cuando la PCB

18/08/2005 33 de 42

Page 34: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

PCB se mapea en el espacio de E/S los bits R19:16 se ignoran.

Los registros de control y de status de cada uno de los periféricos integrados se encuentran maperados en una posición fija dada por un offset a partir de la dirección base de la PCB. Ver tabla siguiente:

Registro Offset en la PCB Registro Offset en la

PCB Registro Offset en la PCB

Interrup. MASTER y SLAVE Port2 Refresco de Mem. y Alimentación

MPICP0 00h P2DIR 58h RFBASE B0h MPICP1 02h P2PIN 5Ah RFTIME B2h SPICP0 04h P2CON 5Ch RFCON B4h SPICP1 06hh P2LTCH 5Eh RFADDR B6h Reserved 08h Entrada y Salida Serie PWRCON B8h Interrup.Request Latch Reg. Canal 0 Reserved BAh SCUIRL 0Ah B0CMP 60h STEPID BCh DMAIRL 0Ch B0CNT 62h PWRSAV BEh

TIMIRL 0Eh B0CNT 64h Acceso Directo a Memoria

Reserved 10h S0STS 66h Canal 0 Reserved 12h S0RBUF 68h D0SRCL C0h Reserved 14h S0TBUF 6Ah D0SRCH C2h Reserved 16h Reserved 6Ch D0DSTL C4h Reserved 18h Reserved 6Eh D0DSTH C6h Reserved 1Ah Canal 1 D0TC C8h Reserved 1Ch B1CMP 70h D0CON CAh Reserved 1Eh B1CNT 72h Generales Watch Dog Registers S1CON 74h DMAPRI CCh WDTRLDH 20h S1STS 76h DMAHALT CEh WDTRLDL 22h S1RBUF 78h Canal 1 WDTCNTH 24h S1TBUF 7Ah D1SRCL D0h WDTCNTL 26h Reserved 7Ch D1SRCH D2h WDTCLR 28h Reserved 7Eh D1DSTL D4h WDTDIS 2Ah Selección de Chips D1DSTH D6h Reserved 2Ch Chips 0 a 7 D1TC D8h Reserved 2Eh GCS0ST 80h D1CON DAh TIMER0 Registers GCS0SP 82h Reserved DCh T0CNT 30h GCS1ST 84h Reserved DEh T0CMPA 32h GCS1SP 86h Canal 2 T0CMPB 34h GCS2ST 86h D2SRCL E0h T0CON 36h GCS2SP 8Ah D2SRCH E2h TIMER1 Registers GCS3ST 8Ch D2DSTL E4h T1CNT 38h GCS3SP 8Eh D2DSTH E6h T1CMPA 3Ah GCS4ST 90h D2TC E8h T1CMPB 3Ch GCS4SP 92h D2CON EAh T1CON 3Eh GCS5ST 94h Reserved ECh TIMER2 Registers GCS5SP 96h Reserved EEh T2CNT 40h GCS6ST 98h Canal 3 T2CMPA 42h GCS6SP 9Ah D3SRCL F0h Reserved 44h GCS7ST 9Ch D3SRCH F2h T2CON 46h GCS7SP 9Eh D3DSTL F4h Entrada Salida Paralelo Chip en Direccion Baja D3DSTH F6h Port3 LCSST A0h D3TC F8h P3DIR 48h LCSSP A2h D3CON FAh P3PIN 4Ah Chip en Direccion Alta Reserved FCh P3CON 4Ch UCSST A4h Reserved FEh P3LTCH 4Eh UCSSP A6h

Port1 Registro de Reub. de la PCB

P1DIR 50h RELREG A8h P1PIN 52h Reserved AAh P1CON 54h Reserved ACh P1LTCH 56h Reserved AEh

18/08/2005 34 de 42

Page 35: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

5 Registros de la CSU

5.1 Definición del Registro START Nombre del Registro: Chip-Select Start Register Mnemónico del Registro: UCSST, LCSST, GCSxST (x=0-7) Función del Registro: Especifica la dirección de comienzo del espacio mapeado y el

número de wait states.

Mnemónico del Bit

Nombre del Bit

Estado de Reset Función

CS9:0 Dirección de comienzo

3FFh Especifica la dirección de comienzo para el chip-select. Los bits CS9:0 se comparan la dirección A19:10 (para operaciones en espacio de memoria) o con A15:6 (para operaciones en el espacio de E/S). Si esta dirección resulta igual o mayor se activará el chip-select.

WS3:0 Cantidad de Wait States

0Fh Estos bits definen el número mínimo de Wait States insertados durante el ciclo de bus. Si se especifica el valor cero no se insertarán WS. Wait states adicionales a los especificados mediante estos bits se podrán insertar, en el ciclo de bus, a partir de la señal RDY.

Nota: Los bits reservados que se muestran en gris deberán setearse con ceros lógicos para asegurar la compatibilidad con productos futuros.

El registro START de cada unidad selectora de chip define la dirección de comienzo del espacio mapeado y la cantidad de wait states que se insertan en todo ciclo de bus que se genere para el dispositivo en cuestión. El valor de la dirección que contiene este registro se compara con los diez bits más significativos de la dirección presentada durante el ciclo de bus. Si el valor que representan los diez bits más significativos de la dirección presente durante un ciclo de bus son igual o mayor que la dirección de comienzo contenida en el registro START, entonces esto causará la activación de la señal de chip select. Al configurar la CSU no se puede especificar cualquier dirección de comienzo mediante este registro. Para el espacio de memoria las posibles direcciones de arranque del espacio mapeado sólo podrán ser múltiplo de 1Kbyte y para el espacio de E/S sólo podrán se múltiplo de 64bytes. Las ecuaciones siguientes permiten obtener la dirección física para un dado valor del registro START:

Para el acceso al espacio de memoria: Valor de comienzo (Decimal) × 1024 = Dirección física de comienzo (Decimal)

Para el acceso al espacio de E/S: Valor de comienzo (Decimal) x 64 = Dirección física de comienzo (Decimal)

5.2 Definición del Registro STOP Nombre del Registro: Chip-Select Stop Register Mnemónico del Registro: UCSSP, LCSSP, GCSxSP (x=0-7) Función del Registro: Especifica la dirección de stop del chip-select y otras

funciones de control.

18/08/2005 35 de 42

Page 36: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Mnemónico

del Bit Nombre del

Bit Estado

de Reset Función

CS9:0 Dirección de fin

3FFh Especifica la dirección de fin para el chip-select. Los bits CS9:0 se comparan la dirección A19:10 (para operaciones en espacio de memoria) o con A15:6 (para operaciones en el espacio de E/S). Una comparación en menor resultará en la activación del chip-select. Los bits CS9:0 se ignorarán si el bit ISTOP está seteado en uno.

CSEN Habilita el chip-select

0 (Nota)

Deshabilita el chip-select si está en cero, en consecuencia con CSEN en uno se habilita el chip-select.

ISTOP Ignora la dirección de stop

0 (Nota)

Con este bit en uno se ignora el chequeo de la dirección de stop, lo cual setea automáticamente la dirección de fin en 0FFFFFh (memoria) o 0FFFFh (E/S). En caso de que ISTOP esté en cero se deberá especificar la dirección de stop.

MEM Selector de ciclo de bus

1 Cuando MEM se setea en uno, el chip select se activará para ciclos de bus de memoria. El bit MEM especifica cuáles bits de la dirección se utilizarán para la comparación con la dirección de start y stop. Cuando MEM está en cero, se utilizan los bits A15:6 para la comparación y cuando MEM está en uno se utilizan los bits A19:10.

RDY Habilita el Bus Ready

1 Con RDY en uno se requerirá que la señal bus ready esté activada para finalizar el ciclo de bus. La señal bus ready se ignorará si RDY se encuentra en cero. Deberá setearse RDY en uno para extender la cantidad de waits states más allá de los especificados por WS3:0.

Nota: Los bits reservados que se muestran en gris deberán setearse con ceros lógicos para asegurar la compatibilidad con productos futuros. El estado de reset de CSEN y de ISTOP es ‘1’ para el registro UCSSP.

El registro STOP de cada unidad selectora de chip define la dirección donde termina el espacio mapeado y las variables de control CSEN, ISTOP, MEM y RDY. El valor de la dirección que contiene este registro se compara con los diez bits más significativos de la dirección presentada durante el ciclo de bus. Si el valor que representan los diez bits más significativos de la dirección presente durante un ciclo de bus es menor que la dirección de fin del dispositivo mapeado contenida en el registro STOP, entonces esto causará la activación de la señal de chip select. Al configurar la CSU no se puede especificar cualquier dirección de fin mediante este registro. Para el espacio de memoria las posibles direcciones de fin del espacio mapeado sólo podrán ser múltiplo de 1Kbyte y para el espacio de E/S sólo podrán se múltiplo de 64bytes. Las ecuaciones siguientes permiten obtener la dirección física para un dado valor del registro STOP:

Para el acceso al espacio de memoria: [Valor de fin (Decimal) × 1024] – 1 = Dirección física de fin (Decimal)

Para el acceso al espacio de E/S: [Valor de fin (Decimal) x 64] – 1 = Dirección física de fin (Decimal)

6 Unidad Controladora de Interrupciones (ICU)

6.1 Esquema de prioridades Existen algunos esquemas de prioridades que, debido a su uso frecuente, tienen nombre propio:

Fully Nested: En este esquema cuando se atiende una interrupción automáticamente se enmascaran todas aquellas de igual o menor prioridad. Dicho en otras palabras una rutina de servicio podrá ser interrumpida, para atender otra interrupción, sólo si esta es de mayor prioridad. Nunca una rutina de servicio podrá ser interrumpida para atender una interrupción de menor o igual prioridad.

Special Fully Nested: Es similar al anterior pero el igual cambia de lugar. Una rutina de servicio puede ser interrumpida sólo para atender a otra interrupción de igual o mayor prioridad. Este esquema requiere especial atención para no caer en un círculo reiterativo. Producida una interrupción se inicia su rutina de servicio y esta podría ser interrumpida inmediatamente por su misma señal de interrupción.

Special Mask Mode: Este esquema responde a un modelo libre. El sistema provee la posibilidad de enmascarar o no libremente cualquiera de las interrupciones vía programación.

18/08/2005 36 de 42

Page 37: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

6.2 Arquitectura del 8259A El 8259A está compuesto por varios bloques funcionales:

El bloque data bus buffer y R/D logic constituye la interface entre el 8259A y la CPU. Este bloque es el que coloca el tipo de interrupción en el bus durante el INTA cycle.

Los requerimientos de interrupciones pendientes son almacenados en el Interrupt Request Register. Este registro contiene un bit por cada una de las 8 señales de interrupción IRx. El 8259A puede programarse para reconocer una interrupción a partir de un nivel alto o una transición de cero a uno.

El Priority Resolver decide cual de las interrupciones pendientes es la de prioridad más alta en base al modo de operación que se haya programado y el esquema de prioridades vigente y manejará en consecuencia la salida INT.

El Interrupt Service Register almacena para cada interrupción un bit que indica si la correspondiente interrupción está siendo atendida. Esto le permite al Priority Resolver conoces si una interrupción mas prioritaria está siendo atendida cuando llega una nueva. La rutina de servicio debe explícitamente borrar el bit correspondiente in el Interrupt Service Register antes de devolver el control al programa principal.

El Interrupt Mask Register contiene un bit por cada señal de interrupción (IR0 a IR7) y permite habilitar o inhabilitar la señal correspondiente.

Diagrama en bloques del 8259A

6.3 Programación del módulo 8259A El conjunto de registros de comandos que controlan al 8259A se divide en dos grupos: Initialization Command Words (ICW) y Operation Command Words (OCW). Los ICWs se programan generalmente una única vez durante la inicialización del sistema, mientras que los OCWs se programan en distintos momentos durante la ejecución de un programa. Todos los registros se acceden a través de sólo dos registros ubicados en la PCB. En nuestro caso, el 80186 posee dos módulos 8259A, con lo cual en la PCB existen dos juegos de registros de control. Estos registros se encuentran bajo el nombre de MPICP0, MPICP1, SPICP0 y SPICP1 (dónde M y S se refieren a Master y Slave respectivamente).

18/08/2005 37 de 42

Page 38: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

7 Unidad Temporizadora y de Contadores

7.1 Esquema general de la unidad

Diagrama en bloques de la unidad temporizadota/contadora

7.2 Diagrama operacional El diagrama de flujo que sigue muestra la actividad desarrollada tanto para TIMER0 como para TIMER1 cada vez que el TIMER correspondiente sea servido. En primer lugar se determina si el valor corriente debe ser o no incrementado.

18/08/2005 38 de 42

Page 39: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Diagrama de flujo asociado a los timers 0 y 1

18/08/2005 39 de 42

Page 40: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Diagrama de flujo asociado a los timers 0 y 1 (cont.)

7.3 Registros asociados a la unidad temporizadora y contadora

7.3.1 Registros de control de Timer 0 y Timer 1 Nombre del Registro: Registros de control Timers 0 y 1 Mnemónico del Registro: T0CON, T1CON Función del Registro: Definen el modo de operar de los Timers 0 y 1

18/08/2005 40 de 42

Page 41: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Mnemónico del Bit

Nombre del Bit

Estado de Reset Función

EN Habilitador 0 Colocar en uno para habilitar el timer. Este bit sólo se puede escribir cuando el bit INH está en uno.

INH Inhibidor X Colocar en uno para permitir la escritura del bit EN. El bit INH no se guarda, siempre se lee como cero.

INT Interrupción X Colocar en uno para que el timer genere un pedido de interrupción cuando el registro de Cuenta iguale al Registro de Cuenta Máxima. Colocar en cero para deshabilitar la solicitud de interrupciones.

RIU Registro en Uso

X Indica contra cual de los registros de comparación deberá compararse el valor de cuenta actual. Si está en uno se compara con el TxCMPB y si está en cero se compara con el TxCMPA.

MC Máxima Cuenta

X Este bit se setea cuando el contador alcanza el valor máximo. El bit MC debe ponerse en cero grabando el registro de control del timer. Esto no es hecho en forma automática. Si el bit MC está en cero es porque el contador no ha alcanzado el máximo.

RTG Redisparador (Retrigger)

X Este bit especifica la acción que causa el hecho de que la señal TxIN tenga una transición low-to-high. Con RTG en uno se reserçteará el contador y con RTG en cero se habilitará el contador. Este bit se ignora si se está trabajando con clock externo (EXT=1).

P Prescalado X Si está en uno el timer se incrementa cuando el Timer 2 alcanza su máxima cuenta. Si está en cero el timer se incrementa cada ¼ de CLKOUT. Este bit se ignora si se está trabajando con clock externo (EXT=1).

EXT Clock Externo X Si está en uno especifica el uso de reloj externo y en cero el uso del reloj interno. Los bits RTG y P se ignoran si EXT=1.

ALT Registro de Comparación Altenada

X Este bit de control especifica si el timer trabaja con un único valor máximo o con dos. Con este bit en uno se define el modo de trabajo con dos máximos y en cero el modo de trabajo con un único máximo.

CONT Modo Continuo

X Este bit en uno permite que el timer trabaje en modo continuo y si está en cero el timer trabaja en la modalidad de único ciclo. En este último caso una vez que el timer competa el ciclo se inhabilita (se pone en cero el bit EN).

Nota: Los bits reservados que se muestran en gris deberán setearse con ceros lógicos para asegurar la compatibilidad con productos futuros.

7.3.2 Registro de control de Timer 2 Nombre del Registro: Registros de control Timer 2 Mnemónico del Registro: T2CON Función del Registro: Definen el modo de operar del Timer 2

Mnemónico

del Bit Nombre del Bit

Estado de Reset Función

EN Habilitador 0 Colocar en uno para habilitar el timer. Este bit sólo se puede escribir cuando el bit INH está en uno.

INH Inhibidor X Colocar en uno para permitir la escritura del bit EN. El bit INH no se guarda, siempre se lee como cero.

INT Interrupción X Colocar en uno para que el timer genere un pedido de interrupción cuando el registro de Cuenta iguale al Registro de Cuenta Máxima. Colocar en cero para deshabilitar la solicitud de interrupciones.

MC Máxima X Este bit se setea cuando el contador alcanza el valor máximo. El bit

18/08/2005 41 de 42

Page 42: Guía de referencia rápida 80186 · 2.3.6 Interrupciones de manipulación de bits 18/08/2005 23 de 42 . Digital II Guía de referencia rápida 80186 18/08/2005 24 de 42 . Digital

Digital II Guía de referencia rápida 80186

Cuenta MC debe ponerse en cero grabando el registro de control del timer. Esto no es hecho en forma automática. Si el bit MC está en cero es porque el contador no ha alcanzado el máximo.

CONT Modo Continuo

X Este bit en uno permite que el timer trabaje en modo continuo y si está en cero el timer trabaja en la modalidad de único ciclo. En este último caso una vez que el timer competa el ciclo se inhabilita (se pone en cero el bit EN).

Nota: Los bits reservados que se muestran en gris deberán setearse con ceros lógicos para asegurar la compatibilidad con productos futuros.

7.3.3 Registros de cuenta de los timers Nombre del Registro: Registro de cuenta de timer Mnemónico del Registro: T0CNT, T1CNT, T02CNT Función del Registro: Contienen la cuenta actual de los timers

Mnemónico del Bit Nombre del Bit Estado

de Reset Función

TC15:0 Valor de la cuenta del timer

XXXXh Contiene la cuenta actual del correspondiente registro

7.3.4 Registros de comparación de cuenta máxima Nombre del Registro: Valor de comparación máxima del contador Mnemónico del Registro: T0CMPA T0CMPB, T1CMPA, T1CMPB, T2CMPA Función del Registro: Contienen el valor de cuenta máximo del timer

Mnemónico del Bit

Nombre del Bit

Estado de Reset Función

TC15:0 Valor de comparación del timer

XXXXh Contiene el máximo valor de cuenta que alcanzará el timer para luego resetear el registro de cuenta a cero.

18/08/2005 42 de 42