You are on page 1of 11

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

Tema 8 EL MICROPROCESADOR 8085


1. Arquitectura de un microprocesador de 8 bits:
La forma de operar, as como la arquitectura de todos los microprocesadores de 8 bits, es muy similar. A pesar de ello, es difcil encontrar un mtodo didctico que desarrolle de manera general la teora necesaria para comprender el funcionamiento de este tipo de dispositivos. Por este motivo consideramos que la mejor forma de abordar el estudio de los microprocesadores consiste en analizar uno en concreto y extrapolar los conocimientos adquiridos cuando se desee comprender la constitucin y forma de operar de cada uno de los dispositivos anlogos al examinado. El microprocesador 8085 es un dispositivo que opera con una palabra de 8 bits y es capaz de direccionar, con sus 16 lneas, hasta 64 K posiciones de memoria. Fabricado en tecnologa NMOS, esta constituido por 6.200 transistores. Es un circuito integrado con cpsula dual in line de 40 patillas. Para realizar las operaciones que le sean encomendadas por el programa de control, el 8085 es capaz de decodificar internamente 74 tipos de instrucciones distintas. Se dice, pues, que el juego de instrucciones est constituido por el nmero indicado. La tensin de alimentacin es nica y de 5 voltios c.c., que se aplican entre los terminales 40 (+) y 20 (-). Como todo microprocesador que forma parte de un sistema digital programable, necesita un reloj u oscilador para sincronizar las operaciones que realiza el sistema digital de una frecuencia igual a 3125 MHz.

2. Nomenclatura de los terminales del 8085:


A8 A15. Estos terminales corresponden a las salidas de los 8 bits ms significativos del bus de direcciones del sistema en que est integrado el microprocesador. AD0 AD7. Es un conjunto de terminales de entrada/salida que realizan una doble funcin. Mediante un multiplexor, el microprocesador se comunica en primer lugar con los 8 bits menos significativos del bus de direcciones y posteriormente con el bus bidirecional de datos. ALE. Address Latch Enable (Activacin del biestable Latch de direcciones). Es una salida que determina si la informacin presente en las lneas AD0 AD7 corresponde a un dato o a una direccin. Se utiliza para disparar un registro de 8 bits que memoriza la parte baja de una direccin. Si est a 1 carga una direccin, si est a 0 carga datos. S0 S1. Son salidas que informan del estado del bus de datos. Indican el tipo de ciclo de mquina que el microprocesador realiza: bsqueda, lectura, escritura o paro. RD. Read. Activa a nivel bajo. Salida que se emplea para indicar que la posicin de memoria o dispositivo de E/S seleccionado quiere ser ledo por la CPU y, adems, que el bus de datos est disponible para realizar la transferencia. WR. Write. Activa a nivel bajo. Salida que se utiliza para indicar que la informacin presente en el bus de datos ha de ser escrita en al posicin de memoria o dispositivo de E/S direccionado. READY. Entrada que indica al microprocesador (cuando est en nivel alto) que existen datos vlidos sobre el bus de datos procedentes de memoria o dispositivos de E/S. Cuando est a nivel bajo, el microprocesador entra en un estado de espera. Esta seal se utiliza cuando en el sistema existe algn dispositivo que opera con un tiempo mayor que el marcado por el reloj del microprocesador. HOLD. Entrada que indica que otro procesador o controlador solicita el uso de los buses de direccin y datos. El microprocesador abandona el uso de los buses una vez finalizado el ciclo de mquina en curso, poniendo en estado de alta impedancia las entradas y salidas siguientes: A8 A15, AD0 AD7, RD, WR e IO/M.

-1-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

HLDA. Seal de salida generada por el microprocesador como respuesta a la entrada HOLD para indicar que los buses y dems terminales estn en estado de alta impedancia. INTR. Interruptor Request (peticin de interrupcin). Esta seal de entrada es utilizada por los dispositivos externos, cuando necesitan ser atendidos sin demora por el microprocesador, interrumpiendo la secuencia del programa. Puede ocurrir que la interrupcin no sea aceptada. La aceptacin o no-aceptacin de la interrupcin se controla por el programa principal. INTA. Activa a nivel bajo. Interrupt Acknowledge (reconocimiento de la interrupcin). Es una seal de salida. Se utiliza para activar ( en lugar de RD) el dispositivo que genera la interrupcin una vez que ha sido aceptada. TRAP. Es una entrada de interrupcin. Tiene prioridad. RESET IN. Activa a nivel bajo. Es una entrada que pone a cero un registro del microprocesador denominado Contador de Programa, los biestables que validan las interrupciones y la seal HLDA. Se utiliza para indicar el programa. RESET OUT. Es una salida que indica el estado de RESET del microprocesador. Se puede utilizar para poner a cero los dems componentes del sistema. IO/M. M es activa a nivel bajo. Es una salida que indica si la lectura o escritura se realiza sobre la memoria o sobre dispositivos de E/S. X1 X2. Estos terminales de entrada se utilizan para conectar un cristal de cuarzo o una red LC o RC para estabilizar el generador de reloj interno. Tambin es posible conectar un reloj externo. SID y SOD. Entrada y salida respectivamente, de datos en serie. CLK OUT. Salida de la seal de reloj del microprocesador para utilizarla como reloj del sistema.

