Vous êtes sur la page 1sur 44

1.1 INTRODUCCION A LOS MICROPROCESADORES El microprocesador es uno de los logros ms sobresalientes del siglo XX.

Esas son palabras atrevidas, y hace un cuarto de siglo tal afirmacin habra parecido absurda. Pero cada ao, el microprocesador se acerca ms al centro de nuestras vidas, forjndose un sitio en el ncleo de una mquina tras otra. Su presencia ha comenzado a cambiar la forma en que percibimos el mundo e incluso a nosotros mismos. Cada vez se hace ms difcil pasar por alto el microprocesador como otro simple producto en una larga lnea de innovaciones tecnolgicas. Ninguna otra invencin en la historia se ha diseminado tan aprisa por todo el mundo o ha tocado tan profundamente tantos aspectos de la existencia humana. Hoy existen casi 15,000 millones de microchips de alguna clase en uso (el equivalente de dos computadoras poderosas para cada hombre, mujer y nio del planeta). De cara a esa realidad, quin puede dudar que el microprocesador no slo est transformando los productos que usamos, sino tambin nuestra forma de vivir y, por ltimo, la forma en que percibimos la realidad? No obstante que reconocemos la penetracin del microprocesador en nuestras vidas, ya estamos creciendo indiferentes a la presencia de esos miles de mquinas diminutas que nos encontramos sin saberlo todos los das. As que, antes de que se integre de manera demasiado imperceptible en nuestra diaria existencia, es el momento de celebrar al microprocesador y la revolucin que ha originado, para apreciar el milagro que es en realidad cada uno de esos chips de silicio diminutos y meditar acerca de su significado para nuestras vidas y las de nuestros descendientes.

1.1.2

DEFINICION DEL MICROPROCESADOR

El microprocesador es la parte de la computadora diseada para llevar acabo o ejecutar los programas. Este viene siendo el cerebro de la computadora, el motor, el corazn de esta mquina. Este ejecuta instrucciones que se le dan a la computadora a muy bajo nivel haciendo operaciones lgicas simples, como sumar, restar, multiplicar y dividir. El microprocesador, o simplemente el micro, es el cerebro del ordenador. Es un chip, un tipo de componente electrnico en cuyo interior existen miles (o millones) de elementos llamados transistores, cuya combinacin permite realizar el trabajo que tenga encomendado el chip. 1.1.3 Tipos de microprocesador segn su velocidad y ancho de palabra Las caractersticas bsicas que definen a un microprocesador son la longitud depalabra (comnmente de 8, 16, 32, 64 128 bits), la velocidad de ejecucin y lacapacidad de gestionar interrupciones.Otras de sus calidades diferenciativas, son el nmero de instrucciones, el nmerode registros, y los tipos de direccionamiento. La longitud de la palabra se refiere al nmero de bits que procesasimultneamente un microprocesador y se determina por su arquitectura, es decir,por el tamao de los registros, de la unidad lgica y aritmtica (ALU) y de losbuses internos. La longitud de la palabra crece conforme las nuevas tecnologas lopermiten.El primer microprocesador tena una longitud de 4 bits, ahora y una frecuencia de108 KHz, el microprocesador PENTIUM IV tiene una longitud de palabra de 64bits, con una frecuencia de 2GHz.

1.2 Arquitectura del microprocesador A travs de diagrama a bloques La unidad central de proceso (CPU) o microprocesador, es el verdadero cerebrode la computadora. Su misin consiste en controlar y coordinar todas lasoperaciones del sistema. Para ello extrae, una a una, las instrucciones delprograma que est en la memoria central del computadora (memoria RAM),lasanaliza y emite las rdenes necesarias para su completa realizacin.Para entender cmo funciona un microprocesador, hay que tener en primer lugar una clara idea acerca de su arquitectura. De otro modo, ser prcticamenteimposible hacerse una idea sobre su funcionamiento. De una forma global,podemos considerar al microprocesador dividido en tres grandes bloques: UNIDAD DE DECODIFICACION Se encarga de decodificar la instruccin que se va a ejecutar. Es decir, saber qu instruccin es. Cuando el microprocesador lee de memoria una instruccin, el cdigo de esa instruccin le llega a esta unidad. Esta unidad se encarga de interpretar ese cdigo para averiguar el tipo de instruccin a realizar. Por ejemplo, instrucciones de suma, multiplicacin, almacenamiento de datos en memoria, etc. UNIDAD DE EJECUCION Una vez que la unidad de decodificacin sabe cul es el significado de la instruccin leda de memoria, se lo comunica a la unidad de ejecucin. Esta unidad ser la encargada de consumar la ejecucin y para ello activar las seales necesarias y en un orden determinado. Es decir, es la encargada de dar las rdenes necesarias a las diversas partes del microprocesador para poder ejecutar cada una de las instrucciones. UNIDAD ARIRMETICOLOGICA La ALU (Aritmethic Logic Unit) es el bloque funcional del microprocesador encargado de realizar todas aquellas operaciones matemticas y logicas asi como tambien operaciones de corrimiento. Las operaciones que realiza son las siguientes: suma, resta, multiplicacin, divisin y aquellas que trabajan con dgitos binarios (10 que se conoce como operaciones lgicas: AND, NOR, NOT, NAND,OR, X-OR, etc).En suma, saber cmo funciona un microprocesador, implica conocer cmo se van ejecutando cada una de las instrucciones del programa que se almacena en memoria. Los pasos globales que se siguen a la hora de ejecutar una instruccin son:

PARTES DE CPU Vamos a profundizar an ms en el estudio de las partes funcionales que componen un microprocesador. No significa que la primera divisin en bloques anterior fuera errnea, sino que era ms superficial..Podemos, entonces, considerar a un microprocesador compuesto por las dos siguientes unidades: UNIDAD DE CONTROL Y UNIDAD ARITMETICA LOGICA

