Beruflich Dokumente
Kultur Dokumente
O O
Se usa el término microprocesador para denominar a cualquier Unidad Central de
Proceso (CPU) contenida en una sola pastilla, aún cuando algunas de ellas tengan
la arquitectura y el poder de procesamiento de una computadora.
El microprocesador es uno de los logros más sobresalientes del siglo XX. Esas
son palabras atrevidas, y hace un cuarto de siglo tal afirmación habría parecido
absurda. Pero cada año, el microprocesador se acerca más al centro de nuestras
vidas, forjándose un sitio en el núcleo de una máquina tras otra. Su presencia ha
comenzado a cambiar la forma en que percibimos el mundo e incluso a nosotros
mismos. Cada vez se hace más difícil pasar por alto al microprocesador como otro
simple producto en una larga línea de innovaciones tecnológicas.
Hoy existen casi 15,000 millones de microchips de alguna clase en uso (el
equivalente de dos computadoras poderosas para cada hombre, mujer y niño del
planeta). De cara a esa realidad, ¿quién puede dudar que el microprocesador no
sólo está transformando los productos que usamos, sino también nuestra forma de
vivir y, por último, la forma en que percibimos la realidad?
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.
O O O
Un microprocesador es un circuito integrado (C.I.), de súper muy alta escala de
integración (SVLSI), que realiza las tareas de procesamiento de una computadora
u otro sistema de control automático.
O O
Si se ha tenido la oportunidad de realizar un diseño con un
,
Fig.1, se puede observar que dependiendo del circuito se requerían algunos
circuitos integrados adicionales además del c como por ejemplo:
memorias
c para almacenar datos temporalmente y memorias
c para
guardar el programa encargado del proceso del equipo, un circuito integrado para
los puertos de entrada y salida y finalmente un decodificador de direcciones.
Un c
fig.2, es un
circuito integrado que contiene todos
los elementos necesarios para hacer
funcionar un sistema basado con un
c es decir contiene en
un solo integrado la Unidad de
Proceso, la memoria
c, memoria
periféricos.
Estas ventajas son reconocidas inmediatamente para aquellas personas que han
trabajado con los c y después pasaron a trabajar con los
c
. Estas son las diferencias más importantes:
O O
Las características básicas que definen a un microprocesador son la longitud de
palabra (comúnmente de 8, 16, 32, 64 ó 128 bits), la velocidad de ejecución y la
capacidad de gestionar interrupciones.
64 Arquitectura de
150MHz.
64 5,5 millones 4 ejecución dinámica con
Pent 27/3/95 180MHz.m
Bits (0.32 micras)m Gigabytes procesador de altas
Pro®m 200MHz.m Terabytesm prestaciones
UNIDAD DE UNIDAD DE
DECODIFICACIÓN EJECUCIÓN
UNIDAD ARITMÉTICO- LÓGICA (ALU)
| $ % |
Vamos a profundizar aún más en el estudio de las partes funcionales que
componen un microprocesador. No significa que la primera división en bloques
anterior fuera errónea, sino que era más superficial.
.
Podemos, entonces, considerar a un microprocesador compuesto por las dos
siguientes unidades: $%( $ %
° Contador de programa
° Registro de instrucciones
° Decodificador
° Reloj
° Secuenciador
Contiene permanentemente la dirección de memoria de la siguiente instrucción a
ejecutar. Al iniciar la ejecución de un programa toma la dirección de su primera
instrucción. Incrementa su valor en uno, de forma automática, cada vez que se
concluye una instrucción, salvo si la instrucción que se está ejecutando es de salto
o de ruptura de secuencia, en cuyo caso el contador de programa tomará la
dirección de la instrucción que se tenga que ejecutar a continuación esta dirección
está en la propia instrucción en curso.
$
Contiene la instrucción que se está ejecutando en cada momento. Esta instrucción
llevará consigo el código de operación (un código que indica qué tipo de operación
se va a realizar, por ejemplo una suma) y en su caso los operandos (datos sobre
los que actúa la instrucción, por ejemplo los números a sumar) o las direcciones
de memoria de estos operandos.
Se encarga de extraer el código de operación de la instrucción en curso (que está
en el registro de instrucción), lo analiza y emite las señales necesarias al resto de
elementos para su ejecución a través del secuenciador .
$
)
Proporciona una sucesión de impulsos eléctricos o ciclos a intervalos constantes
(frecuencia constante), que marcan los instantes en que han de comenzar los
distintos pasos de que consta cada instrucción.
En este dispositivo se generan órdenes muy elementales (microórdenes) que,
sincronizadas por los impulsos de reloj, hacen que se vaya ejecutando poco a
poco la instrucción que está cargada en el registro de instrucción.
Circuito operacional
Registros de entrada (REN)
Registro acumulador
Registro de estado (flags)
Contiene los circuitos necesarios para la realización 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 operación que debe realizar en
cada momento (suma, resta, etc).
$
&$ '
En ellos se almacenan los datos u operandos que intervienen en una instrucción
antes de la realización de la operación por parte del circuito operacional. También
se emplean para el almacenamiento de resultados intermedios o finales de las
operaciones respectivas.
$
Almacena los resultados de las operaciones llevadas a cabo por el circuito
operacional. Está conectado con los registros de entrada para realimentación en el
caso de operaciones encadenadas. Asimismo tiene una conexión directa al bus de
datos para el envío de los resultados a la memoria central o a la unidad de control.
$
&
'
Se trata de unos registros de memoria en los que se deja constancia de algunas
condiciones que se dieron en la última operación realizada y que habrán 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.
O - !
.
&
',
En un sistema digital se le da el nombre de ³ puerto ³ al medio físico por el cual
entran y salen datos al microprocesador.
Los puertos de E/S son registros externos dedicados a aceptar y/o a enviar
información a dispositivos periféricos.
Un puerto de entrada (E) está compuesto sólo por un buffer de tercer estado junto
con un registro de almacenamiento (latch). El buffer de tercer estado tiene la
función de controlar, es decir, aislar o permitir el flujo de información del puerto al
bus de datos del microprocesador. El registro tiene la función de almacenar
temporalmente la información generada por el dispositivo periférico de entrada
hasta que pueda ser leída 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 selección.
|
La concepción básica 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
periférico por medio de un pulso de selección aplicado a la entrada de reloj del
registro.
|
Para puertos de salida, circuitos externos combinan las señales IOQR, WR y la
dirección del puerto y generan un pulso de selección único para cada puerto. Este
pulso actúa a la manera de un pulso de escritura para grabar el dato en el puerto
durante el ciclo de salida de una instrucción OUT que especifique ese puerto.
|
|
Los puertos de E/S pueden implantarse con circuitos SSI, MSI o LSI. Sin
embargo, para minimizar el número de componentes en general se usan circuitos
MSI o LSI.
Ambos circuitos poseen salidas con buffers de tercer estado. Los buffers tienen
una entrada de habilitación activa en 0 lógico. 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.
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 simultáneamente, por
ejemplo un 74LS373 o un 74LS374, se vuelve necesario mantener en memoria
una copia de la última información enviada al puerto. Compare la siguiente
secuencia de instrucciones que pone en 1 lógico el bit 4 de un puerto implantado
con un 74LS373, con la secuencia utilizada en el caso de un 9334:
Hay dos tipos posibles de transferencia controlada por programa:
incondicional y condicional.
Una $ # $ % es aquella en que se envían o reciben
datos de un puerto de E/S, sin averiguar si éste se encuentra listo para recibir o
transmitir la información. Un ejemplo de una operación de salida incondicional es
la transmisión 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 operación 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 periféricos de E/S necesitan sincronizarse de alguna forma al
microprocesador. Éste no puede tratar a los dispositivos como si mantuvieran su
información 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.
&
'
° Examinar el registro de estado del puerto y esperar a la señal 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 efectúa la operación de E/S.
En la siguiente figura se muestra el diagrama de una transferencia condicional
controlada por programa.
Hay varias maneras de proporcionar las señales de control y estado. Una es por
medio de líneas de E/S dedicadas a este propósito. El microprocesador tiene
acceso a ellas a través de puertos adicionales. Un solo bit de estado puede
indicar cuándo un puerto de entrada tiene información disponible para ser leída o
cuando un puerto de salida está listo para recibir información.
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
periférico antes de que se efectúe la transferencia de información. Este
procedimiento es llamado ENCUESTA (POLLING).
Los procedimientos para aislar los bits de estado y para poner en 0 o en 1 lógico
los bits de control son como sigue:
1.3.2 Periféricos
1.3.2.1 De interfase programable (8255).
Uno de los integrados universalmente usados en sistemas basados en
microprocesadores es sin duda el 8255. Este circuito fue inicialmente diseñado por
como parte del juego de integrados de apoyo a sus primeros
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.
Para acceder tanto al octeto de estado como a los puertos en sí debemos hacer
uso de las señales de control del 8255.
Hemos visto hasta ahora los diferentes puertos que existen y los modos de
configurarlos.
Sabemos también que esto se realiza por medio del octeto de control (para ello
realizamos una operación de escritura sobre él, no siendo posible su lectura).
Los puertos A y B son leídos y escritos en bloques de cuatro u ocho bits según
sea la configuración de los mismos, pero el puerto C permite un acceso individual
sobre las líneas de salida del mismo:
· Valor de salida (1 ó 0)
· Selección de bit (000=bit 0, 001=bit 1 ...111=bit 7)
· ! No influyen, cualquier valor.
· " Flag de modo (0=Acceso al puerto C)
El modo de funcionamiento 0 es el más 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 operación sobre el 8255. El dispositivo opera
por tanto como si de un transceptor multiplexado con latch de salida se tratase.
El modo de funcionamiento 1 puede emplearse en ambos grupos de pines.
Proporciona un puerto de 8 bits y cuatro señales 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 Input
PC4 grupo A/PC2 grupo B
Cuando esta señal se pone a nivel bajo el dispositivo memoriza el estado del
puerto de ocho bits. La siguiente operación de lectura RD sobre el 8255 por parte
del microprocesador devolverá el estado del bus en el estado bajo de dicha señal.
Permite efectuar por tanto lecturas del puerto de ocho bits de modo independiente
del microprocesador que gestiona el 8255.
Esta señal 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 lógico cero en el
flanco de subida de la señal 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 lógico 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
Esta señal indica el estado de escritura en el puerto. Baja a nivel lógico cero en el
flanco de subida de la señal de escritura /WR volviendo al nivel lógico 1 en el
flanco de bajada de la señal de respuesta del dispositivo ACK.
La señal pasa a nivel alto en el flanco de subida de /ACK y pasa a nivel lógico cero
en el flanco de bajada de /WR, siempre y cuando los correspondientes bits INTE
estén habilitados. Para el primer grupo INTEA corresponde al bit PC6 mientras
que para el segundo grupo INTEB corresponde al bit PC2.
El modo 2 permite habilitar un puerto de 8 bits bidireccional. Solo es posible
disponer de él con el grupo A. La descripción de los pines es la siguiente:
La señal pasa a nivel lógico cero en el flanco de subida de /WR y vuelve al nivel
lógico uno en el flanco de bajada de /ACK. Indica a la CPU que ha recogido el
dato.
La entrada habilita el puerto A del 8255 al pasar al nivel lógico cero. El dato escrito
en el registro interno del 8255 pasa al puerto A y el terminal lo lee. Al volver al
nivel lógico uno el puerto A vuelve de nuevo al estado de alta impedancia.
Cuando esta entrada pasa a nivel lógico bajo la salida de datos hacia el puerto
desde los pines es enclavada en el registro interno. El dato sale por el bus de
datos una vez se recibe la señal RD desde el microprocesador, si bien el bus
permanece en alta impedancia hasta entonces.
La señal pasa a nivel alto en el flanco de bajada de STB volviendo al nivel bajo en
el flanco de subida de RD, indicando que el dato ha sido enclavado en el registro
interno del 8255.
Esta señal se emplea del mismo modo que en el modo de funcionamiento número
1. La diferencia estriba en que existen ahora dos bits INTE, uno para habilitar la
interrupción en operaciones de salida (PC6) y otro para habilitar la interrupción en
operaciones de entrada (PC4).
$ $0
° 8255compatible con microprocesadores 8085.
° 24pines de EIS programables.
° Totalmente compatible con UL.
° E Totalmente compatibles con la familia de microprocesadores INTEL.
° Características de tiempos mejorados.
° Capacidad de directo software de bit facilitando aplicaciones de interfaces de control.
° Circuito integrado DIP de 40 pines.
° Reduce el número de CI's a emplear.
° Capacidad de DC mejoradas.
$ %
D7 - D0 Bus de Datos (Bidireccional)
RESET Entrada de Reset
CS Seleccion de Chip
RD´ Entrada de Lectura
WR´ Entrada de Escritura
A0, A1 Direccion de Puertos
PA7 - PA0 Puerto A (Bit)
PB7 - PB0 Puerto B (Bit)
PC7 - PC0 Puerto C (Bit)
Vcc 5V
GND 0V
MICROPROCESADORES MICROCONTROLADORES UI 19 M. C. BENITO BAEZ SANCHEZ
MICROPROCESADORES MICROCONTROLADORES UI 20 M. C. BENITO BÁEZ SÁNCHEZ
El 8255 es una interfase para comunicación en paralelo con periféricos. Las partes que lo
constituyen se muestran en la figura anterior, a continuación se describen estas partes
dependiendo de su aplicación.
% + |&
'
Un cero en este Pin de entrada habilita la comunicación entre el 8255 y el CPU.
% $ &$
'
Un cero en este Pin de entrada habilita al 8255 a enviar los datos o información del estado
al CPU, sobre el bus de dato. Esencialmente este permite al CPU "leer del" 8255.
$$ &3$4'
Un cero en este Pm de entrada, permite al CPU escribir datos o palabras de control sobre
el 8255.
$
Un uno (1) en esta línea limpia el registro de control y todos los puertos (A, B, y C) se
ponen como modo de entrada.
En esencia, el CPU manda una palabra de control al 8255. la palabra de control contiene
información tal como 'modo', 'bit set', 'bit reset', etc.
La palabra de control únicamente puede ser escrita. No se permite lectura del registro de
palabra de control.
$
El conjunto de instrucciones de un microprocesador es el conjunto de entradas
binarias que producen acciones definidas durante un ciclo de instrucción. Una
instrucción es un patrón de dígitos binarios el cual debe estar a disposición del
microprocesador en el tiempo y forma que éste lo requiera.
Estas instrucciones mueven datos (que se consideran elementos de
entrada/salida) desde la memoria hacia los registros internos del microprocesador,
y viceversa. También se usan para pasar datos de un registro a otro del
microprocesador. Existen algunas instrucciones que permiten mover no sólo un
dato, sino un conjunto de hasta 64 KBytes con una sola instrucción.
5
Son instrucciones destinadas a ejecutar ciertas operaciones aritméticas, como por
ejemplo sumar, restar, multiplicar o dividir, o ciertas operaciones lógicas, como por
ejemplo ANO, OR, así como desplazamiento y rotación de bits.
Permiten romper la secuencia lineal del programa y saltar a otro punto del mismo.
Pueden equivaler a la instrucción Ë# que traen muchos lenguajes de
programación.
Son instrucciones especiales o de control que actúan sobre el propio
microprocesador. Permiten acceder a diversas funciones, como por ejemplo
activar o desactivar las interrupciones, pasar órdenes al coprocesador matemático,
detener la actividad del microprocesador hasta que se produzca una interrupción,
etc.
Por ejemplo, una instrucción que sume dos números está formado por:
+ % $
Para que un programa pueda ser ejecutado por un computadora, ha de estar
almacenado en la memoria central (memoria RAM). El microprocesador tomará
una a una las instrucciones que lo componen e irá realizando las tareas
correspondientes.
° Fase de búsqueda
° Fase de ejecución
#!
En esta fase se transfiere la instrucción que se va a ejecutar desde la memoria
central a la unidad de control.
Por otro lado, el usuario generalmente quiere que la computadora haga cosas
como: chequear si un valor analógico leído se excedió de un cierto umbral, buscar
y reaccionar ante un comando particular de una consola o teletipo, o activar un
relé en el momento apropiado. El programador de lenguaje ensamblador debe
traducir estas tareas a secuencias de simples instrucciones de microprocesador.
Esta traducción suele ser dificultosa, consume tiempo de trabajo.
Recuerde que las convenciones son cualquier cosa que le haga más fácil la
lectura y comprensión de su código, como por ejemplo:
° El campo del ' ( '
es el único que nunca puede estar vacío
éste siempre contiene una instrucción o una directiva del ensamblador.
° El campo del
o dirección puede contener una dirección o un dato, o
puede estar en blanco.
° El campo del
o de ) es opcional. El programador
asignará una etiqueta a una línea de instrucción o agregará un comentario
según su conveniencia: normalmente, para hacer más fácil el uso y la lectura
por ejemplo si va a retomar el trabajo dentro de tres semanas.
° Los campos van separados sólo con espacios y/o tabulaciones. No agregue
nunca otros caracteres (comas, puntos, etc.)
° No utilice espacios extra, particularmente después de comas que separan
operandos. ( Ej: movlw 5,w )
° No use caracteres delimitadores (espacios y tabulaciones) en nombres o
etiquetas.
Etiquetas:
° La etiqueta es el primer campo en una línea en lenguaje ensamblador y
puede
.
° Si una etiqueta está presente, el ensamblador la define como el equivalente
a la dirección del primer byte correspondiente a esa instrucción.
Esta etiqueta puede volver a usarse en otro lugar pero como
de una
instrucción.
El ensamblador reemplazará ésta etiqueta por el valor de cuando fue creada.
Se usan frecuentemente en las instrucciones de salto.
* + ,
)
-
'
* +
$ ) $ . /
$ 0
Ë Y 1
$
0 /2
1
Ejemplo:
+ movlw DATO
:
:
goto +
El ensamblador debe hacer algo más que traducir los códigos de operación.
También debe determinar cuantos operandos requiere la instrucción y de que tipo.
$ :
Algunas instrucciones del lenguaje ensamblador no se traducen directamente a
instrucciones del lenguaje máquina. Éstas instrucciones son directivas para el
ensamblador éstas asignan al programa ciertas áreas de memoria, definen
símbolos, designan áreas de RAM para almacenamiento de datos temporales,
colocan tablas o datos constantes en memoria y permiten referencias a otros
programas.
Las directivas se utilizan como comandos escritos en el código fuente para realizar
un control directo o ahorrar tiempo a la hora de ensamblar. El resultado de
incorporar directivas se puede ver en el fichero *.LST, después de ensamblar el
programa.
PORT_A EQU 5
START EQU 0
CARRY EQU 3
TIEMPO EQU 5
Y /
$ . 4
(,
La directiva ORG hace al compilador colocar el código que le sigue en una nueva
dirección de memoria (la salida del compilador no solo coloca los códigos de
operación sino también las direcciones de cada instrucción y datos del programa).
Por Ej.:
ORG 00h vector de reset
goto inicializa
ORG 04h vector de interrupción
goto interr
ORG 05h
inicializa movlw 08h aquí comienza el programa
:
:
ORG 300h subrutinas
Subrutina1 :
:
return
Subrutina2 :
:
return
i Tablas de conversión
i Mensajes
i Nombres
i Umbrales
i Comandos
i Factores de conversión
i Identificación de teclas
i Direcciones de subrutinas
Esta directiva trata a los datos como parte permanente del programa.
El formato es muy simple:
DEFW $0000
POTENCI DEFB 1,4,9,16,25,36,49,64,81
A
Operandos y direcciones:
Los ensambladores permiten elegir con libertad el tipo de elemento a colocar en el
campo de operando o dirección.
m
i Números decimales:
La mayoría de los ensambladores asumen todos los números como decimales a
no ser que se marquen de otra manera.
Significa: ³mover el número literal 100 (en decimal) al registro de trabajo W´.
0A00h \ Hexadecimal
$0A00 /
%01001011 \
B¶00100101¶ | Binario
01011010b /
@123 \ Octal
123Q /
D¶250¶ \ Decimal
.250 /
5
'
4 . )
3
8
'
c9:
!
7,
3 !
Binario: para escribir números en binario utilizar B¶xxxxxxxx¶ (utilizar comillas
simples).
Por ejemplo: B¶01101001¶ , b¶11110000¶.
Decimal: puede utilizar la forma: D¶200¶ (tambien con comillas simples) o la
forma corta, anteponiendo un punto al número decimal. Esta es la forma utilizada
en todos los programas realizados por microchip.
Por ejemplo: D¶112¶ d¶10¶ .200 .100
#
;
) , $
Y
.< 7,
3
. 5 = $ 8
3 7
$
>>
8
. 3
. ) /
( (
c9:
i Nombres:
Los nombres pueden aparecer en el campo de operando éstos son tratados como
el dato que representan. (Ver directiva EQU).
i Códigos de caracteres:
Algunos ensambladores permiten el uso de caracteres en ASCII.
Por ejemplo:
CHAR EQU ¶t¶
MOVLW ¶R¶
IF CONDICION
:
:
:
ENDIF
Ejemplo:
V
%
Algunos ensambladores permiten incluir código fuente (partes de programas)
desde otros archivos.
Por ejemplo:
#INCLUDE ³DISPLAY.ASM´
#INCLUDE ³p16f84.inc´
Esto se utiliza para reutilizar códigos realizados con anterioridad. En el ejemplo del
siguiente punto lo vemos más claro.
#
La directiva #define permite definir un nombre (cadena de caracteres) para que se
comporte como otra cadena de caracteres válida.
Ejemplos:
#define CINCO 5
Cada vez que se utilice la palabra CINCO será reemplazada en el
momento de la compilación por el número 5.
Esta directiva es muy util para hacer el código más fácil de leer y entender.
En el Apéndice A se adjunta un ejemplo de directivas if, define, macros e include.
$
A veces ocurren secuencias de instrucciones particulares en los programas que
son repetitivas. Estas secuencias de instrucciones se pueden eliminar utilizando
c
Las macros no son lo mismo que las subrutinas. El código de las subrutinas
aparece una sola vez en un programa y la ejecución del programa salta a la
subrutina. En cambio, el ensamblador reemplaza cada ocurrencia del nombre de
la macro con la secuencia especificada de instrucciones. Por consiguiente la
ejecución del programa no salta a la macro como una subrutina.
/ ³MULX10.ASM´ :
MULX10 MACRO comienzo de la macro
MOVF tiempo,W guarda el tiempo en W
RLF tiempo multiplica por 2
RLF tiempo multiplica por 2
RLF tiempo multiplica por 2
ADDWF tiempo le suma una vez más
ADDWF tiempo le suma una vez más
ENDM fin de la macro
/ @YYc8:cA
#INCLUDE ³MULX8.ASM´
tiempo EQU 0Ch
resultado EQU 0Dh
MOVLW 20
MOVWF tiempo
MULX10
MOVWF resultado
END
Si ensamblamos el ³YYc8:c´ notaremos que el listado final
(EJEMPLO.LST) queda de la siguiente forma:
MOVLW .1 TEMP=1
MOVWF TEMP ´
DECF TEMP,F Z se va a 1
BTFSS STATUS,Z salta si o si
MOVFF AUX1,AUX2 c6
MOVWF PORTA ...
MOVLW .1 TEMP=1
MOVWF TEMP ´
DECF TEMP,F Z se va a 1
BTFSS STATUS,Z salta si o si
MOVF AUX1,W <- anterior macro
MOVWF AUX2 <- ´
MOVWF PORTA ...
Otro tema importante, que aquí también observamos, es que las macros pueden
modificar registros (en este caso W) en forma oculta al programador.
$|$ $718
El Z80 es una versión apreciablemente mejorada tanto en circuitería como en
características de programación del antiguo modelo INTEL 8080, el Z80 resulta
ser un microprocesador más rápido y sencillo en el desarrollo de sistemas ya que
solo usa una fuente de alimentación de +5 Volts, contiene íntegramente todo el
conjunto de instrucciones del 8080, lo cual le permite ejecutar todos los programas
escritos para el CPU 8080, contiene el Z80 una expansión adicional de 80
instrucciones de ahí se deriva su nombre, su repertorio suma un total de 156
instrucciones.
El Z-80 resulto ser un microprocesador mucho más rápido y fácil de usar, ya que
solo requerían una fuente de alimentación de 5v. y toda la circuitería de soporte
estaba incluida en el circuito integrado. Su conjunto de instrucciones contenía las
78 instrucciones del 8080, lo que le permitía ejecutar todos los programas escritos
para este último, así como 80 instrucciones mas, en total 158.
!
718
b7 b6 b5 b4 b3 b2 b1 b0
S Z X H X P/V N C
$ $ |$|+ | %
° | & | ' , Es un registro de 16 bits que indica la
dirección de la próxima instrucción ejecutar. Las instrucciones del Z80
pueden contar de uno, dos, tres o cuatro Bytes.
° $
& ', Es un registro de 8 bits que puede ser
cargado para especificar el byte más significativo de una dirección de
memoria. El byte menos significativo es proporcionado por el dispositivo
que solicita la interrupción.
° $
&$', Es un registro especial diseñado
para proporcionar un refresh automático de las memorias RAM dinámicas.
° $
,El registro de instrucciones tiene por misión
almacenar el código de operación de la instrucción leída desde
memoria.Este código es comparado con los códigos de cada instrucción
que reconoce el microprocesador. Si el código es válido se ejecuta sino se
marca un error de sintaxis.
% |($%
Su objetivo es mantener la secuencia adecuada y el control de todas las
operaciones del microprocesador. Atiende y responde a todas las señales
externas.
$| $ % %718
El Z80 es un microprocesador de 8 bits y cuenta con 158 instrucciones y 10
modos de direccionamiento. El circuito integrado del microprocesador Z80 se
deposita en un encapsulado Dual In Line de 40 terminales, de las cuales 5 son
únicamente de entrada, 24 son de salida y 8 son bidireccionales, además, existen
dos que sirven para conectar la fuente de alimentación y otra más que es la
entrada del reloj.
718
El Z80 opera con una fuente de alimentación de +5.0 Volts conectada a la terminal
11, (pin 11), la tierra de la fuente se conecta a la terminal GND, (pin 29), el
consumo típico 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 del
Z80 se implementan con una RAM estática, los registros incluyen 2 bancos de 6
registros de propósito general, que se usan individualmente como registros de 8
bits, o en pares como registros de 16 bits, existen también 2 bancos de registros
denominados "acumulador" y "banderas", además cuenta con 6 registros de
propósito especial, 4 registros de 16 bits, PC, SP, IX e IY, y 2 registros de 8 bits, el
registro del refresh "R" y el registro de interrupciones "I", la aritmética de 8 bits de
las funciones, y las instrucciones lógicas de la CPU se ejecutan en la ALU.La ALU
realiza las siguientes funciones:
1. Sumar.
2. Restar.
3. Función lógica AND.
4. Función lógica OR.
5. Función lógica OR-EX.
6. Comparación.
7. Desplazamientos a la derecha y a la izquierda.
8. Incrementar bytes.
9. Decrementar bytes.
10. Poner bits en uno lógico.
11. Poner bits en cero lógico y
12. Comprobar el estado de los bits
% ,
El microprocesador Z80 requiere solamente un voltaje de alimentación de 5
V, con un margen de error 5%, y consume una corriente máxima de 200 mA.
|7-18
Cualquier oscilador que cumpla con las especificaciones de la entrada puede
servir para generar la señal de reloj del Z-80. Si se va a operar el
microprocesador debajo de la frecuencia máxima y no se necesita que el valor de
la frecuencia de oscilación 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 diseñador disminuir el ritmo de operación 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.
% $%
$% % ,
El MPU Z80 posee dos señales asociadas con el control de los buses de dirección
y datos. Estas señales son la señal de entrada BUSRQ y la señal de salida
BUSAK.
La señal RFSH no está asociada con la operación normal de la memoria sino que
se usa solamente con memoria dinámica. Las memorias dinámicas requieren que
se refresque periódicamente la información almacenada para que no se pierda.
$% $
MRE RFSH RD WR
Leer memoria 0 0
Escribir en memoria 0 0
Ciclo de refresh ( bits ) 0 0
$% ,
El Z80 usa la señal IORQ para informar a los dispositivos de E/S que los 8 bits
menos significativos del bus de direcciones contienen una dirección de E/S válida
% % ,
En este grupo se encuentran las señales M1, RESET, WAIT y HALT.
% :
O
!
&
', indica que el
microprocesador va a obtener el código de operación de una instrucción.
En las instrucciones que tiene un código de operación de dos bytes, la señal M1
se genera al obtener cada uno de los bytes del código de operación.
La señal RESET es una señal de entrada a la CPU y que se activa en ³cero´ para
efectuar una operación de reestablecimiento general.
%
&':es uno de los controles más necesarios
en un microprocesador, los registros y flip ± fllops internos adoptan valores
aleatorios y la operación del circuito resulta impredecible. Por lo tanto, el
microprocesador debe reestablecerse para colocarlo en un estado inicial conocido.
A través del estudio de las instrucciones del Z-80 se ha observado que la mayoría
de ellas actúan sobre los datos almacenados en los registros internos y en la
memoria. Este microprocesador ofrece diez tipos de direccionamiento, en los
cuales están incluidos todas las modalidades de las instrucciones. Estos son:
En este tipo de instrucción el operando mismo es el segundo o tercer byte.
Se usa para efectuar operaciones con valores constantes
11000110
N
Byte 0
Byte 1
C6H=opcode
Valor inmediato
ADD A,N sumarle el valor N al acumulador
El primero de los dos bytes del dato o de la dirección contiene los bits menos
significativos (LSB) y el segundo byte contiene los bits más significativos (MSB).
Ejemplo:
1
1
x 68 NN = 7 68
x
7
Los movimientos de esta instrucción son los siguientes:
}
LD IY,NN
$ |% $ ,
El direccionamiento implícito se refiere a las instrucciones donde el código de
operación automáticamente implica que determinado registro o registros contiene
los operandos. El código de operación es fijo, es decir no tiene campos variables.
Con este direccionamiento se puede nombrar el conjunto de instrucciones
aritméticas y lógicas, donde el acumulador siempre actúa como uno de los
operandos y como destino de los resultados. Como ejemplo está la instrucción
CPL que obtiene el complemento a uno del acumulador.
Las instrucciones que usan este tipo de direccionamiento son las de transferencia
de datos, las aritméticas, la instrucción LD r,r¶ ordena que el contenido del registro
³r´ se cargue en el registro ³r´, donde ³r´ y ³r´¶ pueden ser cualquiera de los
registros internos de 8 bits.
Esta instrucción ordena que el contenido del registro "s" se deposite en el registro
"r".
r registro destino
s registro fuente
"r" y "s" pueden ser cualquiera de los registros activos o primarios de 8 bits de la
CPU Z80, el movimiento de la información de esta instrucción es:
Las instrucciones que utilizan direccionamientos indexado usan byte que sigue al
código operacional para especificar el desplazamiento que suma a uno de los dos
registros de índice del Z80, para formar la dirección efectiva de la memoria, el
contenido del registro de índice no se altera.
Ejemplo:
Intercambio.
Grupo de prueba.
BIT b, r
BIT B, (HL) Z
BIT b, (IX + d)
BIT b, (IY + d)b
SET b, rb
SET b, (HL)
SET b, (IX + d)
SET b, (IY + d)
RES b, m
JP nn
JP cc, nn SI cc es verdad PC = nn
JR e PC = PC + e
JR C, e SI C = 0 continuar sino PC = PC + e
JR NC, e SI C = 1 continuar sino PC = PC + e
JR Z, e SI Z = 0 continuar sino PC = PC + e
JR NZ, e SI Z = 1 continuar sino PC = PC + e
JP (HL) PC = (HL)
JP (IX) PC = IX
JP (IY) PC = IY
DJNZ, e
-----
"
1
ADD, r A=A+r
ADD A, n A=A+n
ADD A, (HL) A = A + (HL)
ADD A, (IX + d) A = A + (IX + d)
ADD A, (IY + d) A = A + (IY + d)
ADC A, s A = A + s + CY
SUB s A=A-s
SBC A, s A = A ± s - CY
AND s A = A \/ s
OR s A = A /\ s
XOR s A=A+s
CP s A-s
INC r r=r+1
INC (HL) (HL) = (HL) + 1
INC (IX + d) (IX + d) = (IX + d) + 1
INC (IY + d) (IY + d) = (IY + d) + 1
DEC m m=m-1
O;
LD dd, nn dd nn
LD IX, nn IX nn
LD IY, nn IY nn
LD HL, (nn) H (nn + 1), L (nn)
LD dd, (nn) dd H (nn +1), dd L (nn)
LD IX, (nn) IX H (nn +1), IX L (nn)
LD IY, (nn) IY H (nn +1), IY L (nn)
LD (nn), HL (nn + 1) H, (nn) L
LD (nn), dd (nn + 1) dd H, (nn) dd L
LD (nn), IX (nn + 1) IX H, (nn) IX L
LD (nn), IY (nn + 1) IY H, (nn) IY L
LD SP, HL SP HL, SP IX
LD SP, IY SP IY
PUSH qq (SP ±2) qq L, (SP-1) qq H
PUSH IX (SP ±2) IX L, (SP-1) IX H
PUSH IY (SP ±2) IY L, (SP-1) IY H
17) POP qq qq H (SP + 1), qq L (SP)
18) POP IY IY H (SP + 1), IY L (SP)
19) POP IX IX H (SP + 1), IX L (SP)
EX DE, HL DE HL
EX AF, AF´ AF AF´
EXX (BC) (BC´), (DE) (DE´), (HL) (HL´)
EX (SP), HL H (SP + 1), L (SP)
EX (SP), IX IX H (SP + 1), IX L (SP)
EX (SP), IY IY H (SP + 1, IY L (SP)
LDI (DE) (HL), DE DE + 1, HL HL + 1, BC BC ± 1
LDIR (DE) (HL), DE DE + 1, HL HL + 1, BC BC ± 1
LDD (DE) (HL), DE DE ± 1, HL HL ± 1, BC BC ± 1
LDDR (DE) (HL), DE DE ± 1, HL HL ± 1, BC BC ± 1
CPI A ± (HL), HL HL + 1, BC BC ± 1
CPIR A ± (HL), HL HL + 1, BC BC ± 1
CPD A ± (HL), HL HL ± 1, BC BC ± 1
CPDR A ± (HL), HL HL ± 1, BC BC ± 1
%$ #
ELECTRONICA DIGITAL BASICA
JOHN A.DEMPSEY
EDIT: ALFA OMEGA
EL MUNDO DE LA COMPUTACION
CARLOS GISPERT
EDIT: OCEANO
VOLUMEN 2
INTEL PERIPHERALS
CURRENT HANDBOOKS
ECG SEMICONDUCTORS
PHILIPS
EDITION 1996
SOFTWARE
WINDOWS
WORD 97
PAIN BRUSH