Sunday, December 10, 2006

PROGRAMACIÓN DEL MICROPROCESADOR 8085







INFORME # 6

TEMA:
PROGRAMACIÓN DEL MICROPROCESADOR 8085

1. INTRODUCCIÓN


A. OBJETIVOS GENERALES
Son los objetivos universales del proyecto
B. OBJETIVOS ESPECIFICOS

Realizar la sección de inicialización del programa Monitor.
Programar las secciones de retardo y despliegue del programa monitor.
Realizar la Programación para manejo del teclado hexádecimal y de teclas de función.
Utilizar los recursos del programa Monitor para programación de programas de aplicación.

3. RESUMEN

Parte 1
Luego de haber leído la teoría de la LECCIÓN 9 PROGRAMA MONITOR Y LECCIÓN 10 PROGRAMA 1, se realizo el siguiente PROCEDIMIENTO.

1. Poner el interruptor RESET arriba y todos los demás interruptores abajo.
2. Conectar la fuente de alimentación y encender el equipo.
3. Poner el interruptor ENROM arriba para habilitar la ROM.
4. Poner el interruptor WEN arriba para habilitar la escritura en la ROM.
5. Poner los interruptores de datos a 0000 0000 y presionar el botón ALE para almacenar esta dirección en el 74HCT573.
6. Poner los interruptores de datos a 1100 0011 (C3 en HEX) y presionar el botón
WR para cargar la primera instrucción del programa en la ROM.
7. Repetir los pasos 5 y 6 cambiando las direcciones y datos para cargar el resto del programa 1 conforme el listado del Apéndice 1 direcciones 0001, 0002 y 0060 a 0074.
8. Poner el interruptor A8 arriba para acceder a las posiciones d memoria 0100 a 01FF.
9. Repetir los pasos 5 y 6 cambiando las direcciones y datos para cargar el código de programa listado el Apéndice 1 en las posiciones 010A a 012D. Esta es la sección del programa Monitor que será usada en el programa posterior.
10. Poner el interruptor WEN abajo para deshabilitar mas escritura a la ROM.
11. Poner el interruptor A8 abajo para retornar a la dirección 0000 a 00FF.
12. Poner los interruptores de datos a 0000 0000 y presionar el botón ALE para registrar la dirección en el 74HCT573. Pulsar el botón RD para verificar los datos almacenados en esa dirección.
13. Repetir el paso 12 (cambiando la dirección) para verificar que los datos almacenados en las posiciones 0001, 0002 y 0060 a 0074 están almacenados correctamente.
14. Poner el interruptor A8 arriba para regresar a las direcciones 0100 a 01FF.
15. Repetir el paso 12 (cambiando las direcciones) para verificar que los datos almacenados en las posiciones 010ª a 012D han sido almacenados correctamente.
16. Poner el interruptor ENROM abajo para deshabilitar la ROM.
17. Poner abajo el interruptor A8 para regresar a las direcciones 0000 a 00FF.
18. Poner abajo el interruptor RESET. El MM-8000 ahora realiza la operación de copia, pone el Puerto A como entrada y los Puertos B y C como salida y luego se detiene en la dirección 0074. Como en la lección 4, las salidas de los puertos son inicializados a cero. Esto hace iluminar todos los segmentos incluyendo el punto decimal del Display 2.
19. Poner el interruptor RESET arriba para retornar a la operación manual. Note que la línea de RESET del 8156 retorna los Puertos IO a entradas lo cual hace que se apague el Display 2.
20. Poner el interruptor ENRAM arriba para habilitar la RAM.
21. Poner los interruptores de datos a 1101 1100 (DC en Hex.) y presionar el botón ALE para registrar la dirección en el 8156. Luego presionar el botón RD para verificar que el primer byte fue copiado correctamente desde la ROM.
22. Repetir el paso 21 cambiando la dirección desde DD a FF para verificar que los 36 bytes fueron copiados correctamente.
23. Poner el interruptor ENRAM abajo para deshabilitar la RAM.
24. Apagar el equipo.


Parte 2
Luego de haber leído la teoría de la LECCIÓN 11 PROGRAMA 2, se realizo el siguiente PROCEDIMIENTO.

1. Poner el interruptor RESET arriba y todos los demás interruptores abajo.
2. Conectar la fuente de alimentación y encenderla.
3. Poner el interruptor ENROM arriba para habilitar la ROM.
4. Poner el interruptor WEN arriba para permitir la escritura en la ROM.
5. Utilizar el procedimiento habitual (poner los interruptores de datos a la dirección y presionar el botón ALE, luego poner los interruptores de datos al código a ser escrito y presionar el botón WR) para copiar el Programa 2 a la ROM. El Programa 2 esta listado en el apéndice 1 posiciones 0074 a 00A4.
6. Utilizar el procedimiento habitual para copiar la Tabla Patrón, direcciones 0040 a 004F como se lista en el apéndice 1.
7. Poner el interruptor A8 arriba para acceder a las posiciones de memoria 0100 a 01FF.
8. Utilizar el procedimiento habitual para almacenar FF en la posición de memoria 011C. La dirección de la ROM 011C es copiada a la dirección 80EE de la RAM y llega ha ser el byte de orden superior de la constante de retardo. El valor FF da un retardo de aproximadamente medio segundo.
9. Poner abajo el interruptor WEN para evitar la escritura en la ROM.
10. Utilizar el procedimiento habitual (poner los interruptores de datos con la dirección para ser verificada y presionar el botón ALE, luego el botón RD para leer los datos) para verificar el código de programa listado en el apéndice 1 en las posiciones 010A a 012D. RECUERDE QUE LA POSICIÓN DE MEMORIA 011C HA SIDO CAMBIADA A FF.
11. Poner el interruptor A8 abajo para regresar a las posiciones de memoria 0000 a 00FF.
12. Utilizar el procedimiento habitual para verificar los Programas 1 y 2 en las posiciones de memoria 0000 a 0002 y 0060 a 00A4.
13. Utilizar el procedimiento habitual para verificar la tabla Patrón almacenada en el paso 6.
14. Poner el interruptor ENROM abajo para deshabilitar la ROM.
15. Poner abajo el interruptor RESET para correr el Programa 2. Como el Programa está inicializado en el modo data (DA) con la posición de despliegue de datos (DDA) puesta a 00, ambos displays mostrarán ceros sin punto decimal. El Display 1 y Display 2 se alternarán en intervalos de aproximadamente ½ segundo como se determinó por la constante de retardo en el paso 8. Como en el Programa 1, las salidas de los Puertos son inicializados a cero. Esto hace iluminar todos los segmentos incluido el punto decimal del Display 2, durante el primer período de retardo.
16. Poner el interruptor RESET arriba para detener el programa. CAMBIO DE LA CONSTANTE DE RETARDO
17. Poner los interruptores ENROM y WEN arriba para habilitar la escritura de la ROM.
18. Poner el interruptor A8 arriba para acceder alas posiciones 0100 a 01FF.
19. Utilizar el procedimiento habitual para almacenar 05 en la posición de la dirección 011C. Esta dirección será copiada en la dirección 80EE de la RAM y llegará ha ser el byte de orden superior de la constante de retardo. El valor 05 da un retardo de aproximadamente 10 ms.
20. Poner el interruptor WEN abajo para prevenir la escritura en la ROM.
21. Utilizar el procedimiento habitual para verificar el contenido 05 en la dirección 011C.
22. Poner el interruptor ENROM abajo para deshabilitar la ROM. Como los interruptores de datos, el interruptor A8 es solapado por el 8085 y se lo puede dejar arriba.
23. Poner el interruptor RESET abajo para correr el programa. Los displays 1 y 2 se alternarán en intervalos de aproximadamente 10 ms dando la sensación de que ambos están encendidos continuamente.
24. Poner el interruptor RESET arriba para parar el programa.