UNIDAD DE CONTROL Es el centro nervioso del computadora, ya que desde ella se controlan y gobiernan todas las operaciones. Realiza las funciones bsicas de: -Tomar las instrucciones de memoria. -Decodificar o interpretar las instrucciones. -Ejecutar las instrucciones (tratar las situaciones de tipo interno (inherentes ala propia CPU) y de tipo externo (inherentes a los perifricos). Para funcionar de la manera anterior, la unidad de control consta de: -Contador de programa -Registro de instrucciones -Decodificador -Reloj Secuenciador Contador de programa. Contiene permanentemente la direccin de memoria de la siguiente instruccin a ejecutar. Al iniciar la ejecucin de un programa toma la direccin de su primera instruccin. Incrementa su valor en uno, de forma automtica, cada vez que se concluye una instruccin, salvo si la instruccin que se est ejecutando es de salto o de ruptura de secuencia, en cuyo caso el contador de programa tomar la direccin de la instruccin que se tenga que ejecutar a continuacin; esta direccin est en la propia instruccin en curso. Registro de instruccin. Contiene la instruccin que se est ejecutando en cada momento. Esta instruccin llevar consigo el cdigo de operacin (un cdigo que indica qu tipo de operacinse va a realizar, por ejemplo una suma) y en su caso los operandos (datos sobrelos que acta la instruccin, por ejemplo los nmeros a sumar) o las direccionesde memoria de estos operan dos. Decodificador. Se encarga de extraer el cdigo de operacin de la instruccin en curso (que est en el registro de instruccin), lo analiza y emite las seales necesarias al resto de elementos para su ejecucin a travs del secuenciador .

Reloj. Proporciona una sucesin de impulsos elctricos o ciclos a intervalos constantes(frecuencia constante), que marcan los instantes en que han de comenzar los distintos pasos de que consta cada instruccin.

Secuenciador. En este dispositivo se generan rdenes muy elementales (micrordenes) que, sincronizadas por los impulsos de reloj, hacen que se vaya ejecutando poco apoco la instruccin que est cargada en el registro de instruccin.

UNIDAD ARITMTICOLGICA (ALU): Esta unidad se encarga de realizar las operaciones elementales de tipo aritmtico (sumas, restas, productos, divisiones) y de tipo lgico (comparaciones). A travs de un bus interno se comunica con la unidad de control la cual le enva los datos y le indica la operacin a realizar .La ALU est formada a su vez por los siguientes elementos: Circuito operacional Registros de entrada (REN) Registro acumulador Registro de estado (flags) Circuito operacional. Contiene los circuitos necesarios para la realizacin de las operaciones con los datos procedentes de los registros de entrada (REN). Este circuito tiene unas entradas de rdenes para seleccionar la clase de operacin que debe realizar encada momento (suma, resta, etc.) Registros de entrada (REN). En ellos se almacenan los datos u operando que intervienen en una instruccin antes de la realizacin de la operacin por parte del circuito operacional.

Tambin se emplean para el almacenamiento de resultados intermedios o finales de las operaciones respectivas. Registro acumulador. Almacena los resultados de las operaciones llevadas a cabo por el circuito operacional. Est conectado con los registros de entrada para realimentacin en el caso de operaciones encadenadas. Asimismo tiene una conexin directa al bus de datos para el envo de los resultados a la memoria central o a la unidad de control. Registro de estado (flags). Se trata de unos registros de memoria en los que se deja constancia de algunas condiciones que se dieron en la ltima operacin realizada y que habrn de ser tenidas en cuenta en operaciones posteriores. Por ejemplo, en el caso de hacer una resta, tiene que quedar constancia si el resultado fue cero, positivo o negativo.

1.2.2.- Arquitectura externa del microprocesador (terminales): En un sistema digital se le da el nombre de puerto al medio fsico por el cual entran y salen datos al microprocesador. Los puertos de E/S son registros externos dedicados a aceptar y/o a enviar informacin a dispositivos perifricos. Un puerto de entrada (E) est compuesto slo por un buffer de tercer estado junto con un registro de almacenamiento (latch). El buffer de tercer estado tiene la funcin de controlar, es decir, aislar o permitir el flujo de informacin del puerto al bus de datos del microprocesador. El registro tiene la funcin de almacenar temporalmente la informacin generada por el dispositivo perifrico de entrada hasta que pueda ser leda por el microprocesador.

El dispositivo de entrada controla el almacenamiento de un dato en el registro, mientras que el microprocesador determina el estado del buffer (activo o en estado de alta impedancia) por medio de un pulso de seleccin. Puerto de Salida. La concepcin bsica de un puerto de salida es un simple registro de almacenamiento (latch), que conecta al bus de datos con el dispositivo de salida. El microprocesador coloca en el registro el dato que va a ser enviado al dispositivo perifrico por medio de un pulso de seleccin aplicado a la entrada de reloj del registro. Direccionamiento y Control de Puertos Para puertos de salida, circuitos externos combinan las seales IOQR, WR y la direccin del puerto y generan un pulso de seleccin nico para cada puerto. Este pulso acta a la manera de un pulso de escritura para grabar el dato en el puerto durante el ciclo de salida de una instruccin OUT que especifique ese puerto .El diseo de la circuitera de seleccin vara, dependiendo del nmero de dispositivo de E/S en el sistema y de las caractersticas de los circuitos que componen los puertos de E/S. Si nicamente se requiere un puerto de entrada y un puerto de salida, no es necesario decodificar los bits de direccin. Para generar los pulsos de seleccin de estos puertos bastan las seales E/SR y E/SW. En este caso el nmero de puerto no importa, pero de cualquier manera no puede omitirse en la instruccin .Cuando el sistema requiere ms de un puerto de entrada o de salida, entonces es necesario decodificar las lneas de direccin con el fin de generar los pulsos de seleccin para cada puerto en particular.

Circuitos Para la Implementacin de Puertos

Los puertos de E/S pueden implantarse con circuitos SSI, MSI o LSI. Sin embargo, para minimizar el nmero de componentes en general se usan circuitos MSI o LSI. Un puerto de salida de 8 bits se puede implantar con un circuito de tipo cerrojo (latch) de 8 bits como el 74LS373 o el 74LS374. El 74LS373 contiene 8 cerrojos disparados en el nivel positivo con una entrada comn de reloj activa en 1 lgico .El 74LS374 contiene 8 flip-flops tipo D disparados en la transicin positiva (0 a 1) con una entrada comn de reloj.

Ambos circuitos poseen salidas con buffers de tercer estado. Los buffers tienen una entrada de habilitacin activa en 0 lgico. Cuando alguno de estos circuitos se usa para implantar un puerto de salida, los buffers se mantienen activos todo el tiempo o son controlados por el dispositivo de salida. El circuito 9334 de Nacional proporciona 8

cerrojos (latches) direccionales individualmente, los cuales pueden utilizarse como 8 puertos de salida de un bit para propsitos de control. La entrada de datos del 9334 se conecta a una de las lneas del bus de datos. Cada uno de los cerrojos es seleccionado como un puerto de salida independiente por medio de tres lneas de direccin, con lo cual se puede cambiar el estado de un bit sin afectar el estado de los otros. Con este circuito solamente se requieren dos instrucciones para poner un bit en 0 o en 1lgico: una carga el acumulador con 00H o 01H; la otra es una instruccin de salida para el puerto (bit) seleccionado. Suponiendo un 9334 conectado al Z-80, como se muestra en la figura, la siguiente secuencia de instrucciones pone el bit 4en 1 lgico: En contraste, para cambiar un solo bit sin alterar ninguno de los otros bits de un puerto de salida en donde todos los bits son manejados simultneamente, por ejemplo un 74LS373 o un 74LS374, se vuelve necesario mantener en memoria una copia de la ltima informacin enviada al puerto. Compare la siguiente secuencia de instrucciones que pone en 1 lgico el bit 4 de un puerto implantado con un 74LS373, con la secuencia utilizada en el caso de un 9334:

Estructura comn de un puerto de E/S. Hay dos tipos posibles de transferencia controlada por programa: incondicional y condicional. Una TRANSFERENCIA INCONDICIONAL es aquella en que se envan o reciben datos de un puerto de E/S, sin averiguar si ste se encuentra listo para recibir o transmitir la informacin. Un ejemplo de una operacin de salida incondicional es la transmisin de un dato en BCD del microprocesador a un indicador de siete segmentos. El microprocesador no se asegura que el indicador est listo para recibir el dato, sencillamente supone que s lo est. La lectura del estado de un conjunto de interrupciones manuales muestra una operacin de entrada incondicional. Aqu de nuevo el microprocesador da por supuesto que los interruptores se han colocado en las posiciones deseadas. En la generalidad de los casos, los perifricos de E/S necesitan sincronizarse de alguna forma al microprocesador. ste no puede tratar a los dispositivos como si mantuvieran su informacin indefinidamente o como si pudieran recibir datos en cualquier momento. En vez de eso, el microprocesador debe ser capaz de determinar cuando un dispositivo tiene un dato nuevo de entrada o cuando est listo para recibir un dato de salida. As pues, en transferencias condicionales, la ejecucin de la instruccin de E/S que realiza la transferencia de datos, se condiciona a que el perifrico est listo para enviar o recibir el dato. La disponibilidad del perifrico se determina por medio de una transferencia incondicional de informacin de estado (status) del dispositivo de E/S al microprocesador, que precede a la transferencia del dato.

Al conjunto de operaciones implicadas en la transferencia condicional de un dato se le conoce como PROTOCOLO DE COMUNICACIN. En un protocolo de comunicacin entre dispositivos electrnicos, al igual que en las relaciones humanas, ocurre un intercambio de cortesas, en este caso seales elctricas, las cuales tienen como fin asegurar que la transferencia de informacin se realice en la forma ms conveniente para los participantes. Una de las formas ms comunes para implantar un protocolo es el procedimiento denominado VERIFICACIN o control de transferencia (HANDSHAKING, o apretn de manos). Aqu el transmisor indica al receptor la presencia de un dato (data ready) y enseguida transfiere el dato; el receptor completa la verificacin respondiendo a la recepcin del dato (input acknowledge). El receptor puede controlar la situacin solicitando inicialmente el dato o indicando su disponibilidad para aceptarlo (peripheral ready); luego el transmisor enva el dato y completa la verificacin avisando que la informacin est lista (output ready). En cualquier caso, el transmisor sabe si la transferencia se ha completado exitosamente y el receptor sabe cuando est disponible un nuevo dato. Las figuras 4.12 y 4.13muestran operaciones comunes de E/S usando un protocolo de verificacin.

Lectura de puerto (entrada) -Examinar el registro de estado del puerto y esperar a la seal que indique que el puerto est listo. -Enviar un comando de lectura al registro de control del puerto. Despus de iniciar la operacin, el microprocesador puede dedicarse a otras tareas. Cuando llega al punto en el que debe aceptar el dato del puerto, prosigue con el siguiente paso. -Examinar el registro de estado del puerto y esperar a la seal que indique la disponibilidad del dato. -Transferir al microprocesador el contenido del registro de datos del puerto.

Escritura en puerto (salida). -Examinar el registro de estado del puerto y esperar a la seal que indique que el puerto est listo. -Transferir el dato del microprocesador al registro de datos del puerto. -Enviar un comando de escritura al registro de control del puerto. El microprocesador puede pasar el control a otras tareas que se puedan ejecutar mientras se efecta la operacin de E/S.

En la siguiente figura se muestra el diagrama de una transferencia condicional controlada por programa.

Transferencia condicional controlada por programa

Hay varias maneras de proporcionar las seales de control y estado. Una es por medio de lneas de E/S dedicadas a este propsito. El microprocesador tiene acceso a ellas a travs de puertos adicionales. Un solo bit de estado puede indicar cundo un puerto de entrada tiene informacin disponible para ser leda o cuando un puerto de salida est listo para recibir informacin. Considrese, por ejemplo, un perifrico de entrada que ha colocado un dato en el puerto de entrada 1 (registro de datos), para ser transmitido al microprocesador. Para indicar la existencia de un dato, el perifrico pone en 1 lgico un flip-flops o bandera que corresponde al bit 7 del puerto de entrada 0 (registro de estado). Con el fin de determinar la presencia de un dato para ser ledo, el microprocesador peridicamente lee el contenido del registro de estado y examina el estado del bit; si el bit 7 es 1, hay un dato disponible y entonces una instruccin lo lee del puerto1. El pulso de seleccin que activa el buffer del puerto 1, tambin restablece (vuelve a 0 lgico) la bandera que indica la existencia de un dato. Cuando existen varios dispositivos de E/S en un sistema que utiliza E/S controlada por programa, el microprocesador debe preguntar por la disponibilidad de cada perifrico antes de que se efecte la transferencia de informacin. Este procedimiento es llamado ENCUESTA (POLLING).

En la subrutina de encuesta el microprocesador examina la bandera de cada dispositivo y ejecuta la secuencia de instrucciones que le da servicio al dispositivo si encuentras que la bandera correspondiente est activa. Adems, el procedimiento de encuesta establece un esquema jerrquico de servicio en el quela prioridad de los perifricos est determinada por el orden en que el microprocesador examina la bandera de estado de cada uno de ellos. Evidentemente, este procedimiento puede requerir una gran cantidad de tiempo de microprocesador si hay muchos dispositivos de E/S. Con frecuencia las banderas de estado de varios dispositivos o los bits independientes de control, son combinadas y manejadas por un solo puerto de entrada o salida respectivamente. La figura siguiente se muestra la combinacin de las banderas de dato disponible de 8 dispositivos de entrada en un byte comn de estado al que el microprocesador tiene acceso a travs de un puerto de entrada. El agrupar la informacin de estado y control en bytes reduce el nmero de direcciones para puertos de E/S requeridos por los perifricos. Sin embargo, esto implica que los bits individuales de estado deben aislarse para poder ser interpretados y que los bits de control deben ser determinados por separado.

Los procedimientos para aislar los bits de estado y para poner en 0 o en 1 lgico los bits de control son como sigue:

Para separar los bits de estado: Leer la informacin de estado del perifrico. Ejecutar la operacin AND con la mascarilla apropiada (la mascarilla debe tener unos en las posiciones de los bits que van a examinarse y ceros en las dems). Desplazar los bits separados a las posiciones menos significativas.

1.3 Conexin del microprocesador con dispositivos de: 1.3.1 Memoria 1.3.2.2 Interrupciones programables (8259) 1.3.2.3 De comunicacin serial

1.3.2 Perifricos

1.3.2.1 De interface programable (8255). Uno de los integrados universalmente usados en sistemas basados en microprocesadores es sin duda el 8255. Este circuito fue inicialmente diseado por Intel Corporation como parte del juego de integrados de apoyo a sus primeros sistemas de 16 bits (8086 y 8088). El chipset inclua numerosos dispositivos tales como controladores serie, controlador de CRT, gestores de acceso directo a memoria, controladores de unidades de disco, etc. La fuerte evolucin en el diseo de computadoras ha convertido a gran parte del chipset del 8086 en piezas de museo debido a que muchas de las funciones no tienen hoy da utilidad alguna (carece de sentido emplear viejos controladores de CRT o disco). Sin embargo existen una serie de componentes que conservan todava hoy, despus de veinte aos, toda su utilidad.

En concreto nos estamos refiriendo a la UART 8251 y al controlador de interfaz paralelo PPI 8255. En este artculo trataremos el 8255, un verstil y econmico integrado de fcil conexin a cualquier sistema basado en microprocesador o micro controlador, que proporciona de un modo elegante y sencillo puertos E/S disponibles.

La opcin ms correcta sera emplear estos dispositivos en un sistema basado en un 8086/8088 (actualmente manufacturados en versiones CMOS de bajo consumo y alta velocidad por OKI Semiconductor Corp.), si bien dada su versatilidad pueden ser empleados por cualquier otro sistema.

Entre las aplicaciones actuales podemos comprobar como el 8255 se encuentra con facilidad en tarjetas de expansin de puertos para el bus ISA del PC, ya que simplifica enormemente la elaboracin de la placa de circuito impreso aportando suficiente potencia de control. Es tambin ideal para expansin de puertos E/S en mono placas o gestin de perifricos como conversores analgico/digital y otros.

El 8255 se encapsula en formato DIP de 40 terminales como es habitual en los controladores del chipset 8086. Existen cinco grupos de seales, adems de los dos terminales de alimentacin: Grupo de control Bus de datos Puerto A Puerto B Puerto C

Los terminales del dispositivo se distribuyen del siguiente modo:

Bsicamente se trata de tres puertos (A, B,C) de ocho bits, encontrndose el puerto C dividido en dos puertos de cuatro bits. Estos cuatro puertos formados (dos de ocho bits y dos de cuatro) se organizan en dos grupos de 12 bits. Cada grupo contiene un puerto de ocho bits y otro de cuatro. El primer grupo comprende el puerto A y la parte alta del puerto C mientras que el segundo comprende el puerto B y la parte baja del puerto C. Grupo A: PA0...PA7 + PC4...PC7 Grupo B: PB0PB7 + PC0...PC3Estos grupos pueden operar en tres modos de funcionamiento diferentes:

Modo 0: Tres puertos de cuatro bits programables como entrada o salida. Modo 1: Un puerto de ocho bits programable como entrada o salida y un puerto de cuatro bits de control. Modo 2: Este modo configura al puerto A como un puerto bidireccional dejndolos cinco bits ms significativos del puerto C (PC3...PC7 ntese que emplea por tanto ms de un grupo) como lneas de control del puerto. Estos modos de operacin se definen mediante un octeto de estado del que hablaremos a continuacin. Para acceder tanto al octeto de estado como a los puertos en s debemos hacer uso de las seales de control del 8255. Dx: Bus de datos bidireccional con estado de alta impedancia. Conecta el dispositivo con el bus de datos del microprocesador. CS: Seal Chip select. Cualquier operacin sobre el chip requiere un nivel bajo en esta seal. Usualmente se compara la direccin emitida por el microprocesador mediante lgica externa y si dicha direccin corresponde con el rango asignado por el diseador al perifrico la lgica comparadora de direccin pondr a cero esta lnea. Mientras esta lnea se encuentre alta el bus de datos D7...D0 se encuentra en un estado de alta impedancia para permitir que otros perifricos hagan uso del bus del microprocesador. R D: Seal de lectura. Un valor bajo en esta seal dispondr en el bus de datosbidireccional.D7...D0 el valor del puerto indicado por las dos lneas de direccin A1 y A0. WR: Seal de escritura. Un valor bajo escribir el octeto presente en el bus de datos en el registro/puerto indicado por A1 y A0.

Hemos visto hasta ahora los diferentes puertos que existen y los modos de configurar los. Sabemos tambin que esto se realiza por medio del octeto de control (para ello realizamos una operacin de escritura sobre l, no siendo posible su lectura).Veremos a continuacin la descripcin completa de dicho octeto:

Bit 0: Puerto C bajo (1=Entrada, 0=Salida) Bit 1: Puerto B (1=Entrada, 0=Salida) Bit 2: Seleccin modo grupo uno (0=Modo 0, 1=Modo 1) Bit 3: Puerto C alto (1=Entrada, 0=Salida) Bit 4: Puerto A (1=Entrada, 0=Salida) Bit 5,6: Seleccin modo grupo dos (00=Modo 0, 01=1, 1x= 2) Bit 7: Flag de modo a uno (1=Activo)

Acceso individual al Puerto C. El bit 7 a uno permite acceder al registro de control y configurar el modo de funcionamiento del perifrico. Si a la hora de acceder a dicho registro ponemos acero el bit 7 accedemos al control individual de las lneas de salida del puerto C. Los puertos A y B son ledos y escritos en bloques de cuatro u ocho bits segn sea la configuracin de los mismos, pero el puerto C permite un acceso individual sobre las lneas de salida del mismo:

Bit 0: Valor de salida (1 0) Bit 3, 2, 1: Seleccin de bit (000=bit 0, 001=bit 1 ...111=bit 7) Bit 4, 5,6: No influyen, cualquier valor. Bit 7: Flag de modo (0=Acceso al puerto C).

Modo cero El modo de funcionamiento 0 es el ms simple posible. Los puertos se configuran como entrada y salidas. En el caso de que se configuren como salidas los datos se enclavan y permanecen invariables hasta la siguiente escritura. La lectura se realiza en el momento de efectuar la operacin sobre el 8255. El dispositivo opera por tanto como si de un transceptor multiplexado con catch de salida se tratase. Modo uno El modo de funcionamiento 1 puede emplearse en ambos grupos de pines. Proporciona un puerto de 8 bits y cuatro seales de control de cada mitad del puerto C que operan del siguiente modo en el caso de que se configure el puerto correspondiente como entrada:/STB: Strobe InputPC4 grupo A/PC2 grupo B

Cuando esta seal se pone a nivel bajo el dispositivo memoriza el estado del puerto de ocho bits. La siguiente operacin de lectura RD sobre el 8255 por parte del microprocesador devolver el estado del bus en el estado bajo de dicha seal. Permite efectuar por tanto lecturas del puerto de ocho bits de modo independiente del microprocesador que gestiona el 8255. IBF: Input Buffer Full Flag Output PC5 grupo A/PC1 grupo B Esta seal responde a STB subiendo a uno cuando el dato ha quedado enclavado durante el flanco de bajada de un pulso en STB. Vuelve a nivel lgico cero en el flanco de subida de la seal de lectura RD.

INTR: Interrupt request output PC3 grupo A/PC0 grupo B Esta salida sube a nivel alto (si el bit INTE est activado) en el flanco de subida de STB indicando al microprocesador que controla el 8255 la presencia de un dato en el dispositivo. Vuelve a bajar a nivel lgico cero en el flanco de bajada de RD. Para el grupo A el flag INTE est activado si lo est el bit PC4 mientras que para el grupo B el bit INTE est activado si lo est el bit PC2. El modo de activar o desactivar dichos bits es el descrito anteriormente mediante el acceso individual al puerto C. Si la configuracin indicada establece el puerto de 8 bits como salida la descripcin de los bits de control es la siguiente: /OBF Output Buffer Full Flag Output PC7 grupo A/PC1 grupo B Esta seal indica el estado de escritura en el puerto. Baja a nivel lgico cero en el flanco de subida de la seal de escritura /WR volviendo al nivel lgico 1 en el flanco de bajada de la seal de respuesta del dispositivo ACK. /ACK Acknowledge Input PC6 grupo A/PC2 grupo B Esta seal de entrada permite al terminal indicar al controlador 8255 que hare cogido el dato que el sistema le envi. Para ello el terminal pondr a cero esta entrada. INTR Interrupt request output PC3 grupo A/PC0 grupo B La seal pasa a nivel alto en el flanco de subida de /ACK y pasa a nivel lgico cero en el flanco de bajada de /WR, siempre y cuando los correspondientes bits INTE estn habilitados. Para el primer grupo INTEA corresponde al bit PC6 mientras que para el segundo grupo INTEB corresponde al bit PC2.

Modo dos
El modo 2 permite habilitar un puerto de 8 bits bidireccional. Solo es posible disponer de l con el grupo A. La descripcin de los pines es la siguiente: /OBF Output buffer full flag output PC7 La seal pasa a nivel lgico cero en el flanco de subida de /WR y vuelve al nivel lgico uno en el flanco de bajada de /ACK. Indica a la CPU que ha recogido el dato. /ACK Acknowledge input PC6 La entrada habilita el puerto A del 8255 al pasar al nivel lgico cero. El dato escrito en el registro interno del 8255 pasa al puerto A y el terminal lo lee. Al volver al nivel lgico uno el puerto A vuelve de nuevo al estado de alta impedancia. /STB Stobe input. PC4 Cuando esta entrada pasa a nivel lgico bajo la salida de datos hacia el puertodesde los pines es enclavada en el registro interno. El dato sale por el bus dedatos una vez se recibe la seal RD desde el microprocesador, si bien el buspermanece en alta impedancia hasta entonces. IBF Input buffer full flag output PC5 La seal pasa a nivel alto en el flanco de bajada de STB volviendo al nivel bajo enel flanco de subida de RD, indicando que el dato ha sido enclavado en el registrointerno del 8255. INTR Interrupt request output PC3 Esta seal se emplea del mismo modo que en el modo de funcionamiento nmero1. La diferencia estriba en que existen ahora dos bits INTE, uno para habilitar lainterrupcin en operaciones de salida (PC6) y otro para habilitar la interrupcin enoperaciones de entrada (PC4).

El 8255 es un interface programable de perifricos (PPI). Su funcin es la de uncomponente EIS de propsito general, para interfasar equipo perifrico al bus del sistemamicrocomputador. La configuracin funcional del 8255 es programada por el software delsistema, de manera que normalmente no se necesita circuiteria externa para interfasar perifricos o estructuras. CARACTERSTICAS. 8255 compatible con microprocesadores 8085. 24 pines de EIS programables. Totalmente compatible con UL. E Totalmente compatibles con la familia de microprocesadores INTEL. Caractersticas de tiempos mejorados. Capacidad de directo software de bit facilitando aplicaciones de interfaces de control. Circuito integrado DIP de 40 pines. Reduce el nmero de CI's a emplear. Capacidad de DC mejoradas

DESCRIPCION DE LOS PINES DEL 8255

El 8255 DE INTEL es un dispositivo de E/S de propsito general, tiene 24 pines de EISque pueden ser programados individualmente en dos grupos de 12 y usados en tresmodos de operacin principales. En el primer modo (modo O), cada grupo de 12 pinespuede programarse en grupos de 4 como entrada salida. En el segundo modo (modo 1),cada grupo puede programarse para tener 8 entradas salidas;de los 4 pines restantestres son empleados para protocolo (Handshaking) y control de interrupciones. El tercer modo de operacin (modo 2, es un modo de bus bidireccional, que usa 8 lneas para unbus bidireccional y 5 lneas, una prestada del otro grupo, para protocolo (handsking). El 8255 es una interfase para comunicacin en paralelo con perifricos. Las partes que loconstituyen se muestran en la figura anterior, a continuacin se describen estas partesdependiendo de su aplicacin.

BUFFER DELBUSDEDATOS. Este buffer bidireccional de 8 bits se usa para interfasar el 8255 al bus de datos delsistema. Los datos son enviados o recibidos por este buffer bajo la ejecucin deinstrucciones de entrada o salida por el CPU. Las palabras de control y la informacin delestado tambin se transfieren a travs de este bus. LOGICA DECONTROL Y DE LECTURA ESCRITURA La funcin de este es manejar todas las transferencia internas y externas de palabras dedatos, control o estados. Esta acepta entradas del bus de control y de direcciones delCPU, y en turno, define comandos para lo dos grupos de control. SELECCIN DE CHIP(CS') Un cero en este Pin de entrada habilita la comunicacin entre el 8255 y el CPU. LECTURA (RD') Un cero en este Pin de entrada habilita al 8255 a enviar los datos o informacin del estadoal CPU, sobre el bus de dato. Esencialmente este permite al CPU "leer del" 8255. SELECCIN DE PUERTO (Ao Y A1). Estas seales de entrada en conjunto con RO' y WR', controlan la seleccin de uno de lostres puertos o del registro de la palabra de control. AQ y A1 estn conectadas a los bitsmenos significativos del bus de direcciones. ESCRITURA (WR) Un cero en este Pm de entrada, permite al CPU escribir datos o palabras de control sobreel 8255. RESET Un uno (1) en esta lnea limpia el registro de control y todos los puertos (A, B, y C) seponen como modo de entrada. CONTROL DE RESET DE PUERTOS La configuracin funcional de cada puerto se programa por el software del sistema

En esencia, el CPU manda una palabra de control al 8255. la palabra de control contieneinformacin tal como 'modo', 'bit set', 'bit reset', etc.

Cada grupo de control acepta comandos de la unidad lgica de control lectura/escritura,reciben palabras de control del bus de datos interno y enva comandos apropiados a suspuertos asociados:

Grupo de control A: Puerto A y puerto C superior (C7-C4) Grupo de control B: Puerto B y puerto C inferior (C3-CO)

La palabra de control nicamente puede ser escrita. No se permite lectura del registro depalabra de control. 1.4 Lenguaje ensamblador del microprocesador 1.4.1 Registros 1.4.2 Declaracin de segmentos 1.4.3 Modos de direccionamiento 1.4.4 Control de dispositivos de entrada/salida 1.4.5 Conjunto de instrucciones 1.4.6 Esqueleto de un programa 1.4.7 Uso de procedimientos LENGUAJE ENSAMBLADOR El lenguaje ensamblador utiliza unos cdigos de operacin llamados mnemnicos.Los mnemnicos son instrucciones las cuales le indican al microprocesador quetipo de operacin debe de realizar, ya sea de carga de rotacin o de decremento.Se conoce como setde instrucciones al conjunto de instrucciones que es capaz deentender y ejecutar un microprocesador. El conjunto de instrucciones es para elmicroprocesador lo mismo que una tabla de verdad es para una compuerta lgica,un registro de desplazamiento o un circuito sumador. INSTRUCCIONES El conjunto de instrucciones de un microprocesador es el conjunto de entradasbinarias que producen acciones definidas durante un ciclo de instruccin. Unainstruccin es un patrn de dgitos binarios el cual debe estar a disposicin delmicroprocesador en el tiempo y forma que ste lo requiera. En funcin del tipo de microprocesador, podr entender y ejecutar ms o menosinstrucciones.Un programa es una serie de instrucciones que causan que la computadorarealice una tarea en particular.

Las instrucciones se clasifican segn su funcin en: Instrucciones de transferencia de datos Instrucciones de clculo Instrucciones de transferencia del control del programa Instrucciones de control

Instrucciones de transferencia de datos. Estas instrucciones mueven datos (que se consideran elementos deentrada/salida) desde la memoria hacia los registros internos del microprocesador,y viceversa. Tambin se usan para pasar datos de un registro a otro delmicroprocesador. Existen algunas instrucciones que permiten mover no slo undato, sino un conjunto de hasta 64 KBytes con una sola instruccin. Instrucciones de clculo. Son instrucciones destinadas a ejecutar ciertas operaciones aritmticas, como por ejemplo sumar, restar, multiplicar o dividir, o ciertas operaciones lgicas, como por ejemplo ANO, OR, as como desplazamiento y rotacin de bits . Instrucciones de transferencia del control del programa. Permiten romper la secuencia lineal del programa y saltar a otro punto del mismo.Pueden equivaler a la instruccin GOTO que traen muchos lenguajes de programacin. Instrucciones de control. Son instrucciones especiales o de control que actan sobre el propiomicroprocesador. Permiten acceder a diversas funciones, como por ejemploactivar o desactivar las interrupciones, pasar rdenes al coprocesador matemtico,detener la actividad del microprocesador hasta que se produzca una interrupcin,etc. Prcticamente todas las instrucciones estn formadas por dos elementos: cdigo de operacin que indica el tipo de operacin se va a realizar operandos, que son los datos sobre los que acta. Por ejemplo, una instruccin que sume dos nmeros est formado por: cdigo de operacin que indique "sumar" primer nmero a sumar segundo nmero a sumar

Existen instrucciones que slo tienen un operando o incluso que no tienenninguno, estan formadas solamente por el cdigo de operacin. EJECUCIN DE LAS INSTRUCCIONES Para que un programa pueda ser ejecutado por un computadora, ha de estar almacenado en la memoria central (memoria RAM). El microprocesador tomaruna a una las instrucciones que lo componen e ir realizando las tareas correspondientes

Se denomina ciclo de instruccin al conjunto de acciones que se llevan a cabo enla realizacin de una instruccin. Se compone de dos fases: Fase de bsqueda Fase de ejecucin

Fase de bsqueda. En esta fase se transfiere la instruccin que se va a ejecutar desde la memoriacentral a la unidad de control. El lenguaje ensamblador no resuelve todos los problemas de programacin. Unode ellos es la tremenda diferencia entre el set de instrucciones delmicroprocesador y las tareas que el microprocesador debe realizar. Lasinstrucciones del microprocesador tienden a hacer cosas como: sumar contenidosde dos registros, desplazar el contenido de un acumulador un bit, o colocar unnuevo valor en el contador de programa (PC). Por otro lado, el usuario generalmente quiere que la computadora haga cosascomo: chequear si un valor analgico ledo se excedi de un cierto umbral, buscar y reaccionar ante un comando particular de una consola o teletipo, o activar unrel en el momento apropiado. El programador de lenguaje ensamblador debetraducir estas tareas a secuencias de simples instrucciones de microprocesador.Esta traduccin suele ser dificultosa, consume tiempo de trabajo. Otro inconveniente es la no portabilidad. Cada microprocesador posee su propioset de instrucciones en el cual est reflejado su arquitectura interna. Para solucionar este inconveniente se utiliza un lenguaje de programacin de altoo medio nivel, como puede ser el lenguaje C. CONVENCIONESENLEESCRITURA DELCODIGOFUENTE. Para hacer la tarea del programador ms grata, se usan algunas convenciones.Cada uno puede adoptar las que ms le agraden y ayuden para ser msproductivo. En general, las convenciones son cualquier accin que facilita larevisin y comprensin de un programa, especialmente el que uno mismo haescrito cuando tiene que revisarlo algunos meses despus. Comentamos algunasconvenciones que usaremos:

Los ficheros de cdigo fuente llevarn la extensin *.ASM Los ficheros de listado llevarn la extensin *.LST Los ficheros de cdigo objeto llevarn la extensin *.OBJ Los ficheros de errores llevarn la extensin *.ERR Los ficheros ejecutables en formatoI ntel Hex llevarn la extensin *.HEX Los mnemnicos escritos en mayscula hacen que el cdigo escrito sea ms visible. En lo posible, usar comentarios explicando cada lnea de cdigo. Un prrafo de comentarios explica las rutinas o conjunto de instrucciones yaque los campos de comentarios suelen ser pequeos. El espacio entre caracteres se escribe _.RB0_E S_1 es ms fcil de leer queRB0 E S1. Recuerde que las convenciones son cualquier cosa que le haga ms fcil lalectura y comprensin de su cdigo, como por ejemplo: 1- Una cabecera estandarizada. 2- Colocar las rutinas en el mismo sitio, todas contiguas. 3- Dibujar diagramas de flujo o escribir seudocdigo. CARACTERISTICAS DEL ENSAMBLADOR CAMPOS DEL LENGUAJE ENSAMBLADOR: Las instrucciones estn divididas en un nmero de campos, como se muestra:

El campo del cdigo de operacines el nico que nunca puede estar vaco; ste siempre contiene una instruccin o una directiva del ensamblador. El campo del operando o direccin puede contener una direccin o un dato, opuede estar en blanco. El campo del comentario o de etiquetases opcional. El programador asignar una etiqueta a una lnea de instruccin o agregar un comentariosegn su conveniencia: normalmente, para hacer ms fcil el uso y la lectura; por ejemplo si va a retomar el trabajo dentro de tres semanas.

Delimitadores (separacin entre campos): Los campos van separados slo con espacios y/o tabulaciones. No agreguenunca otros caracteres (comas, puntos, etc.) No utilice espacios extra, particularmente despus de comas que separanoperandos. ( Ej: movlw 5,w ) No use caracteres delimitadores (espacios y tabulaciones) en nombres oetiquetas.

Etiquetas: La etiqueta es el primer campo en una lnea en lenguaje ensamblador y puede no existir Si una etiqueta est presente, el ensamblador la define como el equivalentea la direccin del primer byte correspondiente a esa instruccin.

Esta etiqueta puede volver a usarse en otro lugar pero como operandode unainstruccin. El ensamblador reemplazar sta etiqueta por el valor de cuando fue creada.Se usan frecuentemente en las instrucciones de salto. - No puede ex istir ms de una etiqueta en el 1 campo de instruccin. - No pueden usarse como nombres de etiquetas a palabras ya reservadas por el ensamblador ( ORG, EQU, etc. ) o nombres de instrucciones ( movlw,call, nop, etc.)

La instruccin goto INICIO causa que la direccin de la instruccin con laetiqueta START (movlw) se cargue en el PC. Por lo tanto sta instruccinser luego ejecutada. -No se permite el uso de nmeros o caracteres no alfabticos como 1 letrade la etiqueta. -Como regla prctica: usar siempre letras, y en mayscula. Ejemplos:

Mnemnicos (cdigos de operacin): La tarea principal del ensamblador es la traduccin de los cdigos de operacin enmnemnico en sus equivalentes binarios. El ensamblador realiza sta tareausando una tabla como si lo hicisemos a mano. El ensamblador debe hacer algo ms que traducir los cdigos de operacin.Tambin debe determinar cuantos operandos requiere la instruccin y de que tipo.

Esto es un poco complejo; algunas instrucciones (como CLRW, SLEEP) no tienenoperandos, otras (ADDLW 13, GOTO FIN) tienen una, mientras que otras (BSFSTATUS,C o BTFSS PORTA,0) requieren dos. DIRECTIVAS: Algunas instrucciones del lenguaje ensamblador no se traducen directamente ainstrucciones del lenguaje mquina. stas instrucciones son directivas para elensamblador ;stas asignan al programa ciertas reas de memoria, definensmbolos, designan reas de RAM para almacenamiento de datos temporales,colocan tablas o datos constantes en memoria y permiten referencias a otrosprogramas. Las directivas se utilizan como comandos escritos en el cdigo fuente para realizar un control directo o ahorrar tiempo a la hora de ensamblar. El resultado deincorporar directivas se puede ver en el fichero *.LST, despus de ensamblar el programa. Para usar stas directivas o pseudo-operandos, el programador las coloca en el campo del cdigo de operacin, y, si lo requiere la directiva, una direccin o datoen el campo de direccin. Las directivas ms comunes son: EQU (Equate) ORG (Origin) DEFB (Define Byte) DEFW (Define Word) END (fin del cdigo fuente) EQU (Equate - Equivalente): La directiva EQU permite al programador igualar nombres a datos o direcciones. Esta pseudo-operacin se nota EQU. Los nombres utilizados se refierengeneralmente a direcciones de dispositivos, datos numricos, direcciones decomienzo, direcciones fijas, posiciones de bits, etc.

Tambin se puede definir una equivalencia con el nombre de otra equivalencia ya definida.

El valor del operando debe estar ya definido anteriormente, sino el compilador entregar un error.

ORG (Origin - Origen): La directiva origen (se nota ORG) permite al programador especificar la posicin de memoria donde programas, subrutinas o datos residirn. Los programas y los datos pueden estar alojados en diferentes reas de memoria dependiendo de la configuracin de memoria. Rutinas de comienzo, subrutinas de interrupcin y otros programas deben comenzar en locaciones de memoria fijados por la estructura de microprocesador. La directiva ORG hace al compilador colocar el cdigo que le sigue en una nueva direccin de memoria (la salida del compilador no solo coloca los cdigos de operacin sino tambin las direcciones de cada instruccin y datos del programa). Usualmente se la utiliza para: reset, programas de servicios de interrupcin, almacenamiento en RAM, stack, programa principal, subrutinas.

j DEFB (Define Byte), DEFW (Define Word):Esta directiva le permite al programador ingresar datos fijos en la memoria deprograma. Estos datos pueden ser: Tablas de conversin Mensajes Nombres Umbrales Comandos Factores de conversin Identificacin de teclas Direcciones de subrutinas Esta directiva trata a los datos como parte permanente del programa.El formato es muy simple

Operandos y direcciones:Los ensambladores permiten elegir con libertad el tipo de elemento a colocar en elcampo de operando o direccin. Nmeros decimales: La mayora de los ensambladores asumen todos los nmeros como decimales ano ser que se marquen de otra manera. Por ejemplo: movlw 100 Significa: mover el nmero literal 100 (en decimal) al registro de trabajo W. Otros sistemas de numeracin: Los ensambladores tambin aceptan nmeros Hexadecimales, octales o binarios.Esta es la forma de representarlos:

Si se utiliza la forma 0A000H para representar nmeros hexadecimales, hay quetener en cuenta que el nmero debe comenzar siempre con un dgito entre 0 y 9(no acepta comenzar con las letras A a F);es por eso que el nmero A000h se loescribe 0A000h. Hexadecimal: es la numeracin por defecto. Para mayor claridad para elprogramador se utiliza una letra H al final del nmero. Por ejemplo: 0100h, 0A0H,5H, 66h. Importante: Como sta es la numeracin por defecto hay que tener muchocuidado al colocar nmeros en decimal. Por E jemplo la instruccin MOVLW 64 no utilizar el nmero 64 decimal sino el 100 decimal.

Binario: para escribir nmeros en binario utilizar Bxxxxxxxx (utilizar comillas simples). Por ejemplo: B01101001 , b11110000. Decimal: puede utilizar la forma: D200 (tambien con comillas simples) o laforma corta, anteponiendo un punto al nmero decimal. Esta es la forma utilizadaen todos los programas realizados por microchip. Por ejemplo: D112 d10 .200 .100 Tener en cuenta siempre el tamao de datos con el que se est trabajando. E n la mayora de los casos, se utilizar un nmero para almacenarlo en el acumulador y ste es de 8 bits. Por lo tanto el nmero utilizado no debe ex eder de 255 decimal o FF hexadecimal. Por ejemplo: Un error muy comn, y que el compilador avisa con un mensaje de peligro, es el siguiente: MOVLW 205. Nombres:Los nombres pueden aparecer en el campo de operando;stos son tratados comoel dato que representan. (Ver directiva EQU). Cdigos de caracteres: Algunos ensambladores permiten el uso de caracteres en ASCII.

Expresiones lgicas y aritmticas: Los ensambladores permiten combinaciones de datos con operandos especiales,aritmticos o lgicos. stos operandos se llaman expresiones.

En estos casos el compilador utilizar el resultado de sumar (VALOR+2) o (REG1+1) como operando.

ENSAMBLADO CONDICONAL Algunos ensambladores les permiten incluir o excluir partes de programa, dependiendo de condiciones que existan en el tiempo de compilacin.

En este caso el valor de SINK har que el compilador utilicedistintas instrucciones de cdigo. Si la CONDICION es verdadera en el tiempo de compilacin, las instrucciones queestn entre IF y ENDIF se incluirn en el programa. Los usos tpicos son: Para incluir o excluir variables extras. Para incluir cdigo de diagnstico en condiciones de testeo(DEBUG). Para permitir datos de distintos tamaos.

INCLUSION DE CODIGO Algunos ensambladores permiten incluir cdigo fuente (partes de programas)desde otros archivos.

Por ejemplo: Le dice al compilador que incluya el cdigo que se encuentra en el archivo DISPLAY.ASM como si fuese parte del propio programa. Esto se utiliza para reutilizar cdigos realizados con anterioridad. En el ejemplo delsiguiente punto lo vemos ms claro.

DEFINICIONES La directiva #define permite definir un nombre (cadena de caracteres) para que secomporte como otra cadena de caracteres vlida. Ejemplos: #define CINCO 5 Cada vez que se utilice la palabra CINCO ser reemplazada en elmomento de la compilacin por el nmero 5. #define PIN1 PORTA,1Cada vez que aparezca la palabra PIN1 en el cdigo, sta serinterpretada como PORTA,1 que es una instruccin vlida. #define BANCO1 BSF STATUS,RP0Cada vez que se utilice la palabra BANCO1, en realidad estar utilizandola instruccin BSF STATUS,RP0 Esta directiva es muy util para hacer el cdigo ms fcil de leer y entender.En el Apndice A se adjunta un ejemplo de directivas if, define, macros e include. MACROS A veces ocurren secuencias de instrucciones particulares en los programas queson repetitivas. Estas secuencias de instrucciones se pueden eliminar utilizando MACROS. Las macros permiten asignarle un nombre a una secuencia de instrucciones.Luego se utiliza el nombre de la macro en el programa como si se usase lasecuencia de instrucciones anterior. Las macros no son lo mismo que las subrutinas. El cdigo de las subrutinasaparece una sola vez en un programa y la ejecucin del programa salta a lasubrutina. En cambio, el ensamblador reemplaza cada ocurrencia del nombre dela macro con la secuencia especificada de instrucciones. Por consiguiente laejecucin del programa no salta a la macro como una subrutina. Veamos un ejemplo utilizando los conceptos vistos hasta ahora:

En la lnea de la Macro est el error.Que est ocurriendo? Los saltos no pueden saltar macros! Porque las macros estn compuestas por ms de una instruccin, y el salto se producira dentro de la misma. El cdigo anterior con la macro incrustada sera:

Otro tema importante, que aqu tambin observamos, es que las macros pueden modificar registros (en este caso W) en forma oculta al programador. En el ejemplo anterior, PORTA se debera cargar con 1, que aparentemente era el valor de W, pero la macro lo ha modificado; por consiguiente tenemos otro error.

MICROPROCESADOR Z80 El Z80 es una versin apreciablemente mejorada tanto en circuitera como encaractersticas de programacin del antiguo modelo INTEL 8080, el Z80 resultaser un microprocesador ms rpido y sencillo en el desarrollo de sistemas ya quesolo usa una fuente de alimentacin de +5 Volts, contiene ntegramente todo elconjunto de instrucciones del 8080, lo cual le permite ejecutar todos los programasescritos para el CPU 8080, contiene el Z80 una expansin adicional de 80instrucciones de ah se deriva su nombre, su repertorio suma un total de 156instrucciones. Mientras algunos diseadores de INTEL trabajaban en el 8085A como una mejoradel 8080A, algunos de los diseadores que trabajaron en el 8080, se salieron deIntel, fundaron la compaa Zilog INC, y disearon el Z80. El cual se introdujo almercado en 1976. El microprocesador Z-80 fue el primero de la tercera generacin, se fabrico contecnologa NMOS, tiene bus de datos de 8 bits. El Z-80 est basado en el 8080,pero apreciablemente mejorado, tanto en el software como en el hardware. El Z-80 resulto ser un microprocesador mucho ms rpido y fcil de usar, ya quesolo requeran una fuente de alimentacin de 5v. y toda la circuitera de soporteestaba incluida en el circuito integrado. Su conjunto de instrucciones contena las78 instrucciones del 8080, lo que le permita ejecutar todos los programas escritospara este ltimo, as como 80 instrucciones mas, en total 158.

Un sistema con Z80 se completa con el empleo de memorias estndar de lectura y memorias estticas o dinmicas de lectura y escritura, adems pertenecen al sistema, puertos de entrada y salida paralelo, interfaces de comunicacin serie,sistemas contadores temporizadores y circuitos de acceso directo a memoria. El Z-80 posee ms registros internos en forma de direccionamiento que la mayorade los otros microprocesadores de 8 bits, estas caractersticas le permitenprocesar una mayor cantidad de informacin en un menor tiempo.

El microprocesador Z80 contiene las siguientes unidades funcionales; 1).- Unidad aritmtica y lgica 2).- El contador de programa 3).- El apuntador del stack 4).- Registros de propsito general 5).- Registros de ndice 6).- Registros de interrupciones 7).- Registro de banderas 8).- Registro para refrescar memorias dinmicas LA UNIDAD ARITMTICA Y LGICA ( ALU ) La Unidad Aritmtica y Lgica es la seccin dentro de la CPU encargada de hacer todas las operaciones aritmticas y lgicas. Uno de los operandos se encuentraen el acumulador (registro A), y el otro proviene normalmente de la memoria, o deotro registro. El resultado se almacena en el acumulador, y el grupo de FLIP-FLOP denominados registro de Estado o registro de Banderas cambia de estadosegn las operaciones realizadas. REGISTRO DE ESTADO (FLAGS,BANDERAS) Las banderas existen fsicamente dentro de la CPU estn agrupados lgicamenteformando un registro. Las Banderas del Z80 son los siguientes:

Bandera de Zero ( Z ) : Toma el valor 1 si el resultado de una operacin escero. Bandera de signo(S): Toma el valor 1 si el resultado de una operacines negativo. Bandera de Carry (C): Esta bandera es afectada por las instrucciones dedesplazamiento y es puestoen 1 0 segn el valor del bit desplazado.Tambin es afectado por las operaciones aritmticas.

Bandera de Paridad y Desbordamiento (overflow) (P/V ): En el caso deparidad, se pone en 1 si el resultado de una operacin posee un nmeropar de unos. Cuando la bandera P/V se usa para representar overflow, labandera se pone en 1 si ocurre un overflow despus de una operacinaritmtica.

Bandera H y N: Son dos Flip - Flop que no pueden ser examinados por lasinstrucciones de salto condicional. El Z80 los usa para las operacionesBCD. H representa el rebase que genera considerando los cuatro bits menos significativos del resultado y N es la bandera de resta, la cual seactiva para indicar si la ltima instruccin ejecutada fue suma o resta. En elcaso general, una instruccin de resta coloca en 1 la bandera N y una instruccin de suma lo coloca en 0.

REGISTROSDEPROPSITOESPECIAL Contador dePrograma (PC) :Es un registro de 16 bits que indica ladireccin de la prxima instruccin ejecutar. Las instrucciones del Z80pueden contar de uno, dos, tres o cuatro Bytes.

