microprocesador 8085

27
1

Transcript of microprocesador 8085

Page 1: microprocesador 8085

1

Page 2: microprocesador 8085

2

Investigación sobre el Microprocesador 8085 de INTEL

¿Qué es el microprocesador?

Integración a gran Escala.

Estructura de un Microprocesador.

El Microprocesador INTEL 8085.

Descripción física del Microprocesador.

Lenguaje e Instrucciones del uP.

En muchos textos que tratan el tema de los

microprocesadores se ha escrito

sobre las características técnicas y

funcionales de este tipo de dispositivos. No se

pretende en la investigación realizar una

exposición exhaustiva de dichas

características, para lo cual

Sería más oportuno acudir a los manuales del

fabricante, sino más bien llevar a cabo un

Estudio paulatino del microprocesador 8085A,

y de una serie de dispositivos asociados

(Memorias, periféricos, etc.)

Page 3: microprocesador 8085

3

CENTRO ESCOLAR INSA

BACHILLERATO TECNICO INDUSTRIAL

ESPECIALIDAD: ELECTRONICA

Modulo: Programación de Microprocesadores

Ing. Francisco Andaluz Guzmán

I-III-D

Información e Investigación del Microprocesador, aplicaciones y

funcionamientos.

Microprocesador 8085 de INTEL, Funciones, estructuras, programación, e

instrucciones.

GRUPO 1

Alumnos: Numero de Lista:

Jorge Edgar Aguirre Gutiérrez 3

José Neftali Alvarado Rosales 5

Elmer Antonio Avelar Lemus 7

Page 4: microprocesador 8085

4

El microprocesador Pág. 6

Integración a gran escala Pág. 7

Estructura de un Microprocesador Pág. 8

Microprocesador de INTEL 8085 Pág. 11

Descripción Física del Microprocesador 8085 de INTEL Pág. 13

Descripción Funcional del Microprocesador 8085 de INTEL Pág. 16

Diagrama de Bloques del Microprocesador 8085 de INTEL Pág. 17 Instrucciones del Microprocesador 8085 Pág. 19

Instrucciones Lógicas y Aritméticas Pág. 21

Instrucciones de Control Pág. 22

Ejemplos de Programación Pág. 23

Conclusión Pág. 26

Recomendaciones Pág. 27

Bibliografía Pág. 28

Page 5: microprocesador 8085

5

EL MICROPROCESADOR:

Se denomina microprocesador a un circuito integrado semiconductor formado por transistores que

permiten o cierran el paso, de forma lógica, a una serie de señales eléctricas. El microprocesador

está compuesto por la unidad de control, la unidad aritmético-lógica y un grupo de registros. Es

característico del microprocesador el poseer un alto grado de integración, siendo capaz de ejecutar

algorítmicamente una serie de instrucciones. La

diferencia entre un semiconductor de memoria y un

microprocesador es su funcionalidad, ya que los

microprocesadores son circuitos de puertas lógicas

distribuidas irregularmente para poder realizar las

diferentes tareas y operaciones de manejo del sistema

informático, mientras que las memorias son circuitos

repetitivos de almacenamiento de información; por ello,

los microprocesadores son más complicados de

desarrollar y construir que los semiconductores de

memorias.

Como se ha indicado anteriormente, el microprocesador

efectúa la ejecución de las instrucciones de forma

secuencial, excepto cuando la propia instrucción le

ordene la alteración de la secuencia. El microprocesador

va a poder controlar las distintas unidades del sistema

informático que permitirán la comunicación con el

exterior de la computadora y la memoria de ésta, donde

se almacenarán los datos.

- Como Circuito Físico Programable. Un microprocesador permite sustituir a los viejos subsistemas

de componentes físicos (válvulas) o de circuitería cableada (mazos de cables que conectan

diferentes componentes en equipos electrónicos, industriales, etc.) dentro de sistemas informáticos

más complejos.

La capacidad de programación que caracteriza a los microprocesadores permite una mayor

potencia y versatilidad de estos subsistemas con respecto a los anteriormente utilizados. En la

actualidad se están utilizando los "viejos" chips 8086 como base para subsistemas de tarjetas

gráficas.

- Como Procesador Central de una Computadora Es el motor de la Unidad Central de Proceso,

encargándose de:

1.- Manejar la memoria.

2.- Controlar el flujo de información en el sistema informático.

3-. Realizar las operaciones básicas sobre los datos.

Page 6: microprocesador 8085

6

INTEGRACION A GRAN ESCALA:

Podemos considerar que los primeros utensilios y equipos empleados para efectuar operaciones de cálculo fueron los ábacos orientales, siendo aproximadamente en el siglo XVII cuando se construyeron las primeras máquinas calculadoras mecánicas. Posteriormente se pasó al empleo de elementos electromecánicos, significando esto un gran avance en dicho campo. En 1941 comienzan a construirse computadoras digitales basadas en el sistema binario de numeración basándose en relés, y en un paso posterior se consigue la primer computadora basada en miles de válvulas a la que se denominó ENIAC y que ha supuesto un paso decisivo y definitivo en el desarrollo tecnológico industrial. A partir de la aparición de los materiales semiconductores (fundamentalmente el silicio) se produce un crecimiento imparable en la industria y fundamentalmente en el sector de la electrónica. Los semiconductores son materiales que no pueden considerarse ni buenos ni malos conductores, presentando unos valores de resistividad comprendidos entre los de los buenos conductores y los de los aislantes. La resistividad de estos elementos es alterada añadiéndoles otros materiales, denominados impurezas que aumentan la conductividad de los cristales, obteniendo de este modo los semiconductores extrínsecos. Dependiendo del tipo de impurezas añadido, se obtendrán cristales tipo N o cristales tipo P. Cuando se doparon los cristales de forma controlada con impurezas de ambos tipos aparecieron las junturas PN o diodos. Fue posteriormente, al conseguir dos junturas, formando uniones PNP o NPN, cuando aparece el transistor y es en este momento cuando se produce un verdadero desarrollo y gran expansión de la electrónica en general. Con el perfeccionamiento de la tecnología se consigue colocar o integrar en muy poco espacio, hasta varias decenas de transistores. Estamos ante la aparición de los primeros circuitos integrados trabajándose a muy baja escala de integración (SSI). Posteriormente se consigue almacenar en una misma pastilla varios miles de elementos integrados, obteniendo de este modo componentes más complejos que se enmarcan dentro de la media escala de integración (MSI). Hacia 1976 con la mejora de la tecnología se consigue implementar en un solo chip varios miles de componentes, apareciendo en ese momento la alta escala de integración (LSI). A partir de 1980 se trabaja con la muy alta escala de integración (VLSI) que permite incorporar una cantidad muy elevada de componentes en un solo circuito integrado.

La LSI provocó la aparición del primer microprocesador, el 4004 de INTEL. Se trata de un

microprocesador de 4 bits que hoy en día está totalmente en desuso.

Con posterioridad al 4004, aparecen los microprocesadores 8008 y 8080 de INTEL, se trata ahora

de componentes LSI de 8 bits. Este último microprocesador posee múltiples ventajas sobre los

anteriores por lo que adquirirá mayor importancia. Sin embargo para su correcto funcionamiento

necesita de algunos componentes auxiliares como son: un generador de impulsos de reloj, un

Page 7: microprocesador 8085

7

controlador de buses del sistema y además emplea tres tensiones de alimentación (+12V, +5V, y –

5V).

La casa INTEL presenta en 1977 el nuevo microprocesador 8085, que posee una arquitectura

interna similar a la del 8080, con la diferencia de que ahora se añade en la misma pastilla el

generador de impulsos de reloj, el controlador de buses y además solo se necesita una tensión de

alimentación de +5V. Dispone también de cuatro nuevas entradas de interrupción y dos líneas para

entrada/salida de información en serie. El bus de direcciones y el bus de datos están multiplexados

y en el juego de instrucciones aparecen algunas novedades (que veremos más adelante) respecto

al juego de instrucciones del 8080.

Gracias a todas estas novedades incorporadas, el microprocesador adquiere gran relevancia y

potencialidad frente a sus competidores de igual categoría. Puede decirse que un microprocesador

es un componente que contiene en una sola pastilla los componentes necesarios para desarrollar

funciones aritméticas, lógicas y de control. Por tanto es una pequeña Unidad Central de Proceso

(CPU) en una pastilla.

ESTRUCTURA DE UN MICROPROCESADOR:

En la actualidad los microprocesadores están entrando en muchos campos de la electrónica

tradicional, debido a una serie de ventajas como pueden ser: la necesidad de emplear menos

componentes, que lleva aparejado un menor volumen, menor consumo, menos conexiones y

mayor fiabilidad; y la posibilidad de programar el sistema que aporta gran facilidad para simplificar

diseños y minimizar los tiempos de desarrollo. La programación proporciona además la posibilidad

de emplear un mismo sistema para la realización de tareas muy diversas.

En general, los fabricantes han mantenido líneas generales de diseño bastante similares, por tanto

la mayoría de los microprocesadores tienen la misma arquitectura básica o estándar. Puede

asumirse como tal la representada en la FIG.12A.

En esta representación esquemática podemos apreciar que el microprocesador posee una serie de

“bloques internos” que se comunican entre sí y con el exterior a través de unos conjuntos de líneas

Page 8: microprocesador 8085

8

denominados “buses” que sirven para transmitir señales y datos entre los distintos componentes.

Puede apreciarse con claridad la diferencia entre los buses internos, empleados por el

microprocesador para realizar sus operaciones internas y los buses externos, utilizados para

comunicarse con el exterior, es decir con componentes que están situados fuera del propio

microprocesador. En general podemos decir que hay tres tipos de buses distintos:

· Bus de “direcciones” que se crea en los registros de direccionamiento de 16 bits y se comunica

con el exterior mediante un conjunto de 16 líneas (líneas de direcciones) normalmente enumeradas

de A0 hasta A15. Por este bus, las direcciones salen siempre hacia el exterior.

· Bus de “datos” que se genera en el interior del microprocesador y lo utiliza para intercambiar

información entre sus distintos bloques internos y para comunicarse con el exterior. Son un

conjunto de 8 bits que utilizan 8 líneas de conexión al exterior, normalmente denominadas D0 a

D7. Por este bus sale y entra información, por tanto se trata de un bus bidireccional.

