CECyT No. 3
“ESTANISLAO RAMIREZ RUIZ”
“MICROPROCESADORES”
Los datos temporales, globales y permanentes también deben estar disponibles en forma
independiente de posición. Las instrucciones LEA permiten el acceso a datos, tablas o valores
de texto en forma independiente de posición.
PROGRAMACIÓN REENTRANTE
En sistemas que trabajan con interrupciones es posible que alguna interrupción utilice la
subrutina que se estaba trabajando en el momento de la interrupción. En ese caso si el
almacenamiento local y global se utiliza de manera arbitraria entonces en la interrupción se
alterarían estas memorias y al regresar de la interrupción los resultados de la primer rutina
serian erróneos. Por esto es necesario que el almacenamiento local se haga en distinto lugar
cada vez que se entre en el modulo. Esto se logra usando el stack para transferir parámetros
globales, resultados y para hacer el almacenamiento local.
PROGRAMACIÓN RECURSIVA
TÉCNICAS DE PROGRAMACIÓN
DIVISIÓN EFICIENTE DE 8 BITS
La división puede hacerse de dos maneras con el 6809: restando sucesivamente el divisor del
dividendo con lo que el número de veces que sea posible restar será el cociente; o por medio
del algoritmo de resta y cambio que es el método de la casita que se aprende en primaria. Este
último es mas eficiente porque en promedio es mas rápido que el de restas sucesivas.
* ***SUBRUTINA división
APLICACIÓN
DE
MICROPROCESADORES
EL MICROPROCESADOR
En realidad el microprocesador por si solo no puede resolver problema alguno ya que necesita
de varios elementos auxiliares para poder operar. Así pues un microcomputador está formado
por el microprocesador y sus elementos auxiliares tal como se muestran en la figura:
Como puede apreciarse los bloques que forman al microcomputador están ligados por una
línea de comunicación denominada "BUS".
En el ámbito de las computadoras un "BUS" se define como un grupo de conductores por los
que se transfiere información de un lugar a otro. En muchos casos la información proviene de
cualquiera de las varias fuentes y puede transferirse a uno de varios destinos. Aun mas en
algunos buses la información puede transferirse en cualquiera de dos sentidos. Estos son
llamados buses bidireccionales. Desde luego para un bus dado solo puede transferirse
información en un solo sentido en un instante dado.
En un arreglo como este aparecen dos detalles importantes. Primero, se debe asegurar que en
cualquier instante dado pretenda solo una transmisión de datos. Esto se logra asignando a
cada destino o fuente una dirección diferente. Por ejemplo: cada uno de los bloques RAM,
ROM, puerto de entrada y de salida poseen uno o más habilitadores. Un nivel lógico apropiado
en estos contactos activa el circuito.
De aquí que asignando a cada circuito diferente dirección, aseguramos que solo un circuito se
habilitará a la vez. A esto se le conoce como direccionar.
La siguiente figura muestra como se logra esta capacidad. Como puede apreciarse se agrega
un decodificador de direcciones para cada circuito. Las entradas de este decodificador
provienen del ?P a través del bus de direcciones. Las salidas van a las líneas habilitadoras de
los circuitos que requieran comunicación con el ?P a través de la línea de datos. Dado que en
un instante determinado solo puede aparecer una dirección se habilita a un solo circuito.
A las memorias se les asigna muchas direcciones dado que cada byte debe tener su propia
dirección. Por ejemplo si se usa una RAM de 2k posiblemente se le asignen las direcciones de
la 0000 a la 07FF. Cuando cualquiera de estas direcciones aparecen en el bus de direcciones
la RAM se habilita a través de la línea proveniente del decodificador. Nótese además que una
parte de las líneas de direcciones se conecta directamente a la RAM, mismas que sirven para
seleccionar los bytes individualmente dentro de la RAM.
Los puertos de entrada y salida tienen una dirección única (para cada uno). Así el ?P se
comunica con los medios de entrada y salida poniendo la dirección apropiada en el bus.
El segundo punto es mas fundamental, y aparece debido a la naturaleza de los estados de los
circuitos digitales; la salida de una compuerta estándar tiene siempre un estado lógico, esto es,
un cero o un uno. El problema es: ¿que estados tendrían las salidas de los circuitos
conectados al bus de datos cuando no están habilitados? Independientemente del estado que
asuman interferirían con el estado de salida del circuito seleccionado. Por ejemplo si la salida
del circuito deshabilitado tiene un estado alto interferirá con el estado bajo del circuito
habilitado. Es decir, un circuito trata de poner un nivel alto mientras que otro trata de forzarlo a
cero. Desde el punto de vista eléctrico esto es un corto que de permanecer así dañaría las
compuertas involucradas.
Este problema se resuelve dotando de lógica de tercer estado a todos los elementos que se
conectan al bus. Así cuando un dispositivo este deshabilitado el estado que presenta es el
llamado "tercer estado" o de alta impedancia que prácticamente significa "desconectado".