Registro de interrupciones ( I ): Es un registro de 8 bits que puede ser cargado para especificar el byte ms significativo de una direccin dememoria. El byte menos significativo es proporcionado por el dispositivoque solicita la interrupcin.

Registro de refresh de memoria (R): Es un registro especial diseadopara proporcionar un refresh automtico de las memorias RAM dinmicas.

Registro de Instrucciones: El registro de instrucciones tiene por misinalmacenar el cdigo de operacin de la instruccin leda desdememoria.Este cdigo es comparado con los cdigos de cada instruccinque reconoce el microprocesador. Si el cdigo es vlido se ejecuta sino semarca un error de sintaxis.

LA UNIDAD DETIEMPOYCONTROL Su objetivo es mantener la secuencia adecuada y el control de todas lasoperaciones del microprocesador. Atiende y responde a todas las seales externas.

DESCRIPCION DETERMINALES DEL Z80 El Z80 es un microprocesador de 8 bits y cuenta con 158 instrucciones y 10modos de direccionamiento. El circuito integrado del microprocesador Z80 sedeposita en un encapsulado Dual In Line de 40 terminales, de las cuales 5 sonnicamente de entrada, 24 son de salida y 8 son bidireccionales, adems, existendos que sirven para conectar la fuente de alimentacin y otra ms que es laentrada del reloj.