PONER EN MODO AL
25. Poner los interruptores ENROM y WEN arriba para habilitar la escritura en la ROM.
26. Utilizar el procedimiento habitual para almacenar FD en la dirección 0128 y 12 en la 012B. Ver tabla 11-1. La FD de la dirección 0128 es copiada a la dirección 80FA de la RAM poniendo el programa en modo AL. El 12 en la dirección 012B es copiado a DAL en la dirección 80FD de la RAM y será desplegada.
27. Poner el interruptor WEN abajo para prevenir la escritura en la ROM.
28. Utilizar el procedimiento habitual para verificar el FD en la dirección 0128 y 12 en la dirección 012B.
29. Poner el interruptor ENROM abajo para deshabilitar la ROM.
30. Poner el interruptor RESET abajo para correr el programa. El Display mostrará el 12 en el byte DAL. El punto decimal del Display 2 se encenderá indicando que el programa está en modo AL.
31. Poner el interruptor RESET arriba para parar el programa.

PONER EN MODO AH
32. Repetir los pasos 25 al 31. En el paso 26 almacenar FE en la dirección 0128 para poner el programa en el modo AH. Almacenar 34 en la dirección 012C para que se despliegue. En el paso 30 el display mostrará el 34 en el byte DAH y el punto decimal del Display 1 iluminará indicando que el programa está en modo AH.

VERIFICACIÓN DE LA TABLA PATRON
33. Repetir los pasos 25 a 31. En el paso 26 almacenar el número 56, 78, etc. en la dirección 012C para verificar los bytes restantes de la Tabla Patrón (ver apéndice 1). El punto decimal del Display 1 estará encendido en cada caso indicando que el programa se encuentra en modo AH.

REESTABLECIENDO
34. Repetir los pasos 25 a 31. En el paso 26 reestablecer los bytes de MODEL,
DDA, DAL y DAH a sus valores originales como en la tabla 11-1. En el paso
30, se desplegará 00 sin punto decimal como en el paso 23.
35. Apagar el equipo.

Parte 3
Luego de haber leído la teoría de la LECCIÓN 12 PROGRAMA 3, se realizo el siguiente PROCEDIMIENTO.

1. Poner el interruptor RESET arriba y todos los demás interruptores abajo.
2. Conectar la Fuente de Alimentación y encender el equipo.
3. Poner el interruptor ENROM arriba para habilitar la ROM.
4. Poner el interruptor WEN arriba para habilitar la escritura en la ROM.
5. Utilizar el procedimiento manual para copiar el Programa · a la ROM. El Programa 3 esta listado en el apéndice 1 posiciones 00A2 a 00F0.
6. Poner el interruptor WEN abajo para prevenir posteriores escrituras en la ROM.
7. Utilizar el procedimiento habitual para verificar los programas 1,2 y 3 en las posiciones 0000 a 0002 y 0060 a 00F0.
8. Utilizar el procedimiento habitual para verificar el Patrón de la Tabla en las posiciones 0040 a 004F.
9. Poner el interruptor A8 arriba para acceder a las posiciones de memoria 0100 a 01FF.
10. Utilizar el procedimiento habitual para verificar las posiciones 010A a 012D.
11. Poner el interruptor EROM abajo para deshabilitar la ROM.
12. Poner abajo el interruptor RESET para correr el programa. Como en la lección
11, el programa inicia en el Modo DDA puesto en 00. El Display por lo tanto mostrará 00 sin punto decimal.
13. Presionar el botón 1. La pantalla cambia a 01.
14. Presionar el botón 2. El 1 en el dígito de la derecha es desplazado al dígito de la izquierda y el dígito 2 es insertado en el dígito de la derecha.
15. Presionar el botón 3 a F. Note que cada dígito es insertado en el dígito de la derecha y el dígito anterior es desplazado a la izquierda.
16. Presionar l botón F dos veces para obtener FF en la pantalla.
17. Poner el interruptor RESET arriba y luego abajo. La pantalla mostrará ahora 00. El FF mostrado en el paso 16 estaba en el byte DDA en la RAM no en la ROM. El programa es aún inicializado para mostrar 00.
18. Repetir el paso 16.
19. Presionar y soltar el botón RST. Note que tiene el mismo efecto que poniendo el interruptor RESET arriba y luego abajo nuevamente.
20. Poner arriba el interruptor RESET.
21. Apagar el equipo.


Parte 4
Luego de haber leído la teoría de la LECCIÓN 13 PROGRAMA 4, se realizo el siguiente PROCEDIMIENTO.

1. Poner el interruptor RESET arriba y todos los demás interruptores abajo.
2. Conectar la fuente de alimentación y encender el equipo.
3. Poner arriba el interruptor ENROM para habilitar la ROM.
4. Poner arriba el interruptor WEN para permitir la escritura en la ROM.
5. Utilizar el procedimiento habitual para almacenar la Tabla de Función y la sección de Encontrar Función del Programa 4 en las posiciones 0050 a 005F y 00F1 a 00FF. Ver el apéndice 1.
6. Poner el interruptor A8 arriba para acceder a las posiciones de memoria 0100 a 01FF.
7. Utilizar el procedimiento habitual para almacenar las secciones de Función GO y Función Lectura del Programa 4 en las posiciones 0100 a 0109.
8. Poner abajo el interruptor WEN para prevenir posteriores escrituras en la ROM.
9. Utilizar el procedimiento habitual para verificar los códigos almacenados en el paso 7 y las posiciones 010A a 012D de la ROM.
10. Poner abajo el interruptor A8 para acceder a las posiciones de memoria 0000 a 00FF.
11. Utilizar el procedimiento habitual para verificar lo restante del programa Monitor en las posiciones 0000 a 0002 y 0040 a 00FF.
12. Poner abajo el interruptor ENROM para deshabilitar la ROM.