· Bus de “control” compuesto por una serie de líneas, variable en número según el componente de

que se trate. Contiene las líneas de sincronización de funciones, pudiendo ser unas de salida y

otras de entrada al microprocesador. Algunas señales de control pueden ser por ejemplo, las de

lectura, escritura, reloj o clock, etc.

El bloque fundamental del microprocesador es el llamado ALU, representa la parte del

microprocesador que realiza las operaciones aritméticas y lógicas. Para llevar a cabo este proceso

emplean normalmente un registro especial denominado “Acumulador” donde almacenan el

resultado de las operaciones realizadas. Algunos microprocesadores poseen más de un

acumulador.

Page 9: microprocesador 8085

9

Para completar las indicaciones necesarias tras la ejecución de las instrucciones, el

microprocesador emplea además un registro

especial de 8 bits denominado “Registro de

Estado” o “Registro de Flags” que marcarán

distintas características y peculiaridades de las

operaciones desarrolladas. Posteriormente

veremos con más detalle este Registro de Flags.

En la FIG.12A puede verse también un bloque

denominado “Control” que sirve para sincronizar el

funcionamiento de todo el sistema. Genera

señales de sincronismo para la ALU, memorias y

dispositivos de E/S.

Las unidades de control generalmente están

constituidas basándose en microprogramación

(programación interna no accesible al usuario) y se encargan de descifrar y ejecutar las

instrucciones del programa que nosotros construyamos.

Puede verse además un bloque compuesto por “Registros Internos de 8 bits”, se trata en este caso

de una serie de registros (variable según el microprocesador de que se trate) de uso general que

emplea la ALU para manipular datos. Estos registros normalmente almacenan palabras de 8 bits y

en ocasiones pueden ser utilizados como registros pares (de dos en dos) almacenando palabras o

informaciones de 16 bits.

Finalmente, decir que en la estructura estándar que se está tratando debe haber también un

bloque de “Registros Internos de 16 bits” que también son llamados registros de direccionamiento.

Están conectados al bus de direcciones y suele haber dos registros de este tipo que son:

· El “Puntero de Pila”, denominado abreviadamente SP, es indispensable durante el desarrollo de

programas tanto para trabajar con interrupciones como para el tratamiento de subrutinas. El

contenido del SP señalará en todo momento a la cima de la pila. (La pila estará constituida por un

bloque de memoria RAM, donde se almacenarán de forma temporal los datos. Hablaremos de ella

con posterioridad).

· El “Contador de Programa”, denominado abreviadamente PC, es imprescindible en todos los

microprocesadores. Contiene la dirección de la siguiente instrucción que deba ejecutarse y su

contenido se va incrementando a medida que las instrucciones van siendo ejecutadas. De todas

formas el contenido del PC puede alterarse por programa cuando se desee o cuando se necesite

como posteriormente se verá, alterando de este modo la ejecución secuencial de las instrucciones.

Page 10: microprocesador 8085

10

MICROPROCESADOR 8085 DE INTEL:

Tras habernos iniciado a los microprocesadores en el punto anterior de una forma generalista, pasamos ahora a iniciar el estudio del microprocesador 8085A. La representación esquemática de sus señales o líneas de conexión exterior, pueden apreciarse en la FIG.13A, indicándose en dicha figura el sentido de acción de todas las señales que vendrá marcado por el sentido de las flechas que las representan. Por ejemplo podemos ver que la señal ALE es generada por el microprocesador y sale hacia el exterior; del mismo modo la señal SID será una señal que procedente del exterior entrará en el microprocesador para ser tratada.

Es importante detenerse unos instantes en la observación de esta figura y estudiar superficialmente todas las líneas que posee. Debe decirse que las señales marcadas con letra en negrita son activas con nivel lógico 0, por ejemplo la señal RD (lectura). Como características más importantes en el 8085 pueden destacarse: · Se presenta en encapsulado dual in line de 40 patillas.

· El bus de datos y la parte baja del bus de direcciones están multiplexados.

· En total posee un bus de direcciones de 16 bits. · Direccionamiento de E/S para 256 elementos o puertos. · Un acumulador de 8 bits. · Seis registros básicos de 8 bits cada uno de uso general. Estos registros pueden usarse como registros pares para el tratamiento de información de 16 bits. · Dos registros de direcciones de 16 bits (SP y PC). · Un bloque de cinco señales de interrupción distintas con diferentes órdenes de prioridad.

Page 11: microprocesador 8085

11

· Dos señales que permiten la transferencia de información en serie (SID y SOD). · Tensión de alimentación única de +5V. · Buffers para la salida y entrada de información por los buses de direcciones y datos. · Generador de impulsos de reloj incorporado. En los manuales o folletos proporcionados por los fabricantes se especifican con mucho más detalle y minuciosidad, las características y propiedades del microprocesador, incluyendo además los diagramas de tiempo correspondientes a la ejecución de las instrucciones en función de la frecuencia del cuarzo colocado en las líneas X1 y X2.

Page 12: microprocesador 8085

12

DESCRIPCION FISICA DEL MICROPROCESADOR 8085:

Como se ha mencionado anteriormente, este microprocesador se presenta en un encapsulado de

40 patillas cuya distribución puede verse en la FIG.14A. A continuación se da una descripción de la