Todas sus terminales tienen caractersticas elctricas compatibles con la familiaTTL el intervalo del voltaje de entrada para 0 lgico (VIL) es 0.3 V a 0.8 V, elintervalo de voltaje de entrada para 1 lgico (VIH)es de 2.0 a VCC, el voltajemximo de salida para 0 lgico(VLO) es de 0.4 V y el voltaje mnimo de salida para1 lgico (VOH)es 2.4 V. La corriente de salida para 0 lgico (IOH) es 1.8 mA y lacorriente de salida para 1 lgico (IOH)es 250Q A (se supone positiva la corrienteen una terminal del CI si esta entra). El Z80 opera con una fuente de alimentacin de +5.0 Volts conectada a la terminal11, (pin 11), la tierra de la fuente se conecta a la terminal GND, (pin 29), elconsumo tpico de corriente para el Z80 es de 90 mA. Cuenta con 18 registros de 8 bits y 4 registros de 16 bits, todos los registros delZ80 se implementan con una RAM esttica, los registros incluyen 2 bancos de 6registros de propsito general, que se usan individualmente como registros de 8bits, o en pares como registros de 16 bits, existen tambin 2 bancos de registrosdenominados "acumulador" y "banderas", adems cuenta con 6 registros depropsito especial, 4 registros de 16 bits, PC, SP, IX e IY, y 2 registros de 8 bits, elregistro del refresh "R" y el registro de interrupciones "I", la aritmtica de 8 bits delas funciones, y las instrucciones lgicas de la CPU se ejecutan en la ALU.La ALUrealiza las siguientes funciones: 1. Sumar. 2. Restar. 3. Funcin lgica AND. 4. Funcin lgica OR. 5. Funcin lgica OR-EX. 6. Comparacin. 7. Desplazamientos a la derecha y a la izquierda. 8. Incrementar bytes. 9. Decrementar bytes.