VERIFICANDO LOS MODOS
13. Poner el interruptor RESET abajo para correr el programa. Como en las lecciones 11 y 12, el programa comienza en el modo Dato (DA) con DDA puesto en 00. El display por lo tanto mostrará 00 sin puntos decimales.
14. Presionar dos veces la tecla 1. El byte DDA contendrá 11 y se mostrará 11.
15. Presionar la tecla AL. El programa ahora está en el modo de Dirección Baja (AL) con lo cual iluminará el punto decimal del display de la derecha (display 2). Como el byte DAL esta inicializado con 00, el display muestra 00.
16. Presionar dos veces la tecla 2. El byte DAL tienen ahora 22 y el display mostrará 22.
17. Presionar la tecla AH. El programa esta ahora en el modo de Dirección Alta (AH) con lo cual ilumina el punto decimal del display izquierdo (display 1). Como el byte DAH está inicializado con 00, el display mostrará 00.
18. Presionar dos veces la tecla 3. El byte DAH tendrá ahora 33 y el display mostrará 33.
19. Presionar la tecla DA. El programa retorna al modo Datos (DA). No se iluminan los puntos decimales. El display muestra el 11 del byte DDA.
20. Presionar la tecla AL. El programa retorna al modo AL. El punto decimal de la derecha ilumina. El display muestra 2l 22 del byte DAL.
21. Presionar la tecla AH. El programa retorna al modo AH. Ilumina el punto decimal de la izquierda. El display muestra el 33 del byte DAH.

ALMACENANDO – LEYENDO EN LA RAM
22. Presionar la tecla AH para poner el programa monitor en modo AH.
23. Presionar los botones 8 y 0 para almacenar 80 en DAH. Si el DAH ya contiene el número deseado, no necesita ser recargado.
24. Presionar la tecla AL para poner el programa Monitor en modo AL.
25. Presionar la tecla 0 dos veces para almacenar 00 en DAL. Si DAL ya contiene el número deseado, no necesita ser almacenado.
26. Presionar la tecla DA para poner el programa Monitor en modo DA.
27. Presionar los botones 1 y 2 para almacenar 12 en DDA. Si el DDA ya contiene el número deseado, no necesita ser recargado.
28. Presionar la tecla ST para almacenar el 12 de DDA a la dirección 8000 especificada por DAH y DAL. La dirección en DAH y DAL se incrementa en 1.
29. Presionar la tecla AL para poner el programa en modo AL. Note que DAL ha sido incrementado a 01. Cuando se pulsa nuevamente la tecla ST, los datos serán almacenados en la dirección 8001.
30. Presionar la tecla DA para poner el programa en modo DA.
31. Repetir los pasos 27 y 28 para completar la siguiente tabla:



32. Presionar la tecla AL para poner el programa en modo AL. DAL es 08.
33. Repetir los pasos 22 a 25 para retornar DAH y DAL a 8000.
34. Presionar la tecla R para verificar la primera dirección de la tabla. Se leerá 12 en la dirección 8000 y almacenará en DDA. El programa se habrá puesto en modo DA para mostrar el contenido de DDA. Las direcciones en DAH y DAL se incrementarán en 1.
35. Repetir el paso 34 para verificar el resto de la tabla.

ALMACENAR-LEER EN ROM
36. Poner el interruptor WEN arriba para permitir la escritura en la ROM.
37. Repetir los pasos 22 a 25 poniendo DAH y DAL a 012E. Este es el byte después del último byte del programa Monitor.
38. Presionar la tecla DA para poner el programa en modo DA.
39. Repetir los pasos 27 y 28 para almacenar lo siguiente:



40. Poner el interruptor WEN abajo para prevenir posteriores escrituras de la ROM:
41. Repetir los paso 22 a 25 poniendo DAH y DAL nuevamente en 012E.
42. Repetir el paso 34 para verificar la tabla almacenada en el paso 39.

VERIFICAR LA FUNCION GO
43. Repetir los pasos 22 a 25 poniendo DAH y DAL a 8000.
44. Presionar la tecla DA para poner el programa en modo DA.
45. Repetir los pasos 27 y 28 para almacenar la siguiente tabla:



Esta es la instrucción de salto incondicional que transfiere el control así mismo nuevamente. Una vez ejecutada se repetirá indefinidamente.
46. Repetir los pasos 22 a 25 para retornar a DAH y DAL a 8000.
47. Repetir el paso 34 para verificar la tabla almacenada en el paso 45.
48. Repetir los pasos 22 a 25 para retornar nuevamente a DAH y DAL a 8000.
49. En éste punto el programa está en modo AL desplegando DAL (00). Presionar la tecla GO. El control se transfiere a la instrucción de salto en la posición 8000 la que se repite indefinidamente. El programa Monitor ya no está corriendo. Dependiendo de su estado, cuando se presionó la tecla GO, el display contendrá un cero en la izquierda o en la derecha. El otro display quedará en blanco.
50. Presionar la tecla RST para reiniciar el programa Monitor.

VERIFICANDO X1 Y X2
51. Presionar la tecla 1 para poner el display en 01.
52. Presionar la tecla X1. El programa se reinicia. El display muestra 00.
53. Repetir los pasos 51 y 52 utilizando el X2. La tecla X2 tiene el mismo efecto que X1.
54. Apagar el equipo.

Parte 5
Luego de haber leído la teoría de la LECCIÓN 14 PROGRAMA 5, se realizo el siguiente PROCEDIMIENTO.

1. Poner el interruptor RESET arriba y todos los demás interruptores abajo.
2. Conectar la fuente de alimentación y encender el equipo.
3. Poner el interruptor RESET abajo para arrancar el programa Monitor.
4. Presionar la tecla AH para ponerlo en modo AH.
5. Presionar las teclas 8 y 0 para almacenar 80 en DAH.
6. Presionar la tecla AL para poner el programa en modo AL.
7. Presionar las teclas 0 y para almacenar 02 en DAL.
8. Presionar la tecla DA para poner el programa en modo DA.
9. Presionar las teclas 2 y 1 para almacenar 21 en DDA.
10. Presionar la tecla ST par almacenar 21 en DDA en la dirección 8002 conforme al contenido de DAH y DAL.
11. Repetir los pasos 9 y 10 para almacenar el resto del programa 5 conforme se lista en la Tabla 14-1.
12. Repetir los pasos 4 al 7 para poner DAH y DAL nuevamente en 8002.
13. Presionar la tecla R para verificar el 21 en la dirección 8002.
14. Repetir el paso 13 par verificar el resto del programa de la Tabla 14-1.
SUMA DE NUMEROS
15. Repetir los pasos del 4 al 7 poniendo DAH y DAL a 8000.
16. Presionar la tecla DA para poner el programa en modo DA.
17. Presionar las teclas 1 y 7 para almacenar 17H en DDA.
18. Presionar la tecla ST par almacenar el 17H en DDA en la dirección 8000 conforme el contenido de DAH y DAL. Esto pone 17H en N1 (decimal23).
19. Presionar las teclas 3 y 2 para almacenar 32H en DDA.
20. Presionar la tecla ST par almacenar el 32H en DDA en la dirección 8001. Esto pone 32H en N2 (decimal 50).
21. Después de almacenar el 32H en la posición 8001, las direcciones en DAH y DAL se incrementa a 8002 que es la dirección de inicio del programa 5. Presionar la tecla GO para correr el programa. El programa 5 pone el LSB de la suma en DDA y el MSB en DAL. Luego, el control es retornado al programa Monitor. El monitor es colocado en modo DA el cual despliega el LSB de la suma. 49H = 17H + 32H (en decimal 73 = 23 + 50).
22. Presionar la tecla AL para desplegar DAL. El MSN es 00 indicando que no hubo acarreo.
23. Repetir los pasos 15 al 22 almacenando 3AH en la dirección 8000 y E1H en la 8001. En el paso 21 el LSB de la suma será 1BH. En el paso 22 el MSB será 01H. 11BH = 3AH + E1H (en decimal 283 = 58 + 225).
24. Apagar el equipo.