función de cada una de las patillas:

· Patillas 1 y 2 (X1 y X2): Permiten la generación de las señales de reloj, mediante la utilización de

un cristal de cuarzo, según se verá posteriormente.

· Patilla 3 (RESET OUT): Señal de salida. Cuando en ella tenemos un 1, quiere decir que el

microprocesador queda reinicializado. Esta señal es generada por el propio microprocesador.

· Patilla 4 (SOD): Salida serie. Se activa mediante la instrucción SIM.

· Patilla 5 (SID): Entrada serie. El dato queda cargado en el bit 7 del Acumulador cuando se ejecuta

la instrucción RIM.

· Patilla 6 (TRAP): Interrupción. Cuando se activa esta patilla bien por flanco o por nivel lógico 1, el

microprocesador finaliza la instrucción que estaba ejecutando y salta a una subrutina enganchando

en la dirección de memoria 0024H. Al hacer este salto, lleva el contenido del Contador de

Programa a la pila, al objeto de que cuando termine la subrutina, mediante una instrucción RET,

vuelva a tomar el curso normal de su trabajo al recargar el Contador de Programa con el contenido

de la pila. Esta es la interrupción de más alta prioridad.

· Patilla 7 (RST 7.5): Interrupción. Es enmascarable por programa. Para conseguir esto, es

necesario que se haya ejecutado la instrucción EI con posterioridad a DI y a continuación

enmascararla (o no), colocando un 0 en el bit adecuado mediante la instrucción SIM. Esta

interrupción se activa por flanco y nos permite enganchar en la dirección 003CH.

Page 13: microprocesador 8085

13

· Patilla 8 (RST 6.5): Se activa por nivel 1 lógico, que debe mantenerse hasta que la petición de

interrupción sea atendida. Es enmascarable por programa (Idem a la anterior). Permite enganchar

en la dirección 0034H.

· Patilla 9 (RST 5.5): Se activa por nivel 1 lógico, que debe mantenerse hasta que la petición de

interrupción sea atendida. Es enmascarable por programa (Idem a la anterior). Permite enganchar

en la dirección 002CH.

· Patilla 10 (INTR): Interrupción. Cuando en esta patilla introducimos un 1 lógico, el contador de

programa no se incrementa y el 8085 busca una instrucción que entra a la CPU por el bus de datos

mediante hardware externo y activa INTA que es la señal de reconocimiento. Se puede entonces

presentar el código de operación de una instrucción RST o CALL para realizar el subprograma de

tratamiento de la interrupción. La interrupción queda autorizada o prohibida por programa (EI o DI).

Queda prohibida a continuación de un RESET o inmediatamente después de una interrupción.

Forma un segundo grupo de interrupciones al emplear las instrucciones RST 1,2,3,4,5,6 y 7. INTA

es la señal de reconocimiento. Las instrucciones RESTART pueden producir interrupciones por

software, pero al activar esta patilla INTR del 8085A, si se introduce por el bus de datos el código

de una instrucción RST, la interrupción se produce por hardware.

· Patilla 11 (INTA): Reemplaza a RD en una operación de lectura de instrucción que sea una

interrupción.

· Patillas 12 a 19 (AD0 a AD7): Conforman el bus de datos/direcciones multiplexado durante la

ejecución de una instrucción. Transporta desde el principio la parte BAJA del bus de direcciones

para a continuación transportar los 8 bits de datos. Este bus está en estado de ALTA IMPEDANCIA

durante un HOLD o durante un HLT. Es un bus tri-estado.

· Patilla 20 (GND): Masa o tensión de referencia.

· Patillas 21 a 28 (A8 a A15): Transporta la parte ALTA del bus de direcciones. Está en estado de

ALTA IMPEDANCIA con un HOLD o un HLT. Es un bus tri-estado.

· Patilla 29 (S0): Es una salida que codifica el estado del bus de datos durante el curso del ciclo de

máquina que está en ejecución (junto con S1).

· Patilla 30 (ALE): Libera un impulso cada vez que el bus AD0-AD7 presenta la parte baja de una

dirección. Se utiliza para diferenciar entre la parte baja de la dirección y el dato que se presentará a

continuación.

· Patilla 31 (WR): Indica que el dato presente en el bus de datos debe quedar escrito en la memoria

o en la E/S direccionada. Nivel bajo activo.

· Patilla 32 (RD): Indica que el dato presente en el bus de datos debe ser leído de la memoria o de

una E/S direccionada. Nivel bajo activo.

· Patilla 33 (S1): Salida que codifica el estado del bus de datos junto con S0.

· Patilla 34 (IO/M): Si es un 1 indica que el microprocesador selecciona una E/S en el caso de una

instrucción IN u OUT. Si es 0 selecciona la memoria.

Page 14: microprocesador 8085

14

· Patilla 35 (READY): Es una entrada que indica que la memoria o E/S seleccionada por un ciclo de

escritura o lectura está dispuesta a recibir o proveer el dato. Si es 0 el

8085 espera a su puesta a 1 antes de seguir su ciclo de lectura o escritura.

· Patilla 36 (RESET IN): Si es activada con un 0, se reinicializa el contador de programa a 0000H,

así como la autorización de interrupción.