10. Poner bits en uno lgico. 11. Poner bits en cero lgico y 12. Comprobar el estado de los bits LNEAS DE DIRECCIONES (A0 - A15), Pines 30-40, 1-5 respectivamenteSe forman con 16 lneas de direcciones, tienen la facultad de establecerse entercer estado, estas seales proporcionan las direcciones correspondientes aintercambios de datos entre la memoria, la CPU y los puertos de los perifricos, lacapacidad de direccionamiento con 16 bits es de 64 Kbytes y 256 puertos deentrada y salida, son activas en estado alto, los 8 bits menos significativos se usanpara permitirle al usuario seleccionar los 256 puertos E/S, (A0-A7), en donde A0es el bit menos significativo. LNEAS DE DATOS (DO - D7), Pines 14, 15, 12, 8, 7, 9, 10 y 13Se forman con 8 lneas de datos bidireccionales con capacidad del tercer estado,son activas en nivel alto, se utilizan para el intercambio de datos con la memoria, yperifricos de E/S CICLO DE MAQUINA UNO (M1),Salida activa en nivel bajo, indica que en este ciclo de mquina uno elmicroprocesador va a obtener el cdigo operacional de una instruccin, en lasinstrucciones que tienen un cdigo operacional de 2 bytes esta seal se opera alobtener cada uno de los bytes del cdigo operacional, al igual que para indicar elreconocimiento de un ciclo de interrupcin cuando ocurre (IORQ)'. REQUERIMIENTO DE MEMORIA (MREQ)', Pin 19 Salida activa en nivel bajo, esta seal indica una peticin que interrelaciona a lamemoria con la CPU, obtiene una direccin valida de las lneas dedireccionamiento, esta terminal tiene capacidad del tercer estado. REQUERIMIENTO DE E/S (IORQ), Pin 20 Es salida triestado activa en nivel bajo, esta seal indica que la mitad baja del busde direcciones mantiene una direccin vlida de E/S, para efectuar una operacinde lectura o escritura de E/S, se genera esta seal cuando el ciclo de maquina 1(M1) reconoce una interrupcin, indica que el vector de respuesta de lainterrupcin se coloca en el bus de datos, las operaciones de reconocimiento deinterrupcin ocurren durante el ciclo de maquina 1, mientras que las operacionesde E/S nunca se producen durante este ciclo. LECTURA (RD), Pin 21 Salida triestado activa en nivel bajo, indica que la CPU desea leer datos desde lamemoria de un dispositivo externo de E/S, el dispositivo E/S se direcciona a lamemoria o al perifrico, se usa esta terminal para dirigir los datos al bus de datosde la CPU. ESCRITURA (WR)', pin 22 Salida triestado activa en nivel bajo, indica que el bus de datos de la CPU va aobtener datos vlidos para ser almacenados en la memoria o en algn dispositivode E/S. REFRESCO DE LA MEMORIA DINMICA (RFSH)', Pin 28 Salida activa en nivel bajo, indica que los siete bits inferiores de las lneas dedireccionamiento contienen una direccin vlida de refresco de memoria, se utilizapara el mantenimiento de datos en memorias dinmicas, con esta se efecta unalectura de refrescamiento para todas las memorias dinmicas.