4. MARCO TEORICO

Programa Monitor.-
El programa monitor reside en las posiciones de memoria ROM 0000 a 0003 y 0040 a 012D, también son usadas de 80DC a la 80FF de la RAM. En el momento que el RESET se encuentre en posición inferior comienza a correr el programa monitor en el entrenador si previamente se encuentra encendido. Cuando se logre terminar este laboratorio se vera con el programa monitor corriendo una nueva forma de introducir datos o nuevos programas a la memoria, así también cualquier byte podrá ser enviado al display. Usando la tecla GO podrá ser trasferido desde el Monitor a otros programas.



El programa monitor opera controlando las parámetros mostrados en la Tabla 9-1, donde existen 3 modos de operación, Datos (DA), Dirección Baja (AL) y dirección Alta (AH). Donde el modo activo es determinado por el código en byte en el modo L.
En la tabla 9-2, el byte L es puente en el byte de orden inferior de la dirección del DDA (FC) para el modo DA, DAL (FD) para el modo AL, y DAH (FE) para el modo AH, el byte modo H siempre contiene 80 que es el byte de orden superior de la dirección DDA, DAL y DAH; el modo es puesto presionando los botones correspondientes del teclado en cada modo como sigue a continuación:

MODO DATO
En el modo DA los bytes Modo H y Modo L contienen la dirección del byte DDA 80FC. Los dos dígitos hexádecimales de DDA son mostrados en los Displays 1 y 2. No se iluminan los puntos decimales indicando que el byte DDA esta siendo desplegado.
Cuando una de las teclas de datos del teclado (0 a F) es presionada, los datos son introducidos en el dígito de orden inferior del DDA y se despliega en el Display 2. El dígito que se encontraba en la posición de orden inferior es desplazado a la posición de orden superior y desplegado en el Display 1.

MODO DE DIRECCIÓN DE ORDEN INFERIOR
En el modo AL los bytes de modo H y modo L contienen la dirección del byte DAL 80FD. Los datos del teclado ahora se introducen en DAL de la misma forma que en DDA. El despliegue es el mismo excepto que el punto decimal del Display 2 ilumina indicando que se está mostrando el byte DAL.

MODO DE DIRECCIÓN DE ORDEN SUPERIOR
En el modo AH los bytes modo H y modo L contienen la dirección del byte DAH 80FE.
La operación en el modo AH corresponde al modo AL excepto que el punto decimal del Display 1 ilumina indicando que el byte DAH esta siendo mostrado.
Cuando el botón de Almacenar del teclado (ST) es presionado, los datos en el byte DDA son almacenados en la dirección especificada por DH y DAL. Entonces, la dirección se incrementa en uno y el Monitor es puesto en modo DA mostrando el byte de datos justamente almacenado
Cuando se presiona el botón GO del teclado, el control es transferido a la instrucción cuya dirección esta especificada por DAH y DAL.
Los botones X1 y X2 del teclado están reservados para uso futuro. Al momento, si se presionan los botones X1 y X2 se reinicia el programa Monitor.

UBICACIÓN DE MEMORIA
Durante cada ciclo de máquina, el 8085 envía fuera los 16 bits de dirección que nos da
216 = 65.536 posiciones de memoria directamente direccionables. El sistema MM-8000 contiene 2K bytes de memoria ROM y 256 bytes de RAM. Hay por lo tanto muchas posiciones sin utilizar. Para asignar la ROM y RAM a áreas específicas en el espacio de
64K del campo de memoria, la línea de dirección A15 se utiliza como selector de dispositivo. A esto se denomina selección lineal. Cuando los interruptores RESET, ENROM y ENRAM están abajo, la línea de dirección A15 maneja la entrada CE de la ROM y la entrada CE de la RAM. Entonces la ROM se selecciona para las direcciones inferiores a 8.000 y la RAM se selecciona para direcciones superiores a 8.000. Como la RAM solo tiene 256 bytes, solo se necesitan las líneas de dirección A0 a A7. Las líneas A8 a A14 no están decodificadas y pueden estar en 1 ó 0. Por conveniencia, definiremos con ceros de A8 a A14. La RAM entonces ocupa el espacio de direcciones de 8000 a 80FF (ver Figura 9 – 1). Similarmente, la ROM ocupa el espacio de direcciones de 0000 a 07FF.



ENTRADA – SALIDA
El sistema MM-8000 utiliza una entrada/salida mapeada, es decir, que utiliza la línea IO/M en lugar de una línea de dirección de memoria para distinguir entre los ciclos de I/O y los ciclos de memoria. Durante las instrucciones de entrada salida, el segundo byte (byte de puerto) de la instrucción es enviado por el bus de datos – direcciones y repetido en las líneas de dirección A8 a A15 (ver la Figura 9 – 2). Para habilitar el 8156, el bit 7 del byte de puerto (repetido en A15) debe estar en 1. Como se muestra en las lección 4, el bit 7 no afecta al puerto seleccionado.

EXPANSIÓN
Para proporcionarle al sistema MM-8000 capacidad de expansión de memoria y de I/O han sido llevadas las líneas necesarias al conector de 44 pines de la tarjeta (ver tabla 9–3) y a dos conectores de CI de 16 pines (ver tabla 9 – 4)



Parte 1.- Lección 10 Programa 1

Se realiza la sección de inicialización del programa Monitor. Las 36 posiciones de memoria ROM, 010A a 012D, son copiadas a las posiciones de memoria RAM 80DC a 80FF. Estas posiciones contienen una rutina de retardo de aproximadamente 10 milisegundos y se la utilizará posteriormente cuando se escriba en la ROM. Cuando corre ésta rutina en la RAM, solo son accesadas las posiciones de dirección de la RAM, en el anterior tema se vio que la escritura en la ROM requiere un retardo de 10ms. En este tiempo de retardo la ROM no puede ser acezada, entonces después de ser escrito el programa en la ROM el programa monitor corre la rutina de 10ms. De retardo en la RAM antes de retornar a la ROM. La sección de inicialización del programa monitor también configurado el puerto A como entrada y puertos B y C como salida.