EJERCICIO. Conectar al 8085 un registro de 8 bits para demultiplexar el bus de datos y la parte baja del bus de direcciones. Utilizar el dispositivo 74LS373. El 74LS373 es un registro de 8 bits con biestables tipo D activos por niveles y con salidas triestado.

HABILITACIN DE SALIDA ACTIVA A N. BAJO SI OE = 1 ==> ALTA IMPEDANCIA 1Q 1D 2D 2Q 3D 3Q 4D 74LS373 4Q 5D 5Q 6D 6Q 7D 7Q

OE

LE
HABILIACIN DE CARGA ACTIVA A NIVEL ALTO

OE
AD 0 AD 1 AD 2 AD 3 AD 4 AD 5 AD 6 AD 7 0D 1D 2D 3D 74LS 373 4D 5D 6D 7D 0Q 1Q 2Q 3Q 4Q 5Q 6Q 7Q A0 A1 A2 A3 A4 A5 A6 A7 D -D 0 7

8085

ALE

LE

-2-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

3. Arquitectura del microprocesador:


El microprocesador 8085 est constituido bsicamente por tres grandes bloques: una unidad de control, un conjunto de registros y una unidad aritmtico-lgica. Es difcil separar unos elementos de otros, debido a la interrelacin que existe entre todos ellos; no obstante, para facilitar su comprensin, vamos a examinarlos en primer lugar por separado: a) Unidad de control. La unidad de control es un bloque de lgica cableada dentro del CI. Esta parte del sistema controla y sincroniza las transferencias de datos y las operaciones que se realizan con ellos. Por una parte, la unidad de control se le aplica la seal de reloj maestro de microprocesador, por otra, las seales de control de otros elementos del sistema, para interrumpir la secuencia del programa, y el bus de datos, a travs del decodificador de instrucciones con la informacin ya interpretada, para que la unidad pueda responder con las seales adecuadas. Unas salidas de la unidad de control se dirigen a los elementos externos del microprocesador (memoria y dispositivos de E/S) para indicar, por ejemplo, que la operacin en curso se trata de una lectura o de una escritura, otras a los registros internos de la propia CPU. La unidad de control, en resumen, regula la funcin bsica del microprocesador consistente en la bsqueda y posterior ejecucin de instrucciones. Esta operacin es cclica mientras no se interrumpa mediante una instruccin de paro (HALT). En el estado de bsqueda se transfiere una instruccin desde la memoria hasta el microprocesador y en el estado de ejecucin se realiza esta operacin. b) Registros internos del microprocesador. El 8085 tiene una serie de registros de propsito general denominados B, C, D, E, H y L de 8 bits cada uno, pero que pueden operar en parejas (se agrupan para este fin B con C, D con E y H con L). Se utilizan para transformaciones internas y as obtener una mayor flexibilidad y rapidez de operacin. Existen otros registros de propsito especial. Estos son: el Contador del Programa (CP), de 16 bits; el Stack Pointer o puntero de pila (SP), tambin de 16 bits; los Registros Temporales W-Z, de 8 bits cada uno, pero que pueden operar unidos; el Registro de direcciones, de 16 bits, cuyas salidas son las patas del bus de direcciones del microprocesador, y el Registro de Instruccin (RI), de 8 bits. El Contador de Programa es un registro que memoriza la direccin de la prxima instruccin a ejecutar o bien la direccin de parte de una instruccin formada por ms de un byte. Las instrucciones del 8085 y de todos los microprocesadores de 8 bits pueden ser de 1, 2 3 bytes, ordenados de forma sucesiva en la memoria. La unidad de control incrementa automticamente en uno al contenido del CP cada vez que termina un ciclo de bsqueda, salvo cuando aparece la instruccin HALT (paro). La seal de RESET, que es una de las entradas de la unidad de control, coloca al CP a cero e inicializa la ejecucin del programa. Para obtener la primera instruccin del programa, la direccin contenida en el CP [0000 (HEX)] se coloca en el bus de direcciones del sistema a travs del registro de direcciones. La unidad de control genera una seal de lectura en memoria. El dato direccionado se transfiere al microprocesador a travs del bus de datos y llega al registro de instruccin. El primer byte de una instruccin siempre es el Cdigo de Operacin (CO). Este cdigo de operacin es interpretado por el decodificador de instrucciones y pasa a la unidad de control, que genera una secuencia de microoperaciones para que la instruccin sea ejecutada. A veces, para que una instruccin pueda ser ejecutada, es necesaria ms informacin (segundo y tercer byte de algunas instrucciones). Esta informacin se encuentra almacenada en memoria a continuacin del CO. Cuando la unidad de control, una vez decodificado el CO, indica que la instruccin requiere bytes adicionales, el CP se incrementa en una unidad y vuelca su contenido nuevamente sobre el bus de direcciones. El contenido de la posicin direccionada pasa a uno de los registros temporales W-Z a travs del bus de datos. Estos registros son utilizados, como su nombre indica, para almacenar temporalmente los bytes 2 y 3 (si existen) de una instruccin, hasta que pasan a otros registros internos o externos del microprocesador. Puede ocurrir que los bytes segundo y tercero de la instruccin sean una direccin de memoria o una direccin de seleccin de algn dispositivo de E/S. En este caso los 16 bits son almacenados temporalmente en los registros W-Z. A continuacin este contenido se coloca sobre el CP para acceder al dispositivo correspondiente. Las instrucciones no siempre se ejecutan en el orden en que estn escritas en la memoria. Como ya se ha indicado cabe la posibilidad de efectuar saltos a secciones del programa denominadas subrutinas. Para tal fin los sistemas con microprocesador, y de una pila o zona reservada de la memora principal. Cuando, mediante una instruccin, se produce una llamada a subrutina, el contenido del CP se deposita en la pila, es decir, en la posicin de memoria apuntada por el SP y la anterior (ya que el contenido del CP es

-3-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 de 16 bits) hasta que se ejecuta dicha subrutina. Una vez ejecutada, el CP vuelve a cargarse con el valor almacenado en la pila de memoria para proseguir con el programa principal. El motivo por el cual es necesario una pila y no exclusivamente un registro es la posibilidad de que existan subrutinas anidadas, es decir, que desde el programa principal se llame a una subrutina y desde esta a una segunda, y as sucesivamente. En este caso es necesario ir almacenando todas las direcciones de comienzo para posteriormente retornar. c) Unidad aritmtico-lgica. La unidad de proceso completa del 8085 est formada por una ALU (Unidad aritmtico-lgica), que es un circuito combinacional capaz de realizar operaciones de suma y resta, as como operaciones lgicas, un registro de 8 bits llamado Acumulador (A) y un conjunto de cinco biestables o flags denominados registros de estado, que ofrecen informacin relativa al resultado de las operaciones aritmticas o lgicas que se realizan.