· Patilla 37 (CLK OUT): Señal de salida de reloj del 8085. También llamada CLK.

· Patilla 38 (HLDA): Si es un 1 indica que el microprocesador responde a la demanda de espera

(HOLD) y que el bus y líneas de control están en estado de alta impedancia.

· Patilla 39 (HOLD): Indica que algún otro usuario está solicitando el acceso el bus de direcciones y

al bus de datos. El microprocesador termina la ejecución del ciclo en curso, después posiciona en

estado de alta impedancia al bus AD0-AD15 y las líneas de control RD, WR e IO/M, señalando este

paso sobre la línea HLDA.

· Patilla 40 (Vcc): Tensión de alimentación de +5V.

Page 15: microprocesador 8085

15

DESCRIPCION FUNCIONAL DEL MICROPROCESADOR 8085 DE INTEL:

Del mismo modo que hasta ahora hemos descrito con detalle todos los terminales del

microprocesador, lo cual nos permitirá abordar en cierta medida el diseño de un sistema

electrónico, ahora llevaremos a cabo un estudio básico del funcionamiento interno del

microprocesador, que nos permitirá posteriormente iniciar trabajos de programación.

Para realizar esta tarea nos apoyaremos en el diagrama de bloques representado en la FIG.15A,

en la que podemos apreciar los siguientes elementos característicos:

· El conjunto decodificador/secuenciador que lleva incluido el generador de reloj y el sistema

controlador.

· El conjunto unidad aritmética/lógica y sus registros asociados: acumulador de 8 bits, registro

temporal y registro de los indicadores o señalizadores (flags).

· El conjunto de los registros de trabajo (B, C, D, E, H y L) de 8 bits, el Contador de

Programa (PC)y Puntero de Pila (SP), ambos de 16 bits.

· El control de las interrupciones que comanda un grupo de 5 señales de interrupción

y genera una señal de salida que nos marca una interrupción aceptada.

· El control de las entradas / salidas serie.

· Los buffers que generan los buses de direcciones y datos.

Todos y cada uno de estos bloques están controlados por la microprogramación interna que

interpreta y ejecuta las instrucciones recibidas del programa que se esté ejecutando. Y de acuerdo

a esas directrices actuará sobre los datos e informaciones y los moverá a través de registros y

bloques para obtener el resultado deseado. Debe decirse que estos procesos de trabajo interno del

microprocesador no son accesibles al usuario, es decir, el programador puede indicar la instrucción

a ejecutar, pero no puede decirle al microprocesador cómo ha de ejecutarla.

Page 16: microprocesador 8085

16

DIAGRAMA DE BLOQUES DEL 8085 DE INTEL:

Page 17: microprocesador 8085

17

Por tanto desde el punto de vista de la persona que deba realizar los programas, es fundamental

conocer que el microprocesador dispone de:

· Seis registros (B,C,D,E,H y L) que pueden ser usados para almacenar datos temporalmente de 8

bits, o bien pueden emplearse por pares (BC,DE y HL) para retener informaciones de hasta 16 bits.

· El “Puntero de Pila” o Stack Pointer (SP) que es un registro de 16 bits y se usa para direccionar

por programa la parte de la pila en la que se debe guardar una determinada dirección o en la que

se debe salvar un determinado dato. Normalmente debe apuntar a la cima de la pila.

· El “Contador de Programa” o Program Counter (PC). Al poner en funcionamiento el sistema

arranca de la posición inicial 0000H y se va incrementando secuencialmente a la velocidad

marcada por el cristal de cuarzo del sistema. La secuencia del contador de programa puede ser

alterada mediante determinadas instrucciones del programa.

· El Acumulador, que es un registro de 8 bits, con el que el microprocesador realiza las operaciones

lógicas, aritméticas, etc. según el desarrollo del programa.

· Registro de Estados (FLAGS), tiene 8 bits y nos indica en cada momento cual es el estado del

acumulador después de haber realizado la última operación. El formato de este registro es como

sigue:

- CARRY.- En este bit del registro de estados, aparecerá un 1 lógico cuando la última operación

realizada con el acumulador, desborde el contenido del mismo.

- PARITY.- En este bit aparecerá un 1 lógico cuando el número de "unos" que hay en el

acumulador sea par. Si es impar aparecerá un 0 lógico.

- AUX CARRY.- Aquí aparece un 1 lógico cuando hay acarreo en el cuarto bit del acumulador. Este

bit se usa generalmente para ejecutar instrucciones de "ajuste decimal".

- ZERO.- En este bit aparece un 1 lógico cuando el contenido del acumulador es 0000 0000. En

caso contrario aparece un 0 lógico.

- SIGN.- Este es el bit del signo que nos indica, cuándo el dato que hay en el acumulador es un

número positivo o negativo.

· Registro de máscara de interrupciones (I). Tiene dos aspectos diferentes según sea leído

(mediante una instrucción RIM) o escrito (mediante una instrucción SIM).

Page 18: microprocesador 8085

18

Cuando procedemos a una lectura del registro de máscara de interrupciones, mediante la

instrucción RIM, se obtiene el siguiente formato SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5 Siendo el bit

SID el dato de entrada serie al microprocesador, los bits I7.5, I6.5 e I5.5 nos indican las