La mayoría de las direcciones de memoria hasta la 0040 están reservadas como posiciones de Trampa y Reinicio. El programa Monitor usa las posiciones 0040 A 005F para tablas de consulta. Como el microprocesador 8085 siempre comienza a correr desde la posición de memoria 0000, en dicha posición una instrucción de salto mueve el programa inmediatamente a la posición 0060 para iniciar la rutina de copia.
El listado de los programas 1 al 4 se puede encontrara en el Apéndice 1. Todos los datos y direcciones en el listado del programa están en hexádecimal a menos que se establezca de otra manera. Refiérase a la Tabla 1.1 para la tabla de conversión de binario a hexádecimal. Refiérase a la figura 10-1 para el flujograma y al Apéndice 2 para la descripción detallada del Programa 1.



DESCRIPCIÓN DEL CIRCUITO
Refiérase a la Figura 10-3 para el esquemático simplificado de las partes adicionadas para la lección 10. La adición del CI 8085 le permite al microprocesador el control del Bus de Datos AD0 a AD7, y del Bus de Direcciones A8 a A15, y de los Buses de Control que constan de RESET OUT, IO/M, RD, WR, y ALE. Se debe retirar el puente J10 para permitir al 8085 manejar el Bus ALE a través de la resistencia R7. Cuando se repone (RESET) el 8085, la salida ALE se mantiene en nivel bajo permitiendo que el botón ALE controle el Bus como en las lecciones previas.
Para evitar entradas no deseadas, los puentes J4 a J9 polarizan las líneas TRAP, RST7.5, RST6.5, RST5.5., INTR y HOLD a tierra, y la resistencia R60 polariza la línea READY a +5V. La resistencia R3 y el capacitor C2 está conectado a las entradas X1 y X2 del 8085 y ponen la frecuencia de reloj a aproximadamente 1.5Mhz.
Cuando el interruptor de RESET esta arriba, la entrada RESET IN del 8085 es anclado a tierra a través del polo A del interruptor y el 8085 se pone en el estado de reposición. Cuando el interruptor es puesto abajo, se aplica un nivel alto a la entrada RESET IN a través de la resistencia R1 y el 8085 comienza acorrer a partir de la dirección 0000. Si el interruptor RESET esta abajo cuando se enciende el equipo, la aplicación del nivel alto en la entrada de RESET IN es retardada por los capacitores C1 y C13 para permitir que el sistema se estabilice antes de arrancar el 8085.



Figura 10-3
Cuando el interruptor RESET está arriba y el 8085 se encuentra en el estado de reposición, las líneas de dirección, incluyendo la A15, se encuentran en estado de alta impedancia lo que las desconecta efectivamente del Bus de Direcciones. En éste estado los interruptores ENRAM y ENROM operan como se describió en las lecciones 3 y 6. Antes de bajar el interruptor RESET, los interruptores ENRAM y ENROM deben estar en la posición abajo (desactivado) para la operación apropiada del sistema MM-8000.
Cuando el interruptor RESET se pone abajo, las líneas de dirección pasan al estado de baja impedancia. La línea de dirección A15 maneja la entrada CE del 2816 a través del interruptor ENROM y el puente J1. La línea de dirección A15 también maneja la entrada CE del 8156 a través del polo B del interruptor RESET, el interruptor ENRAM, y J2. Como en las líneas del Bus de Datos las resistencias de anclaje de 3,9K, la resistencia R44 y la R45 de 10K de anclaje a tierra son sobrepuestas por la baja impedancia del circuito de la línea A15 en el 8085.


Parte 2.- Lección 11 Programa 2

Para el Programa 2 las secciones de despliegue y retardo del Programa Monitor son adicionados al Programa 1. La figura 11-1 muestra el flujograma del Programa 2. Para enlazar las secciones de los programas, la instrucción HLT en la posición 0074 del Programa 1 es reemplazada por la instrucción JMP en la posición 0074 en el Programa 2 (ver apéndice 1).



SECCION DE RETARDO
La sección de retardo reside en las posiciones de memoria 80EC a 80F9 de la RAM.
Esta es parte de los 36 bytes copiados de la ROM a la RAM en el Programa 1. El flujograma de la sección de Retardo se muestra en la Figura 11 – 2. El retardo es realizado primero cargando el par de registros HL con la constante de retardo. Seguidamente, se decremento repetidamente el registro L verificando si llegó a cero (pasos 11A-2 y 11A – 3). Cuando el registro L se hace cero, se decrementa el registro H una vez y luego nuevamente se decrementa el registro L hasta cero. Cuando el registro H alcanza el cero, se completa el retardo.



SECCION DE DESPLIEGUE
La sección de despliegue reside en las posiciones 0077 a 00A4 de la ROM. Las posiciones 80FA a 80FE de la RAM se utilizan para almacenar los parámetros MODE L, MODE H, DDA, DAL y DAH. El valor inicial de estos parámetros, mostrados en la Tabla 11 – 1, son copiados a la RAM desde la ROM al arranque del programa. Como se mostró en la lección 4, los datos de salida en el Puerto B van a los Displays 1 (display de la izquierda) y Display 2 (display de la derecha). El bit cero del Puerto C controla que Display utiliza los datos. Solo un display está activo por vez. El programa Monitor despliega el dígito de orden inferior, bits 0 a 3 de un byte en el display de la derecha y el dígito de orden superior, bits 4 a 7 en el display de la izquierda. La sección de despliegue del Monitor ingresa el Puerto C y percibe que dígito esta siendo desplegado.
Los datos en el Puerto B son cambiados para desplegar el otro dígito y el bit 0 del Puerto C se complementa para iluminar el otro display. Como se muestra en la Figura 11 – 1, el Programa 2 retarda entonces y repite la conmutación de despliegue. Si esto se hace lo suficientemente rápido, parecerá como si ambos displays se iluminaran simultáneamente.



Si por ejemplo, el dígito 9 binario 1001 va ha ser desplegado con el punto decimal iluminado, debe ser sacado al Puerto B el patrón de bits 0011 0000. Para traducir el 1001 a 0011 0000, se utiliza la Tabla Patrón mostrada en el apéndice 1. Los patrones de bits requeridos para desplegar del 0 a F con punto decimal iluminado están almacenados en las posiciones 0040 a 004F. Si como en el ejemplo anterior, se tiene que desplegar un 9 con el punto decimal, el 9 es sumado a la dirección base 0040 para obtener 0049. El patrón de bits contenido en la posición 0049 es sacado entonces al Puerto B.
Si no se requiere el punto decimal, el bit 0 es puesto a 1 antes de sacarlo. Para hacer esto, se genera un byte de punto decimal conteniendo un 1 en el bit 0 para todas las condiciones diferentes al modo AL y Display 2 o modo AH y Display 1. Los bits 1 a 7 son todos ceros (ver la Figura A2-1d del apéndice 2). El byte de punto decimal es mezclado con la tabla patrón antes de sacarlo. Ver la Figura 11 – 3 para el flujograma de la sección de despliegue.
Ver el apéndice 2 para la descripción detallada del Programa 2.