PARO (HALT), Pin 18 Salida que activa en nivel bajo, indica que la CPU realiza una instruccin por software de paro (HALT), y que espera una interrupcin (NMI)' o (INT)' antes deque continue la operacin, mientras permanezca en este estado la CPU ejecutaoperaciones NOP, para mantener activo el refresco de las memorias dinmicas, alaplicarse un reset se continua con la operacin. ESPERA (WAIT), Pin 24 Es una entrada activa en nivel bajo, le indica al microprocesador que la memoriadireccionada o los dispositivos perifricos de E/S no son tan rpidos como pararealizar una transferencia de datos a la velocidad de la CPU, o no estn listos para una transferencia de informacin, la CPU continua con el estado de esperadurante todo el tiempo que esta terminal es activa, esto les permite a los otrosdispositivos sincronizarse con la CPU. REQUISICIN DE INTERRUPCIN MASCARABLE (INT), Pin 16 Entrada activa en nivel bajo, esta terminal se acciona con dispositivos E/Sexternos, una requisicin (INT)' se atiende al final de la instruccin que se ejecuta,si el enable interno del Flip Flop de interrupcin IFF1 controlado por software seencuentra habilitado, y si la requisicin de bus no esta activa, al aceptar la CPUuna interrupcin enva una seal de reconocimiento, la peticin de E/S se realizadurante el ciclo de mquina 1, al principio del siguiente ciclo de instruccin, estapeticin solo es valida bajo control del programa interno, reconociendo la CPU tresmodos diferentes de interrupcin. INTERRUPCIN NO MASCARABLE (NMI)', Pin 17 Entrada que se activa con un flanco de bajada mediante un impulso que identificauna interrupcin obligada, posiciona al contador de programa (PC) en la direccin0066h desde donde continua el proceso, esta tiene una prioridad ms alta que lainterrupcin (INT)' y siempre se reconoce al final de la instruccin que se ejecuta,independientemente del estado del IFF1, el contador de programa PC sealmacena automticamente en el stack pointer externo de forma que el usuarioregrese al programa en el mismo punto del que fue interrumpido. REHABILITACIN (RESET), Pin 26 Entrada que se activa con un flanco de bajada mediante un impulso, obliga a laCPU a reiniciar su actividad, coloca al contador de programa (PC) en la localidadde inicio de memoria 0000h, desde donde empieza el proceso, durante estetiempo el bus de direcciones y el bus de datos adquieren el estado de altaimpedancia y todas las terminales de control de salida adquieren el estadoinactivo. REQUERIMIENTO DE LAS TERMINALES DE LA CPU (BUSRQ), Pin 25 Esta entrada es activa en nivel bajo, le indica a la CPU que coloque todas suslneas en estado de alta impedancia, (tan pronto el ciclo de maquina 1 actualtermine), a peticin del perifrico externo que desea tomar el control del sistema,regresa el control a la CPU cuando esta seal (BUSRQ)' pasa al nivel alto, seutiliza para pedir que el bus de direcciones, el bus de datos y las terminales desalida triestado del bus de control vayan a un estado de alta impedancia de talforma que otros dispositivos controlen esos buses.