interrupciones pendientes de servicio, el bit IE es el flag de interrupciones habilitadas y finalmente

los bits M7.5, M6.5 y M5.5 nos permiten poner los enmascaramientos de las interrupciones. (Ver

instrucción RIM del 8085). Cuando se procede a escribir en el registro de máscara de

interrupciones, mediante la instrucción SIM, el formato a considerar es ahora

SOD SOE X R7.5 MSE M7.5 M6.5 M5.5 Siendo en este caso el bit SOD el dato de salida, el bit

SOE la autorización de la salida serie, el bit R7.5 nos da la posibilidad de realizar un reset en la

interrupción 7.5, el bit MSE autoriza el enmascaramiento de las interrupciones y finalmente los bits

M7.5, M6.5 y M5.5 ponen las máscaras de cada interrupción respectivamente. (Ver instrucción SIM

del 8085).

· Dos Bloques Buffers que genera el microprocesador, en los que puede apreciarse cómo la parte

alta del bus de direcciones se constituye de forma independiente, mientras que la parte baja es

compartida con el bus de datos. Así pues es necesario un multiplexado adecuado, mediante el cual

los periféricos asociados sepan cuándo se trata de la parte baja de una dirección o de un dato. La

señal que identifica este proceso de multiplexado es ALE.

· Un bloque que genera el bus de control del sistema.

· Un bloque que permite cinco tipos diferentes de interrupciones.

· El conjunto de control de Entrada/Salida serie.

INSTRUCCIONES DEL MICROPROCESADOR 8085:

Básicamente se pueden tener los siguientes tipos de instrucciones:

- MOV r1, r2: Mueve el contenido del registro r2 a r1 (ej.: MOV A, B, MOV L, C).

- MOV r, M; MOV M, r: Mueve el contenido de un registro a la posición de memoria M definida por la pareja de registros HL, y viceversa (ej.: MOV C,

M, MOV M, A).

- MVI r, byte: Carga un registro con un valor numérico de un byte de longitud (ej.: MVI D, 03H).

- LXI rp, dbyte: Carga una pareja de registros con un valor de 2 bytes de

longitud (ej.: LXI H, 0010H, LXI B, 25AFH).

- LDA addr: Carga al acumulador con el contenido de la dirección indicada (ej.: LDA FF00H).

- STA addr: Guarda el contenido del acumulador en la dirección indicada

(ej.: STA FF00H).

Page 19: microprocesador 8085

19

Page 20: microprocesador 8085

20

• Instrucciones lógicas y aritméticas:

La mayoría de instrucciones de este tipo afectan las banderas del registro de estado (Z,

S, AC, P, CY). El resultado de toda operación que incluya al acumulador, es almacenado en el

mismo acumulador. Básicamente se pueden tener los siguientes tipos de instrucciones:

- ADD r: Suma el contenido del registro especificado con el contenido del acumulador (ej.: ADD C,

ADD L).

- ADD M: Suma el contenido almacenado en la dirección de memoria M especificada por los

registros HL, con el contenido del acumulador (ej.:

ADD M).

- ADI byte: Suma al acumulador el valor numérico especificado (ej.: ADI 05H).

- ADC r; ADC M; ACI byte: Realizan lo mismo que ADD r, ADD M y ADI byte, excepto que si se

produce un acarreo, este también es sumado.

- SUB r; SUB M; SUI byte; SBB r; SBB M; SBI byte: Restan un valor del acumulador (ej.: SUB B,

SUB M, SUI 05H).

- INR r: Incrementa en una unidad al registros especificado (ej.: INR B).

- INR M: Incrementa en una unidad al contenido de la dirección de memoria M (ej.: INR M).

- DCR r; DCR M: Realizan las operaciones inversas a INR r y INR M

- ANA r: Realiza la operación lógica AND entre el acumulador y el registro r (ej.: ANA C, ANA L).

- ANA M: Realiza la operación lógica AND entre el acumulador y el contenido de la dirección de

memoria M (ej.: ANA M).

- ANI byte: Realiza la operación lógica AND entre el acumulador y el valor numérico especificado

(ej.: ANI 05H).

- ORA r; ORA M; ORI byte: Realizan la operación lógica OR.

- XRA r; XRA M; XRI byte: Realizan la operación lógica XOR.

- CMP r; CMP M; CPI byte: Realizan una comparación con el acumulador.

Si son iguales, la bandera Z se pone en 1 y si el acumulador es el menor,

CY se pone en 1.

- RLC: Rota el acumulador una posición a la izquierda (en el sentido del bit 0 al bit 7)

- RRC: Rota el acumulador una posición a la derecha (en el sentido del bit 7 al bit 0)

- CMA: Complementa el valor del acumulador, es decir, realiza una operación lógica NOT con cada

bit del acumulador.

Page 21: microprocesador 8085

21

• Instrucciones de control de bifurcación o cambio de secuencia del programa:

Estas instrucciones alteran el contenido del contador de Programa y pueden o no depender de una

condición específica. Básicamente se pueden tener los siguientes tipos de instrucciones:

- JMP addr: Carga el contador de programa con la dirección especificada, es decir, “salta” a la

dirección especificada para continuar la ejecución del programa desde esa dirección (ej.: JMP

0010H, JMP SIGUIENTE).