Parte 3.- Lección 12 Programa 3

En este programa 3 se agrega las secciones de rastreo (de las posiciones 00A2 a 00D3), encontrar tecla (de las posiciones 00D4 a 00E1) y encontrar datos (de las posiciones 00E2 a 00F0) del programa 2 mostrado en la figura 12-1, la cual muestra el flujograma 3. En las secciones de Display y rastreo están enlazadas mediante el reemplazo de la instrucción JMP de programa 2 en las posiciones de 00A2 a 00A4 con los 3 primeros bytes de la rutina de rastreo, el cual nos permite que dato sean introducidos al programa Monitor a través de las 16 teclas de datos mostrado en la fig. 12-2. ahora las 8 teclas de función rastreada serán rastreadas pero no procesadas en el programa 3, si no en el programa 4.








Cuando se presiona una tecla, es como si se mantuviera presionada durante cientos de milisegundos. Durante éste tiempo el teclado será rastreado varias veces. El byte de Habilitación de Procesamiento de Tecla (ENKP) asegura que la tecla será procesada solo una vez cada vez que sea pulsada. Si la rutina de Rastreo encuentra la tecla presionada y el byte ENKP puesto (FF), el programa borrará primero el byte ENKP a 00 antes de procesar la tecla y retornará nuevamente a la rutina de retardo. POr el tiempo que el byte ENKP permanezca en cero, se inhibe el procesamiento de otras teclas. El rastreo continua a intervalos de 10 ms. Cuando la tecla es soltada y la rutina de rastreo se ejecuta sin encontrar una tecla, el byte ENKP es puesto nuevamente a FF para habilitar la siguiente entrada de tecla. El intervalo de 10 ms entre rastreos sirve para antirebote de las teclas.

RUTINA DE RASTREO
La rutina de rastreo verifica cada una de las 16 teclas de datos y 8 de función mostradas en la Figura 12 – 2 para verificar si se encuentran presionadas. Las teclas RST, ALE, WR, RD y RS no son rastreadas. Las 24 teclas rastreadas están ordenadas de manera diferente en el circuito impreso pero se las muestra en la Figura 12 – 2 como 4 filas y 6 columnas para ilustrar la naturaleza matricial de la interconexión. Cuando se presiona una tecla, una línea de fila se conecta con la línea de columna. Por ejemplo, si se presionada la tecla de datos 5, La línea conductor de fila 2 (RD2) se conecta con la Columna de Datos 1 (D COL1). Como se muestra en la figura 12 – 3, el Puerto C está configurado como puerto de salida y maneja las 4 líneas de fila. El Puerto A está configurado como puerto de entrada y rastrea las 6 líneas de columna. En el ejemplo anterior, al presionar la tecla 5 un voltaje alto en la línea RD2 será percibido como un 1 en la línea D COL1. Todas las demás líneas de columna estarán en 0.

El rastreo es iniciado activando RD1. Las líneas de columna son introducidas entonces al registro A por medio del Puerto A. Estas líneas de columna son rastreadas secuencialmente desde D COL0 a F COL1 ver figura 12 – 2. Este ciclo de manejo de filas se repite para RD2, RD3, y RD4. Refiérase a la Figura 12 – 4 para ver el flujograma de la rutina de rastreo. Si una tecla se encuentra presionada, el programa inmediatamente sale de la rutina de rastreo y pasa a la rutina de Tecla Encontrada (KFND). La Figura 12 – 5 muestra el uso de los registros del 8085. El registro B es usado para almacenar el bit de Fila actual. Inicialmente se pone el bit 1 y luego se saca por el Puerto C para manejar RD1. Conforme se completa cada ciclo de manejo de fila el registro B se desplaza un bit a la izquierda para obtener el siguiente bit de manejo de fila. Cuando el bit se desplaza al quinto lugar concluye el rastreo. Se usan 5 contadores para controlar el rastreo:

CONTADOR DE DATOS (D CNT):
El contador D CNT genera el código hexádecimal de la tecla de datos presionada. Inicialmente está puesta en 0 y se incrementa cada vez que se prueba la Columna de Datos y que se halla la tecla abierta (la línea D COL en voltaje bajo). Siempre que se prueba una columna, ya sea de datos o función, y se la encuentra en voltaje bajo, se incrementa el registro E. Como se muestra en la Figura 12– 5, cuando las Columnas de Datos son probadas el D CNT en el registro E y el Contador de Función (C CNT) en el registro L.
Cunando la Columna de Función es probada las posiciones son invertidas. El F CNT en el registro E y D CNT en el registro L.

CONTADOR DE FUNCION (F CNT):
El F CNT indica que tecla de función se ha presionado de manera similar a la D CNT. Como las teclas de función no están implementadas en el Programa 3, no se las utilizará acá. El Programa 4 implementará las teclas de función.

CONTADOR DE COLUMNA DE DATOS (D COL CNT):
El D COL CNT sigue el rastro del número de columnas de dato probadas durante cada ciclo de manejo de filas. Siempre que se prueba una columna, ya sea de datos o función, y se encuentra un voltaje bajo (0), el registro D es decrementado. Como se muestra en la figura 12 – 5 el D COL CNT esta siempre parado con el D CNT. Este se encuentra en el registro D cuando se rastrea las columnas de datos y en el registro H cuando se rastrea las columnas de función. La D COL CNT s puesta en 04 al inicio de cada ciclo de manejo de fila. Cuando se ha decrementado a cero el rastreo de columna de datos se completa.

CONTADOR DE COLUMNA DE FUNCION (F COL CNT):

CONTADOR DE FUNCION (F CNT):
El F CNT indica que tecla de función esta presionada de manera similar al D CNT. Como la las teclas de función no están implementadas en el Programa 3, no será utilizado acá. El Programa 4 implementará las teclas de función.

CONTADOR DE COLUMNA DE DATOS (D COL CNT):
La D COL CNT sigue el rastro del número de las Columnas de Datos probadas durante cada ciclo de Manejo de Filas. Siempre que se prueba una columna, ya se de Datos o Función, y se encuentra con voltaje bajo (0), el registro D es decrementado. Como se muestra en la Figura 12 – 5 el D COL CNT esta siempre pareado con D CNT. Este está en el registro D cuando la Columna de Datos es rastreada y en el registro H cuando se rastrea la Columna de Función. La D COL CNT es puesta a 04 al inicio de cada ciclo de Manejo de Fila. Cuando ha sido decrementada a cero el rastreo de Columna de Datos ha concluido.