Acumulador

Registro temporal ALU Flags

Cuando se realiza una operacin, el acumulador contiene un operando y uno de los registros temporales W-Z el otro. El resultado de la operacin se coloca en el acumulador reemplazando al dato u operando que contena anteriormente. La denominacin y situacin de cada flag se muestra en el siguiente dibujo. CY es el sealizador de arrastre, y su contenido pasa a ser 1 cuando se produce acarreo al realizar una suma. AC es el sealizador de arrastre auxiliar. Se utiliza cuando se realizan operaciones en BCD. Su valor ser 1 cuando se produzca arrastre al efectuar la suma de los bits de los operandos que ocupan el cuarto lugar por la derecha. S es el flag de signo y su valor ser 1 si el bit ms significativo del resultado es 1. En caso contrario, ser cero. Z es el sealizador de cero y se pone a 1 cuando el resultado de una operacin ha sido cero. Por ltimo, P es el flag de paridad y su valor ser 1 cuando el nmero de bits de una palabra depositada en acumulador sea par. S Z AC P CY

4. Cdigo mquina y nemnicos:


El juego de instrucciones de un microprocesador lo constituye todo el conjunto de expresiones binarias que el decodificador de instrucciones es capaz de interpretar. Es evidente que cuanto mayor sea el nmero y ms variado el repertorio mayor ser la operatividad del dispositivo y, en consecuencia, del sistema donde se integre. El microprocesador, como todo circuito digital, opera con unos y con ceros exclusivamente. Sin embargo, el sistema de codificacin binario es muy engorroso para ser utilizado como lenguaje de programacin, ya que un dato o palabra, en un circuito que utiliza un microprocesador como el 8085, est formado por 8 bits y una direccin por 16 bits. Adems, tales expresiones numricas resultan ininteligibles. Por este motivo, los equipos ms elementales que se emplean para programar admiten para la escritura de las instrucciones al menos la codificacin hexadecimal. La traduccin a lenguaje binario, tambin denominado cdigo mquina, se realiza con el correspondiente decodificador hexadecimal/binario incorporado al equipo.