ENTREGA DE LAS TERMINALES DE LA CPU (BUSAK)', Pin 23 Salida activa en nivel bajo, es una indicacin para el perifrico que efecta unapeticin (BUSRQ)' de que su peticin ha sido concedida por parte delmicroprocesador, sirve para indicar al dispositivo que solicita este reconocimiento,que el bus de direcciones, el bus de datos y el bus de las terminales de controltriestado han sido puestos en su estado de alta impedancia y que el dispositivo externo puede ahora controlar estas terminales. RELOJ (CK), Pin 6 Entrada configurada por un tren de impulsos tiles, es la diferencia que permite lasecuencia de tiempos de operacin, se implanta fsicamente con un oscilador deonda cuadrada cuya frecuencia depende del tipo de caractersticas de la CPUZ80, requiere oscilacin de una fase con niveles TTL, una forma de satisfacer todos los requerimientos de voltaje es por medio de una resistencia de activacin"pull up" de 330 ohms conectada entre +Vcc y la terminal de salida de un oscilador implantado con circuitos TTL que generen oscilaciones. ALIMENTACIN POSITIVA DE +5 VOLTS (Vcc), Pin 11 Esta es una entrada de alimentacin de tensin de +5 volts con un 5 % detolerancia. TIERRA (GND), Pin 29 Terminal de alimentacin negativa, requiere un potencial de 0.0 volts que sirven dereferencia para la interconexin de los dispositivos. BUSDEDIRECCIONES: El bus de direcciones est formado por 16 lneas que van desde la lnea A0 hasta A15. Estas lneas son de 3 estados, de modo que cuando el bus de direccionesest inactivo, se encuentran en el estado de alta impedancia. Cuando el microprocesador maneja dispositivos de E/S, las 8 lneas menossignificativas de este bus contienen la direccin del dispositivo, la cual puede tener un valor entre 0 y 255. Por otro parte, las lneas menos significativas de este buscontienen, durante el lapso de ejecucin de la instruccin, el valor presente en el registro de Refresco (Refresh). BUSDEDATOS: El bus de datos est formado por 8 lneas, de la lnea D0 a D7. Este bus es bidireccional permitiendo la transferencia de informacin de la CPU a MEMORIA o hacia dispositivos de E/S y viceversa, tambin es un bus de 3 estados. ALIMENTACION: El microprocesador Z80 requiere solamente un voltaje de alimentacin de 5V, con un margen de error 5%, y consume una corriente mxima de 200 mA. Velocidad de operacin de las diferentes versiones del MPUZ-80. Cualquier oscilador que cumpla con las especificaciones de la entrada puede servir para generar la seal de reloj del Z-80. Si se va a operar el microprocesador debajo de la frecuencia mxima y no se necesita que el valor de la frecuencia de oscilacin sea muy preciso o estable, se puede utilizar un oscilador RC como el circuito siguiente. Este circuito es muy til en las etapas de desarrollo y prueba de un sistema, porque siendo un oscilador de frecuencia variable permite al diseador disminuir el ritmo de operacin de sistema(incrementando los valores de R y C). Sin embargo, no se recomienda cuando el microprocesador se use en aplicaciones en las que se requiera un conteo preciso de tiempo. Los valores de R y C establecen la frecuencia de salida.

Para frecuencias cercanas al valor mximo se requiere un oscilador controlado por un cristal de cuarzo, como el circuito que se muestra a continuacin. En este caso la frecuencia de oscilacin del cristal determina la frecuencia de la seal de reloj, y gracias a la estabilidad del cristal se puede mantener un tiempo de ejecucin constante. Cuando no se tiene un cristal cuya frecuencia de oscilacin ms alta y despus dividir la seal de salida del circuito oscilador por medio del flip flop o controladores hasta obtener el valor requerido. SEALES DE CONTROLCONTROL DE LOS BUSES: El MPU Z80 posee dos seales asociadas con el control de los buses de direccin y datos. Estas seales son la seal de entrada BUSRQ y la seal de salida BUSAK. La seal BUSRQ es generada por un dispositivo externo para obtener el control de los buses y realizar una operacin de acceso directo a memoria. Cuando un dispositivo externo solicita el control de los buses colocando en 0 la lnea BUSRQ, el microprocesador concluye la instruccin que estaba ejecutando y responde mediante la seal de reconocimiento BUSAK. CONTROL DELA MEMORIA: El Z80 posee 4 seales relacionadas con las operaciones de control de la memoria. Ellas son las seales MREQ, RD, WR y RFSH. La seal MREQ es una seal de 3 estados que se activa en 0 indicando que el bus de direcciones contiene una direccin vlida. La seal RD (Read) se activa cuando el microprocesador requiere leer un dato de la memoria o de un puerto. Indica que el bus de datos se est usando como entrada. La seal WR (Write) se genera cuando el microprocesador va a escribir un dato en la memoria o en un puerto. Indica que el bus de datos se est usando como salida y que en sus lneas se encuentra al dato que va a ser almacenado. Tanto la seal RD como la seal WR provienen de terminales de salida con tercer estado.

La seal RFSH no est asociada con la operacin normal de la memoria sino que se usa solamente con memoria dinmica. Las memorias dinmicas requieren que se refresque peridicamente la informacin almacenada para que no se pierda.

CONTROL DE E/S: El Z80 usa la seal IORQ para informar a los dispositivos de E/S que los 8 bits menos significativos del bus de direcciones contienen una direccin de E/S vlida.

SEALES MISCELANEAS: En este grupo se encuentran las seales M1, RESET, WAIT y HALT. La seal M1Ciclo de Maquina uno (MachineCycleOne): indica que el microprocesador va a obtener el cdigo de operacin de una instruccin. En las instrucciones que tiene un cdigo de operacin de dos bytes, la seal M1se genera al obtener cada uno de los bytes del cdigo de operacin. La seal RESET es una seal de entrada a la CPU y que se activa en cero para efectuar una operacin de restablecimiento general. La funcin de restablecimiento (reset): es uno de los controles ms necesarios en un microprocesador, los registros y flip fllops internos adoptan valores aleatorios y la operacin del circuito resulta impredecible. Por lo tanto, el microprocesador debe restablecerse para colocarlo en un estado inicial conocido. Los efectos producidos por el pulso de restablecimiento son los siguientes. El contador del programa se carga con ceros PC 0000H El flip - flop de interrupciones se pone en cero IFF 0 El registro del vector de interrupciones se carga con ceros I 00H El registro de refrescado se carga con ceros R 00H Se establece el modo de interrupcin 0. As, en esencia, el restablecimiento del microprocesador equivale a un salto incondicional la direccin 0000H producido por hardware. Adems, mientras RESET est en cero lgico, tanto el bus de datos como el bus de direcciones se ponen a flotar (estado de alta impedancia) y todas las lneas de salida del bus de control pasan a su estado inactivo.

MODOSDEDIRECCIONAMIENTO La mayora de las instrucciones ejecutadas por un microprocesador requierendatos. La palabra DIRECCIONAMIENTO se refiere al mecanismo por medio delcual un microprocesador tiene acceso a los lugares donde se encuentra los datosque va a procesar y a los lugares donde se almacenaran los resultados de las operaciones. A travs del estudio de las instrucciones del Z-80 se ha observado que la mayorade ellas actan sobre los datos almacenados en los registros internos y en lamemoria. Este microprocesador ofrece diez tipos de direccionamiento, en loscuales estn incluidos todas las modalidades de las instrucciones. Estos son:

DIRECCIONAMIENTO INMEDIATO: Este modo no constituye un direccionamiento propiamente dicho, pues aqu lainstruccin no contiene ninguna direccin, en su lugar figura un operando sobre elcual se realiza la operacin que indica la instruccin, no hay necesidad del ciclo dememoria (ejecute) de ejecucin, una denominacin ms precisa es la de operandoinmediato. Una instruccin con direccionamiento inmediato es la que contiene en el byte 2 oen el byte 3 de la propia instruccin en el dato de la transferencia, es decir, el datoes parte integral de los bytes que constituyen la instruccin.

Vous aimerez peut-être aussi