CONTADOR DE COLUMNA DE FUNCION (F COL CNT):
La F COL CNT sirve para un propósito similar al de D COL CNT. Este está en el registro D cuando se rastrea un Columna de Función y en el registro H cuando se rastrea una Columna de Datos. Es puesto a 02 al inicio de cada ciclo de manejo de Filas y decrementado por cada prueba de Columna de Función. Cuando es cero, señala al programa que el rastreo de la Columna de Función ha concluido.

CONTADOR DATOS/FUNCION (D/F CNT):
El D/F CNT reside en el registro C. Indica que sección de columna de Datos o Función esta siendo rastreada. El D/F CNT es puesto a 02 al inicio de cada ciclo de Manejo de Fila. Se decrementa a 01 al concluir el rastreo de la columna de Datos y a 00 al completar el rastreo de la Columna de Función. Cuando es cero, la D/F CNT señala al programa que el ciclo de Manejo de Filas se ha completado. La rutina de Tecla Encontrada (KFND) también usa la D/F CNT para determinar si la tecla encontrada fue de datos o de función.

RUTINA DE TECLA ENCONTRADA:
La rutina de Tecla Encontrada KFND percibe el estado del byte ENKP. Si el procesamiento de tecla no está habilitado, el control es transferido nuevamente a la rutina de Retardo. Si el procesamiento de tecla está habilitado, el byte ENKP es borrado para deshabilitar el teclado hasta que se suelte la tecla. Entonces se percibe la señal D/F CNT para determinar si se ha presionado una tecla de datos o función. Si fue presionada una tecla de datos, el control es transferido a la rutina DFND. En el Programa 4 el control será transferido a la rutina F FND si fue presionada una tecla de función. Refiérase a la figura 12 – 6 para el flujograma de la rutina de Tecla Encontrada.

RUTINA DE DATOS ENCONTRADOS:
La rutina de Datos Encontrados (D FND) procesa las teclas de datos. El código de la tecla de datos es introducido al byte DDA, DDL o DAH como se especifique por los modos H y Modo L. L dígito de la derecha del byte es desplazado a la posición del dígito de la izquierda y un nuevo código de tecla es insertado en la posición derecha del dígito. Refiérase a la Figura 12 – 7 para el flujograma de la rutina D FND.
Ver el apéndice 2 para la descripción detallada del Programa 3.

DESCRIPCIÓN DEL CIRCUITO
En la Figura 12 – 9 se muestra un esquemático simplificado del circuito de Reposición
(RST). Con el interruptor de Reposición arriba, el pin RESET IN del 8085 es puesto a la posición de tierra y el interruptor RST no tiene efecto. Cuando el interruptor Reset esta abajo y el 8085 corriendo, presionando el interruptor RST pone tierra al pin RESET IN y el 8085 se para. Soltando el interruptor RST libera de tierra al pin RESET IN. Esto tiene el mismo efecto que poner el polo A del interruptor RESET abajo como se describió en la lección 10.



La Figura 12 – 2 muestra un esquema simplificado de las 24 teclas rastreadas adicionadas en la lección 12. Cada tecla se encuentra en la intersección de las líneas de fila y columna. Presionando la tecla conecta la línea de la fila con la de la columna. El Puerto C esta configurado como puerto de salida. Colocando un 1 en el Puerto C, los bits C1 a C4 pone un voltaje alto en la línea de manejo de filas correspondiente RD1 a RD4. Solo una línea de manejo de filas se pone a nivel alto por vez. El Puerto A esta configurado como puerto de entrada. La línea de columna de la Columna de Datos 0 (D COL0) a la Columna de Función 1 (F COL1), son entradas al Puerto A por las líneas A7 a A2. Las líneas de columnas son mantenidas en un voltaje bajo (0) a través de las resistencias R61 a R66. La línea de columna es conducida a nivel de voltaje alto (1) solo cuando un interruptor la conecta a una línea de conducción de Filas activa (nivel alto).


Parte 4.- Lección 13 Programa 4

El Programa 4 implementa las ocho teclas de función AH, AL, DA, R, ST, GO, X1 y X2. Para hacer esto, se agrega al Programa 3 la rutina de Encontrar Función (F FND) y las ocho rutinas de función, Función de Dirección Alta (FAH) hasta la Función X2 (FX2) son adicionadas al Programa 3. Con estas adiciones el programa Monitor está completo. En el apéndice 3 se muestra el flujograma completo del programa Monitor.

La rutina de Encontrar Función (F FND) (en las ubicaciones 00F1 a 00FF) llevan al programa Monitor a la dirección de inicio de la rutina de función seleccionada. Las rutinas de función (en las ubicaciones 0109 y 80DC a 80EB) realizan el trabajo requerido por la tecla de función particular y luego saltan nuevamente a la rutina de Retardo.

Rutina Encontrar Función (F FND)
El programa monitor es orientado a la rutina de Función apropiada mediante de la Tabla de Función mostrada en el apéndice 1. La Tabla de Función contiene la dirección de inicio de cada rutina de Función. La dirección aparece en la tabla en el mismo orden de rastreo de las teclas asociadas. Para cada dirección se requieren dos bytes. El byte de orden inferior aparece primero seguido inmediatamente por el byte de orden superior.
Hay sin embargo dos bytes entre las direcciones.

En la lección 11 se utilizó el código hexádecimal de los datos para acceder a la dirección apropiada en la Tabla Patrón. De manera similar, el F CNT es utilizado para acceder a la dirección apropiada en la Tabla de Función. Al inicio de la rutina de rastreo, la F CNT es inicializada a 28H, (ver la lección 12). Esta es la dirección base (50H) de la Tabla de Función desplazada 1 bit a la derecha. Desplazar un bit a la derecha es equivalente a la división por 2. 50H/2 = 28H. Conforme se rastrea cada tecla de función, la F CNT se incrementa en 1. La columna 1 de la Tabla 13 – 1 lista las teclas de función en el orden en que son rastreadas. Las columnas 2 y 3 listan los valores binarios y hexadecimales de F CNT cuando se encuentra la tecla correspondiente.

Como cada dirección en la Tabla de Función toma dos posiciones, la cuenta generada en F CNT (y el valor inicial) debe ser multiplicada por 2 para obtener la dirección correcta en la Tabla de Función. Para multiplicar, la F CNT se desplaza 1 bit a la izquierda. Los resultados binarios y hexadecimales del desplazamiento se muestran en las columnas 4 y 5 de la Tabla 13 – 1. Este resultado es el byte de orden inferior requerido de la dirección en la Tabla de Función.

Ver en la Figura 13 – 1 el flujograma de la rutina F FND. La rutina F FND primero genera la dirección de la Tabla de Función en el par de registros H-L. La dirección de inicio de la Rutina de Función de la Tabla de Función se carga entonces al par de registros D-E. Para facilitar la ejecución de la rutina de Función los bytes DAH y DAL son puestos en el par de registros H-L y el código MODO L para el modo AH (FE) es puesto en el registro A. Los pares de registros H-L y D-E son intercambiados y el control es transferido a la rutina de Función. Cuando el programa entra en las rutinas de Función, los bytes DAH y DAL están en el par de registros D-E.