- JNZ addr: Salta si la bandera Z es cero.

- JZ addr: Salta si la bandera Z es uno.

- JNC addr: Salta si la bandera CY es cero.

- JC addr: Salta si la bandera CY es uno.

- JP addr: Salta si la bandera S es cero.

- JM addr: Salta si la bandera S es uno.

- CALL addr: Opera de la misma manera que JMP, sin embargo en este caso guarda la dirección

actual más uno, en la pila. Debido a esto su uso es exclusivo para llamadas subrutinas (ej.: CALL

1010H, CALL LUCES)

- CNZ addr; CZ addr; CNC addr; CC addr; CP addr; CM addr: Operan como CALL pero basadas en

una condición específica.

- RET: Trabaja en conjunto con CALL, su función es recuperar la última dirección guardada en la

pila, es decir, restablece el contador de programa.

- RNZ; RZ; RNC; RC; RP; RM: Operan como RET pero basadas en una condición específica.

• Instrucciones de control, entrada / salida y de manejo de pila:

Básicamente se pueden tener los siguientes tipos de instrucciones:

- PUSH rp: Mueve a la pila el par de registros especificado, se utiliza para respaldar los registros en

el caso de que vayan a ser utilizados por una subrutina (ej.: PUSH B, PUSH H).

- PUSH PSW: A diferencia de PUSH rp, en este caso respalda al acumulador junto al registro de

estado.

- POP rp; POP PSW: Realizan la función contraria a PUSH, es decir, recuperan los valores

almacenados en la pila.

Page 22: microprocesador 8085

22

- IN port: Carga en el acumulador el dato proveniente de un periférico específico cuya dirección es

PORT (ej.: IN 00H, IN PORTA).

- OUT port: Envía el dato almacenado en el acumulador a un periférico específico cuya dirección es

PORT (ej.: OUT 01H, IN PORTB).

- HLT: Detiene al contador de programa, por lo que el procesador se dice esta “congelado”, dicho

estado se mantiene hasta que se le dé un reset al procesador.

- NOP: No realiza ninguna operación, por lo que se dice que es un “código muerto”. Se utiliza para

perder tiempo de ejecución del procesador, de esta manera se retarda el funcionamiento del

procesador sin alterar ningún registro. Es común encontrarlo en demoras de tiempo.

EJEMPLOS DE PROGRAMACION:

Para finalizar, se presentan algunos programas básicos que demuestran la aplicación de varias de

las instrucciones antes analizadas así como también detalles de la programación en lenguaje

ensamblador.

• Ejemplo 1:

;El siguiente programa realiza la siguiente operación: SUM = NUM1 + NUM2

;si el resultado es igual a un número LIM,

;realiza la siguiente operación RES = SUM - NUM3.

;************************************************************************

;************************************************************************

;Define constantes utilizadas por el programa

NUM1 .EQU 05H ;Número 1

NUM2 .EQU 02H ;Número 2

NUM3 .EQU 03H ;Número 3

LIM .EQU 07H ;Límite de Comparación

;************************************************************************

;************************************************************************

;El siguiente código representa al programa principal

.ORG 0000H ;Inicia en la posición de memoria 0000H

MVI A, NUM1 ;Carga número 1 en el Registro A

MVI B, NUM2 ;Carga número 2 en el Registro B

MVI C, NUM3 ;Carga número 3 en el Registro c

MVI D, LIM ;Carga límite en el Registro D

ADD B ;Realiza NUM1 + NUM2

CMP D ;Compara el resultado de la suma

JZ RESTAR ;Si es igual al límite entonces salta a RESTAR

HLT ;Caso contrario se detiene

RESTAR:

SUB C ;Realiza SUM - NUM3

HLT ;Detiene al procesador

;************************************************************************

;************************************************************************

.END

Page 23: microprocesador 8085

23

• Ejemplo 2:

;El siguiente programa llama a dos rutinas de tiempo de un lazo y de doble lazo,

;mientras rota el dato en el registro A.

;El tiempo que demore la rutina depende del cristal utilizado.

;Para un cristal de 2MHz, la primera rutina se demora 1 mseg y la segunda 3mseg

;***************************************************************************************

;***************************************************************************************

;Define constantes utilizadas por el programa

TIEMPO1 .EQU 03H ;Número de veces que se repie el lazo 1

TIEMPO2 .EQU 02H ;Número de veces que se repie el lazo 2

;***************************************************************************************

;***************************************************************************************

;El siguiente código representa al programa principal

.ORG 0000H ;Inicia en la posición de memoria 0000H

MVI A, 01H ;Carga registro de prueba

REPITE:

CALL DEMORA1 ;Llama rutina 1

RLC ;Rota el acumulador 1 bit a la izquierda

CALL DEMORA2 ;Llama rutina 2

RLC ;Rota el acumulador 1 bit a la izquierda

JMP REPITE ;Salta a etiqueta REPITE

;***************************************************************************************

;***************************************************************************************

;El siguiente código representa una demora de tiempo de un lazo

.ORG 0040H ;Inicia en la posición de memoria 0040H

DEMORA1:

MVI B, TIEMPO1 ;Carga contador del lazo 1