-4-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 Lgicamente este sistema ofrece tambin grandes inconvenientes, tanto en la fase de definicin como en la de depuracin, cuando el programa es complejo. Con el fin de aproximar la escritura y lectura de programas al lenguaje habitual, se decidi expresar las instrucciones de los microprocesadores utilizando la abreviatura o las siglas de la palabra que define la operacin que realiza. Dado el origen de las compaas fabricantes de este tipo de dispositivos, estas palabras estn expresadas en ingls. As, por ejemplo, la abreviatura MOV, que procede de MOVE y significa MOVER o TRASLADAR, se utiliza para transferencia de datos entre registros internos o externos. Estas expresiones se denominan nemnicos, que significa recordatorio. Por tanto, las expresiones del microprocesador 8085 son un conjunto de 74 nemnicos compatibles con las de otros dispositivos de INTEL, pero, desgraciadamente, distintas, aunque realicen la misma operacin, a las de otros fabricantes. Existen equipos de programacin que admiten directamente las instrucciones en forma de nemnicos. Estos equipos disponen de un programa denominado assembler, que traduce el programa escrito en leguaje ensamblador el sistema binario, que es el nico cdigo capaz de ser interpretado por la mquina. Los equipos ms complejos, denominados genricamente sistemas de desarrollo, son capaces de traducir a cdigo mquina cualquier programa escrito en lenguajes de alto nivel, tales como Pascal, BASIC, etc. Estos equipos facilitan enormemente el desarrollo del software de un sistema digital.

5. Tipos de instrucciones:
El nmero de instrucciones que cada microprocesador puede interpretar y ejecutar es distinto en cada caso. As el 8085 est diseado para admitir 74 instrucciones bsicas, de tal forma que, si contemplamos las variantes de algunas de ellas, este dispositivo est preparado par realizar 246 operaciones distintas. Las instrucciones del 8085 se pueden clasificar en cinco grupos: 1. Transferencia de datos entre registros o entre posiciones de memoria y registros. 2. Operaciones aritmticas. 3. Operaciones lgicas. 4. Bifurcaciones (salto). 5. Instrucciones de stack, E/S y control de mquina.

6. Formato de instrucciones:
Las instrucciones del 8085 y de otros microprocesadores semejantes estn constituidas por 1, 2 3 bytes. As pues existen instrucciones de 1, 2 y 3 bytes. En el siguiente dibujo se muestran los tres bytes, que, como mximo, pueden constituir una instruccin y el contenido de cada uno de ellos.
Cdigo de operacin Instrucciones de 2 bytes Instruciones de 1 byte bit Instrucciones de 3 bytes

7 6 5 43 2 10
Dato u 8 bits de una direccin de memoria

8 bits de una direccin de memoria

El primer byte siempre se utiliza para representar el CO de todas las instrucciones. Las instrucciones de 2 bytes estn formadas por el CO y dos bytes ms. El primero contiene los 8 bits menos significativos de una direccin de memoria y el otro los 8 bits ms significativos.

-5-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

Para los siguientes ejercicios emplearemos las siguientes tablas: Registro A B C D E H L Condicin (XX) NZ no cero (Z=0) Z cero (Z=1) NC no acarreo (CY =0) C acarreo (CY=1) PO paridad impar (P=0) PE paridad par (P=1) P positivo (S=0) M negativo (S=1) CCC 000 001 010 011 100 101 110 111

DDD o SSS 111 000 001 010 011 100 101

RP 00 01 10 11

Par de registros BC DE HL SP


1.

EJERCICIOS: Sumar 2 nmeros que se encuentran en las posiciones de memoria 006A y 006B y guardar el resultado en la posicin 0010. Escribir el programa en nemnico, hexacecimal y binario. Datos:

- LDA [DIRECCIN]. Carga el acumulador (A) con el contenido de la posicin de memoria de la cual se da su direccin. - MOV B, A. El contenido de A pasa al registro B - ADD B. Suma al acumulador el contenido del registro B. El resultado queda en el acumulador (A). - STA [DIRECCIN]. Guarda, almacena el contenido del acumulador en la posicin de memoria de la cual se da su direccin. NEMNICO: LDA 006A MOV B, A LDA 006B ADD B STA 0010 NEMNICO LDA 6A 00 MOV B, A LDA 6B 00 ADD B STA 10 00 BINARIO 0011 1010 0110 1010 0000 0000 0100 0111 0011 1011 0110 1011 0000 0000 1000 0000 0011 0010 0001 0000 0000 0000 HEXADECIMAL 3A 6A 00 47 3A 6B 00 80 32 10 00

2.

Escribir un programa que cargue el registro B con el dato 04, y cargue el registro C con el dato 05. El programa ha de decrementar 4 veces el contenido del registro B y cuando haya hecho esto decrementar 1 vez el registro C. Datos:

- MVI r, DATO. El contenido de la posicin de memoria apuntada por los registros HL pasa al registro r. El dato pasa al registro r. - DCR r. El contenido del registro r se decrementa en una unidad. NEMNICO: MVI B, 04 MVI C, 05 DCR B DCR B DCR B

-6-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 DCR B DCR C NEMNICO MVI B 04 MVI C 05 DCR B DCR B DCR B DCR B DCR C 3. BINARIO 0000 0110 0000 0100 0000 1110 0000 0101 0000 0101 0000 0101 0000 0101 0000 0101 0000 1101 HEXADECIMAL 06 04 0E 05 05 05 05 05 0D

Hacer una tabla con el programa anterior en hexadecimal y la direccin de memoria donde se encuentra cada instruccin suponiendo que el programa se carga a partir de la direccin 0000. DIRECCIN 0000 0001 0002 0003 0004 0005 0006 0007 0008 BYTE 06 04 0E 05 05 05 05 05 0D

4.

En este ejercicio introduciremos el concepto de salto condicional: Escribir un programa que cargue el registro C con el dato FF, cargue el registro B con FF, decremente el registro B hasta que su contenido valga 0 y cada vez que esto suceda decremente el registro C. Adems cada vez que se decremente el registro C se ha de cargar el registro B con FF y decrementarlo hasta 0. El programa se acaba cuando el registro C llegue a 0. Datos:

- JNZ [DIRECCIN]. Si el resultado de la ltima operacin aritmtico-lgica no es 0, saltar a la direccin de memoria indicada.

INICIO CARGAR C CON FF CARGAR B CON FF DCR B NO B= 0? SI DCR C NO C =0 ? SI HALT


-7-

BUCLE 1 BUCLE 2

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

NEMNICO BUCLE 1: CARGAR B CON FF BUCLE 2: DCR B MVI C, FF BUCLE 1:MVI B, FF BUCLE 2 DCR B JNZ BUCLE 2 DCR C JNZ BUCLE 1 NEMNICO MVI C FF MVI B FF DCR B JNZ DCR C JNZ BINARIO 0000 1110 1111 1111 0000 0110 1111 1111 0000 0101 1100 0010 0000 1101 1100 0010 DIRECCIN 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B HEXADECIMAL 0E FF 06 FF 05 C2 04 00 0D C2 02 00

7. Secuencias y tiempos del 8085.


La bsqueda y ejecucin de una instruccin se llama ciclo de instruccin. El ciclo de instruccin est formado por varios ciclos de mquina. La mayor parte de los ciclos de mquina de las instrucciones de un programa son referencias de lectura o escritura a la memoria o a los dispositivos de E/S. Los diferentes tipos de ciclos de mquina en el 8085 son: 1. Bsqueda de CO. 2. Lectura de memoria. 3. Escritura en memoria. 4. Lectura de dispositivo de E/S. 5. Escritura en dispositivo de E/S 6. Respuesta a interrupcin. 7. Bus inactivo.

EJERCICIO. Cunto tiempo tarda en ejecutarse una instruccin MOV r 1, r2 si el microprocesador trabaja a 4 MHz? f = 4 MHz = 4.10 6 Hz 1 1 T= = = 0'25.10 6 S = 0'25S f 4.10 6 4 ciclos de reloj t = 4 0'25 = 1S