Rutina de Almacenamiento de Función (FST)
Refiérase a la Figura 13-2 para el flujograma de la rutina FST. La rutina FST almacena el byte en DDA en la posición de memoria especificada por DAH y DAL. Luego, la dirección en DAH y DAL es incrementada en uno y el programa es colocado en modo DA. Para facilitar la ejecución de las rutinas de FAH, FAL y FDA, el programa es colocado en modo DA poniendo primero en el registro A el código de MODE L para el modo AH (FE). Entonces, se decrementa dos veces el registro A para el modo DA (FC) y se almacena en MODE L.



Rutina de Lectura de Función (FR)
Refiérase a la Figura 13-2 para el flujograma de la rutina FR. La rutina FR lee el byte de la dirección especificada por DAH y DAL y lo almacena en DDA para desplegarlo.
Luego, el control es transferido ala rutina FST para incrementar DAH y DAL y colocar el programa en modo DA.



Rutina de Función FAH, FAL y FDA
La única tarea requerida para las rutinas de Función de Dirección Alta (FAH), Función de Dirección Baja (FAL) y Función de Dato (FDA) es poner el modo de programa almacenando el byte apropiado en MODE L. Antes de transferir el control a las rutinas de Función, la rutina de Encontrar Función pone el código de MODE L para el modo AH (FE) en el registro A. Cuando se presiona la tecla AH, el control se transfiere a la instrucción etiquetada FAH en la posición 80E9 de la rutina FST (ver el apéndice 1 y la Figura 13-2). Esta instrucción almacena el código de AH (FE) en el byte MODE L. Cuando se presiona la tecla AL el control se transfiere a la instrucción etiquetada FAL. Entonces se decrementa el (FE) en el registro A al código para el modo AL (FD) antes de almacenarlo en el byte MODE L.
Cuando se presiona la tecla DA, el control se transfiere a la instrucción etiquetada FDA y se decrementa dos veces el registro A antes de almacenarlo en el byte MODE L.
Rutina de Función GO
La rutina de Función GO (FGO) transfiere el control a la instrucción cuya dirección está especificada el DAH y DAL.

Rutinas de Función FX1 y FX2
Las rutinas de la Función X1 (FX1) y Función X2 (FX2) están reservadas para uso futuro. Actualmente, la tabla de Función contiene 0000 como dirección de arranque para las rutinas FX1 y FX2. Estas por lo tanto reinicializarán el programa Monitor.
Ver el apéndice 2 para la descripción detallada del Programa 4.

Parte 5.- Lección 14 Programa 5

Con el programa Monitor completo, se pueden introducir nuevos programas en la memoria a través del teclado. Los programas son ejecutados introduciendo su dirección de inicio en DAH y DAL y presionando la tecla GO. Estos programas pueden correr indefinidamente o, al concluir, pueden parar el microprocesador o retornar al programa Monitor. El Programa 5 demostrará esto.

El Programa 5 suma dos números de un solo byte N1 y N2 previamente almacenados en las posiciones de memoria 8000 y 8001. El LSB (byte menos significativo) de la suma es colocado en DDA. El bit de acarreo del bit 7 generará el MSB (byte más significativo) que se coloca en DAL. El programa Monitor se reintroduce entonces en la instrucción SET DA en la posición 80E5. (Ver el apéndice 1). Esto pone al Monitor en modo DA desplegando el LSB de la suma en DDA. El MSB puede ser desplegado presionando la tecla AL. Refiérase a la Figura 14-1 para el flujograma y a la Tabla 14-1 para el listado del Programa 5.




PASO 1.
La instrucción LXI HL (Carga inmediata del par de registros HL) en la posición 8002 carga el par de registros HL con la dirección de N1 como se especifica en las posiciones 8003 y 8004. La instrucción MOV AM (mover desde memoria) en la ubicación 8005 carga el registro A con N1 como lo especifica el par de registros HL. La instrucción INX HL (incrementar el par de registros HL) en la ubicación 8006 pasa el par de registros HL a la dirección de N2. La instrucción ADD M (sumar memoria) en la posición 8007 suma N1 que esta en el registro A con N2 como lo especifica el par de registros HL. El resultado es colocado en el registro A. El indicador de acarreo es puesto si se produce acarreo del bit 7. El registro A ahora contiene el LSB de la suma.

PASO 2
La instrucción LXI HL (cargar inmediatamente el par de registros HL) en la posición 8008 carga el par de registros HL con la dirección de DDA como se especifica en las posiciones 8009 y 800A. La instrucción MOV MA (mover a memoria) en la posición 800B almacena el LSB de la suma desde el registro A al DDA conforme lo especifica el par de registros HL.

PASO 3
La instrucción MVI A (mover inmediato) en la posición 600C mueve el 00 en la ubicación 800D al registro A. La instrucción ADC A (sumar registro con acarreo) en la ubicación 800E suma el registro A y el bit CY y coloca la suma en el registro A. Como el registro A tiene 0 la suma tiene solamente el valor del bit CY. El bit CY fue previamente puesto por la instrucción de suma en el paso 1. El registro A por lo tanto contiene 01 si se produjo acarreo de la suma entre N1 y N2 o 00 si no se produjo acarreo. Este es el MSB de la suma.

PASO 4
La instrucción INX HL (incrementar el par de registros HL) en la posición 800F adelanta el par de registros HL a la dirección de DAL. La instrucción MOV M A (mover a memoria) en la posición 8010 almacena el MSB en DAL como lo especifica el par de registros HL.

PASO 5
La instrucción JMP (salto) en la posición 8011 transfiere el control a la instrucción SET DA en la posición 80E5 del programa Monitor (ver apéndice 1). La entrada en este punto pone al Monitor en modo DA desplegando el LSB de la suma de N1 y N2.

5. LISTADO DE MATERIALES
· Entrenador 8085 de la serie MM-8000
6. CONCLUSIONES
Ø Se llevaron a conclusión todos los laboratorios, con la ayuda de unos compañeros y se logro comprobar todas las funciones que cumple el entrenador vistos anteriormente.
7. FE DE ERRATAS
Ø Se llego a cambiar 2 veces de entrenador debido a que estos estaban dañados ya que no almacenaba los datos que se le indicaban, y cuando se hacia correr el programa no funcionaba.
Ø Se tiene que tomar en cuenta que cuando un programa esta corriendo, es decir RESET nivel inferior, si o si deben estar en la posición inferior la ENROM, ENRAM y WEN, si no se echa a perder el programa y hay que revisar todo de nuevo, lo cual me sucedió 2 veces.

0 Comments:

Post a Comment

<< Home