LAZO1: DCR B ;Decrementa por uno le registro B

NOP ;No hace nada

JNZ LAZO1 ;Salta si el resultado no es cero

RET ;Regresa al programa principal

;***************************************************************************************

;***************************************************************************************

;El siguiente código representa una demora de tiempo de dos lazos

.ORG 0060H ;Inicia en la posición de memoria 0060H

DEMORA2:

MVI B, TIEMPO1 ;Carga contador del lazo 1

LAZO3: MVI C, TIEMPO2 ;Carga contador del lazo 2

LAZO2: DCR C ;Decrementa por uno le registro C

NOP ;No hace nada

JNZ LAZO2 ;Salta si el resultado no es cero

DCR B ;Decrementa por uno le registro B

JNZ LAZO3 ;Salta si el resultado no es cero

RET ;Regresa al programa principal

;***************************************************************************************

;***************************************************************************************

.END

Page 24: microprocesador 8085

24

• Ejemplo 3:

;El siguiente programa realiza un sencillo juego de luces utilizando al 8155

;para tal motivo configura el puerto A como salida de datos.

;***************************************************************************************

;***************************************************************************************

;Define constantes utilizadas por el programa

REG_CONF .EQU 00H ;Dirección del registro de configuración del 8155

PORTA .EQU 01H ;Dirección del PORTA del 8155

TIEMPO .EQU 01H ;Establece el tiempo de la demora

;***************************************************************************************

;***************************************************************************************

;El siguiente código representa al programa principal

.ORG 0000H ;Inicia en la posición de memoria 0000H

MVI A, 0FH ;Configura PORTA como salidas

OUT REG_CONF

MVI A, 01H ;Envía 00000001b al puerto A

ROTAR: OUT PORTA

CALL DEMORA ;Espera cierto tiempo

RLC ;Rota el acumulador 1 bit a la izquierda

JMP ROTAR ;Salta a la etiqueta ROTAR

;***************************************************************************************

;***************************************************************************************

;El siguiente código representa una demora de tiempo la cual nos permite observar más

;detenidamente la secuencia de luces.

.ORG 0040H ;Inicia en la posición de memoria 0040H

DEMORA: MVI B, TIEMPO ;Carga contador del lazo 1

LAZO2: MVI C, 0FFH ;Carga contador del lazo 2

LAZO1: DCR C ;Decrementa por uno le registro C

JNZ LAZO1 ;Salta si el resultado no es cero

DCR B ;Decrementa por uno le registro B

JNZ LAZO2 ;Salta si el resultado no es cero

RET ;Regresa al programa principal

;***************************************************************************************

;********************************* ******************************************************

.END

Page 25: microprocesador 8085

25

CONCLUSION:

En el desarrollo tecnológico, en el crecimiento de la evolución necesaria de la

automatización en la vida cotidiana, nos encontramos con estos pequeños

físicamente, pero muy grandes en funcionalidad y gigantescos en manejo de

información, los Microprocesadores, son una de las más grandes invenciones

creadas por el hombre, en esa miniaturización siempre de lo accesible para el

hombre, nace como resultado este dispositivo con una gran capacidad llamada en si

también como cerebro o el mas cercano al cerebro humano, manejando lógica y

aritmética podemos controlar y desarrollar muchas y sin fin de cosas, todo gracias a

este pequeño artefacto. Y en la investigación específicamente del Microprocesador

8085, se denota el manejo complejo en instrucciones pero sin duda alguna muy

sencillo en comprensión, todas su funcionalidad dada y creada para el desarrollo y la

rapidez de procesamiento de información, todo esto ha venido a mejorar en mucho la

vida del hombre en la faz del tierra, y sin duda alguna que seguirá siendo una

innovación completa para el mismo hombre.

Page 26: microprocesador 8085

26

RECOMENDACIONES:

Se recomienda adentrarse en la lectura y análisis del funcionamiento de los distintos

Microprocesadores existentes, para que según el conocimiento adquirido y el análisis el

programador o electrónico constate las miles de aplicaciones en la cual puede o están

sujetados los Microprocesadores.

Cada Microcontrolador tiene sus referencias gracias al creador o empresa realizadora de

este dispositivo, se recomienda indagar e investigar acerca de algún microprocesador

antes de su adquisición.

Para mejorar y siempre obtener respuestas, antes de la creación de un proyecto o

programación, lo favorable es simularlo mediante software, para corregir posibles errores

no visibles.

En el paso de programación o creación de las instrucciones, se debe tener en cuenta que

de acuerdo al lenguaje procedido (Assembler, C, Basic, Pascal…etc) así será el resultado

obtenido, para dar el mayor rendimiento del Microprocesador se recomienda siempre

.asm ya que este interactúa directamente con el Microprocesador obteniendo mayor

eficiencia y velocidad.

Page 27: microprocesador 8085

27

BIBLIOGRAFIA:

Revista:

MICROPROCESADORES – CURSO PRACTICO REVISTA N° 7 2010

Páginas WEB:

http://www.alpertron.com.ar/8085.HTM

http://www.ehowenespanol.com/informacion-microprocesador-intel-8085-sobre_138668/

http://proton.ucting.udg.mx/temas/microprocesadores/mcs/caracteristicas_generales_de_808.htm