8. Modos de direccionamiento:
Las instrucciones del microprocesador 8085 hacen referencia a los datos, que explcita o implcitamente contienen, de diferentes maneras. Existen cuatro maneras de referenciar datos, denominados modos de direccionamiento: inmediato, directo, por registros y por registro indirecto. En el direccionamiento inmediato la instruccin contiene los datos en el byte o los bytes siguientes al cdigo de operacin, por ejemplo ADI 04. El hexadecimal 04 (segundo byte de la instruccin) se suma al acumulador. La forma ms sencilla de direccionamiento es la directa. En este caso los bytes segundo y tercero de la instruccin contienen la direccin de la posicin de memoria donde se encuentra el dato, por ejemplo LDA 003F. El contenido de la posicin 003F pasa al acumulador. En el direccionamiento por registro la instruccin especifica el registro o doble registro donde est el dato, por ejemplo ADD B. El contenido del registro B se suma al acumulador.

-8-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 Por ltimo, el modo de direccionamiento por registro indirecto el doble registro especificado en la instruccin contiene la direccin de memoria donde est el dato, por ejemplo, LDAX B. El contenido de la direccin de memoria, cuya direccin est en el par de registros B y C, se mueve al acumulador.

EJERCICIOS. Escribir un programa que lea el puerto de entrada cuya direccin es 0A, verifique si el bit 3 del dato ledo es 1 y el resto todo 0 y en este caso saque por el puerto de salida cuya direccin es 0B el dato F1. La secuencia se repite (cclicamente). - Las direcciones de los puertos de E/S son de 8 bits. Esto quiere decir que el 8085 puede direccionar 256 puertas de E y 256 puertas de salida. - IN [DIRECCIN]. Lee el contenido del puerto direccionado. - OUT [DIRECCIN]. Escribe en el puerto direccionado. - CPI DATO. Compara el contenido del acumulador con el dato. - JNZ. Salto condicional. - JMP. Salto incondicional.

7 6

2 1

0 0 0 0 1 0 0 0

A NO

[0A]

A=08? SI A A F1 [0B]

INICIO: IN 0A; el contenido del puerto 0A pasa al acumulador. CPI 08; compara el acumulador con el dato 08. JNZ INICIO; salta si el bit de 0 no est activado. MVI A, F1; carga el acumulador con F1. OUT 0B; saca por el puerto 0B el dato del acumulador. JMP INICIO; salto incondicional a la direccin INICIO.

-9-

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

EJERCICIO. Escribir un programa que el bit 3 del puerto de entrada 0A est a 1 saque por el puerto de salida 0B el dato FF y lo mantenga un cierto tiempo en esta situacin, transcurrido el cual la situacin del puerto 0B debe volver a 00.

IN LIZ R ICIA A A 00 [A ] 0B B FF

[0A ]

N O

B 3 [A =1 ? IT ] SI A FF

[0B ]

R TA D E RO D TIE P E MO

INICIO: MVI A, 00; carga el acumulador con 00 OUT 0B ; sacar el contenido del acumulador por el puerto de salida 0B MVI B, FF ; carga el registro B con FF BUCLE 1: IN 0A ; carga el acumulador con el dato que hay en el puerto 0A ANI 08 ; compruebo si el bit 3 del acumulador est a 1. JZ BUCLE 1 ; saltar si el resultado es 0 MVI A , FF ; cargo el acumulador con FF OUT 0B ; saca el dato del acumulador por 0B TIEMPO: DCR B ; decremento B JNZ TIEMPO ; saltar a tiempo si el resultado no es 0 JMP INICIO ; regresa al estado inicial Cunto tiempo se mantiene el puerto 0B en FF? Siendo la frecuencia de 4 MHz. TIEMPO: DCR B (4) JNZ TIEMPO (7/10) JMP INICIO (10) INICIO: MVI A , 00 (7) OUT 0B (10) N de estados = (4 + 10) 254 + (4 + 7)+ 10 + 7 + 10 = 3594 estados T=025S t = 8985 S

NOTA: son 254 porque la ltima vez no vuelve a subir para DCR B y entonces en ese momento slo se producen 7 pulsos de reloj. Por eso hemos de sumar 4 + 7.

- 10 -

ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8

EJERCICIO. Cmo puede aumentarse de una forma sencilla este tiempo? Siempre que no buscsemos diferencias de tiempos muy grandes insertaramos la instruccin NOP Como ejemplo veremos el efecto de incluir 2 NOP en cada bucle. NOP 5 estados Aadimos (5 + 5) 255 = 2550 t aadido = 6375 S

- 11 -

You might also like