CPLD RS232 ROM Display, Leds y Llaves IC 8085 ADC y DAC ...dea.unsj.edu.ar/mp1/APUNTES/Catedra...

30
8 LEDs (86h) I/O Digitales 8 Llaves ON/OFF (84h) ADC 8 canales de 8bits (88h a 8Fh y 82h) I/O Analógicas DAC 1 canal de 8 bits (50h) Comunicación Serie RS232 Software UART 4800bps (SID/SOD 8085) 4 Displays 7Seg. (Hexa) (80h y 81h) I/O Usuario Teclado Hexadecimal (82h) CPU Intel 8085 (4.433618MHz) RAM 2K x 8bis ROM 4K x 8bis Intel 8155 Timer/PTA/PTB/PTC (70h a 75h) Oscilador 1 IC 555 Oscilador 2 IC 555 Cátedra Microprocesadores I Electrónica Digital III Teclado ADC y DAC IC 8155 Display, Leds y Llaves IC 8085 ROM CPLD IC 555 RS232

Transcript of CPLD RS232 ROM Display, Leds y Llaves IC 8085 ADC y DAC ...dea.unsj.edu.ar/mp1/APUNTES/Catedra...

8 LEDs (86h)

I/O

D

igit

ales

8 Llaves ON/OFF (84h)

ADC 8 canales de 8bits (88h a 8Fh y 82h)

I/O

A

nal

ógic

as

DAC 1 canal de 8 bits (50h)

C

omu

nic

ació

n

Serie RS232 Software UART 4800bps (SID/SOD 8085)

4 Displays 7Seg. (Hexa) (80h y 81h)

I/O

U

suar

io

Teclado Hexadecimal (82h)

CPU

Intel 8085 (4.433618MHz)

RAM

2K x 8bis

ROM

4K x 8bis

Intel 8155 Timer/PTA/PTB/PTC (70h a 75h)

Oscilador 1

IC 555

Oscilador 2

IC 555

Cátedra Microprocesadores I

Electrónica Digital III

Teclado

ADC y DAC

IC 8155

Display, Leds y Llaves

IC 8085

ROM

CPLD

IC 555

RS232

Bioing. Raúl Correa -1- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Introducción El presente documento pretende dar al Alumno una visión general del Hardware de la placa de desarrollo del KIT8085. Así como también una visión del Software que lo hace una herramienta útil al Usuario y la forma de uso del mismo en las Prácticas de laboratorio

Hardware

La placa de desarrollo del KIT8085 está compuesta por tres Módulos bien definidos Físicamente: Módulo1:

La placa de desarrollo K8085 es un sistema mínimo basado en el microprocesador Intel 8085. Dicho sistema posee una interfaz a periférico tipo 8155, el cual aporta 3 puertos I/O (dos de 8bits y uno de 6 bits), un timer de 14bits y 256 bytes de RAM. Además el K8085 cuenta con un Oscilador 555 cuyo periodo es regulable por potenciómetros multivueltas. Dispone de un zócalo para memoria EPROM (4Kb o 2Kb) y un chip 2Kb de RAM. Para seleccionar los distintos dispositivos cuenta con 8 líneas de selectoras de chip de 4kb ubicadas desde la 0000h a la 7000h. Posee además hardware para administrar la Interrupciones al 8085 (Switches, Filp-Flop y Jumpres). Todos los puerto del 8155, Bus de datos, Bus de Direcciones, Selectores de Chip, etc. se encuentran disponibles en 2 conectores de 40 pines cada uno. Características:

CPU Intel 8085.

Periférico Intel 8155:

3 Puertos I/O .

Timer de 14bits.

256 bytes de RAM.

Oscilador 555 con periodo ajustable.

4Kb o 2Kb de EEPROM.

2Kb de RAM.

Hardware para Interrupciones.8 líneas

de chip-select de 4kb cada una para el

sistema Direccionable.

Todos los Buses, líneas de control,

puertos I/O, etc. disponibles en 2

conectores.

Estabilizador de 5V en placa.

Módulo2: La placa IO-8085Half: la cual fue

diseñada para realizar la interfase de ampliación de periféricos del KIT8085. Utiliza un CPLD de Xilinx (XC9572XL PLCC44) que se cuelga del bus de control (ALE, /RD, /WR, IO/M) y el bus de dato (AD[7:0]) para controlar todos los procesos de lectura y escritura de los periféricos adicionales con el microprocesador 8085, a través de la decodificación de memoria. Esta placa provee al KIT8085 de los Siguientes periféricos: 4 displays de 7 segmentos.

8 leds.

Teclado matricial de 16 teclas.

8 llaves de selección de Vcc o GND.

Modulo 3 Un conversor Analógico – Digital

ADC 0809 y el conversor Digital – Analógico

DAC 0800 de National.

Ing. Martín Guzzo, Bioing. Raúl Correa -2- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Diagrama en bloques general BUS DE DIRECCIONES / BUS DE DATOS / BUS DE CONTROL & CHIP SELECT PUERTAS I/O & TIMER

VCC/GND

Mapa de memoria El mapeo de memoria se realiza a

través del circuito decodificador de 3 bits U5 que se observa en la hoja de circuitos. La siguiente figura muestra el mapa de memoria de que posee el K8085A en sus dos posibles configuraciones. Características: La función principal de esta placa es realizar la decodificación de memoria para direccionar (seleccionar) los diferentes periféricos en el Sistema Aislado (Instrucciones IN y OUT).

Decodificación del teclado El valor de la tecla presionada se obtiene mediante la composición sincrónica del barrido de las columnas (generado mediante un contador interno programado en el CPLD, alimentado por un reloj) y la decodificación de las filas mediante un decodificador de prioridad. Este último tiene una señal de tecla válida cuando una tecla es presionada y así mediante ésta se captura el valor de la misma. Una señal externa llamada rebote se utiliza para temporizar un retardo entre presiones sucesivas de las teclas y así evitar que se solapen los valores obtenidos con la instrucción call teclas_io

Display 7 Segmentos: Son 4 display, es decir solo permite mostrar un número de 4 dígitos en formato Hexadecimal o decimal. Para usarlos se debe cargar el acumulador con el valor (p.ej. MVI A, 00h) y luego ejecutar una instrucción OUT a la parte

CPU 8085

TIMER I/O

RAM 8155

2K (MAX) RAM

4K

(MAX) EPROM

HARDWARE INTERUPCIONES

OSCILADOR 555

DRIVER RS 232

OSC. CPU / RESET ESTABILIZADOR 5V

80 I/O

PINS

CPLD XC9572XL

4 Displays 8 Leds 8 Llaves Teclado

CAD y CDA

Ing. Martín Guzzo, Bioing. Raúl Correa -3- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

baja del display (OUT 80h) o a la parte alta (OUT 81h).

Llaves: Son 8 llaves, las cuales pueden estar en ‘1’ o ’0’; que están conectadas al Bus de datos de forma tal que ejecutando una lectura con las instrucción IN se puede saber su estado (p.ej. IN 84h).

Leds: Son 8 leds, los cuales cuando están prendidos representan un ‘1’ y apagados un ‘0’; que están conectados al Bus de datos de forma tal que ejecutando una

escritura con las instrucción OUT se puede saber el estado del acumulador (p.ej. OUT 86h).

Dirección de Dispositivos de la Interfase IO-8085Half A continuación se muestra una tabla con las direcciones de los dispositivos de los periféricos de entrada/salida adicionales, que provee la placa IO-8085Half, ubicados en el direccionamiento del sistema aislado.

Periférico Dirección disp. Instrucción Observación

CDA 50h out 50h No la provee la placa I/O Halfdisplay_L 80h out 80h Doble display de 7 Seg.display_H 81h out 81h Doble display de 7 Seg.Teclado 82h in 82h La tecla se escribe en el Nible bajo

EOC 82h in 82h El b7 es '1' si finalizó la conversión x 83h x No usado

Llaves 84h in 84hx 85h x No usado

Leds 86h out 86hx 87h x No usado

CAD 88h in/out 88h Entrada Nº 0 del CADCAD 89h in/out 89h Entrada Nº 1 del CADCAD 8Ah in/out 8Ah Entrada Nº 2 del CADCAD 8Bh in/out 8Bh Entrada Nº 3 del CADCAD 8Ch in/out 8Ch Entrada Nº 4 del CADCAD 8Dh in/out 8Dh Entrada Nº 5 del CADCAD 8Eh in/out 8Eh Entrada Nº 6 del CADCAD 8Fh in/out 8Fh Entrada Nº 7 del CAD

Conversor A/D y D/A

Para realizar una conversión en el ADC0809, primero debemos seleccionar una canal por donde deberá ingresar la señal analógica que deseamos. Para esto el registro de direcciones multiplexado posee 3 entradas, con las cual es seleccionado el canal (debo cargar este valor en el acumulador p.ej. MVI A, 03h para la entrada 4), posteriormente es pulsada la entrada ALE, capturando la dirección en el registro de direcciones multiplexado. Para comenzar la conversión, el pin de START es pulsado (esto lo hace la instrucción Out, p.ej. Out 8Bh para el

canal 4) Se necesitan 8 pulsos de reloj por aproximación. Una vez que finalizó la conversión y tenemos el dato guardado en el cerrojo de salida, una señal de salida se activa indicándonos que finalizo la conversión y que podemos leer el dato, esta salida es EOC (End Of Convert), (presente en el bit7 del acumulador después de hacer una IN 82H). Para leer el dato presente en el cerrojo debemos habilitar el pin OE (Output Enable) (esto lo hace la instrucción IN, p.ej. IN 8Bh para leer el dato, ya convertido que estaba en el canal 4).

Ing. Martín Guzzo, Bioing. Raúl Correa -4- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Esquemático K8085-A

Ing. Martín Guzzo, Bioing. Raúl Correa -5- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Software

Introducción: Para facilitar la depuración de programas y el uso del Kit de desarrollo del

microprocesador 8085 (K8085) se ha desarrollado un programa Monitor que esta grabado en las direcciones 0000 a 1000 de la memoria EPROM del Kit. Pero antes de usar el programa Monitor. Se debe compilar el programa para que pueda ser ejecutado en el K8085. Luego de haber sido compilado se procede a cargarlo en la memoria RAM del KIT y a depurarlo.

Editar y Compilar un Programa: Para la edición, compilación y depuración de un programa a ser cargado en el KIT de desarrollo del microprocesador 8085 podemos utilizar el simulador 8085 Simulator IDE. El entorno de este simulador nos provee la capacidad de poder visualizar, para la depuración del programa, los lugares de memoria en los que el Programa Objeto se cargará en la memoria RAM del KIT. Inicialmente debemos abrir el 8085 Simulador IDE, el cual tiene el siguiente aspecto:

Sobre la barra de herramientas debemos dirigirnos a el menú “Tools” (herramientas), en el que debemos seleccionar la opción “Assembler” (ensamblador), como lo muestra la figura:

Ing. Martín Guzzo, Bioing. Raúl Correa -6- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

La ventana que se abrirá tiene el siguiente aspecto:

Sobre el campo de ventana superior podemos llevar a cabo la edición y depuración de un programa. Para lo último nos ayuda el campo inferior de la ventana, en donde podemos observar todos los códigos de operaciones y operandos que involucran al desarrollo secuencial del programa, conjuntamente con las direcciones en las que se guardarán cada uno de estos en la memoria RAM del KIT. Estas direcciones son las que se ven en la tercera columna del campo inferior (al lado de sus respectivos los códigos de

Ing. Martín Guzzo, Bioing. Raúl Correa -7- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

operaciones). Las mismas comienzan en el lugar de memoria que nosotros habremos definido en el comienzo del programa (instrucciones .org XXXXh). La columna izquierda (amarilla) de ambos campos en la ventana del ensamblador solo indica el número de línea o renglón. Una vez editado el programa (o pegado desde alguna fuente cualquiera) en el campo superior, el mismo debe ser compilado para que este aparezca en el campo inferior, y así poder verificar la dirección final del programa sobre este campo la cual es necesaria para la ejecución del mismo en el KIT desde el Programa Monitor. La compilación se realiza desde el menú “Tools” del ensamblador y en la opción “Assemble”, o si no, en forma más directa, con la tecla “F7”.

Ante la compilación del programa, el ensamblador genera cuatro archivos con el mismo nombre y distinta extensión. De estos archivos el que debemos cargar en la memoria RAM del KIT es el archivo con extensión .hex, el cual posee en formato hexadecimal el programa creado. Es necesario que para que el archivo con extensión .hex se genere le digamos al ensamblador que lo haga, esto es configurando de la siguiente manera el ensamblador:

Ing. Martín Guzzo, Bioing. Raúl Correa -8- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

El aspecto del contenido de este archivo .hex podría ser, por ejemplo: :1011000016FF1EFF3EFFD3861B7BB2C2041116FFE3 :0F1110001EFF3E00D3861B7BB2C21211C300111B :00000001FF Esto lo podemos observar abriendo con el block de notas el archivo .hex. Entonces, en este punto ya podemos compilar el programa generándose el archivo .hex a ser cargado en la memoria RAM del KIT para ejecutarse. Para establecer una comunicación con el KIT y poder cargar el programa al mismo utilizaremos un software de Windows que nos permite interactuar con el Programa Monitor del KIT. Este software es el Hyper Terminal, y es una aplicación que encontramos en INICIO PROGRAMAS ACCESORIOS COMUNICACIONES HyperTerminal Microprocesadores I. Elegir la sesión “Microprocesadores I” nos habilita una comunicación por el puerto serie ya configurada para las operaciones a realizar con el KIT de desarrollo. Por defecto el HyperTerminal se conecta al KIT cuando este se abre, pero podemos desconectarlo y conectarlo manualmente desde la barra de herramientas del programa. Esto no se recomienda hacer durante la comunicación con el programa monitor. Este estado de Conectado/Desconectado se indica en la barra inferior del programa. El software Hyper Terminal tiene el siguiente aspecto:

Ing. Martín Guzzo, Bioing. Raúl Correa -9- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Estando en el estado de conectado, para poder comenzar la interacción con el programa monitor, debemos “Resetear” el KIT. De esta manera aparecerá en la pantalla del Hyper Terminal, lo que es el comienzo de la comunicación, el prompt K8085:\>, es decir:

En esta pantalla es en donde se establece la interfaz a usuario, dado que en ella se muestran las respuestas del programa monitor ante las órdenes que el usuario ejecute.

Ing. Martín Guzzo, Bioing. Raúl Correa -10- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Programa Monitor del kit K8085 Descripción, comandos y subrutinas.

El programa almacenado en la EPROM del K8085, se encarga de realizar dicha comunicación y otras tareas que hacen al manejo de los recursos disponibles, este programa es el denominado “Monitor de Placa”, el cual cumple la función de un pequeño sistema operativo.

El programa monitor genera una imagen en memoria de todos los registros de la CPU, PC y SP lo que le permite ejecutar el programa de usuario independientemente de las rutinas que maneja el monitor para administrar el sistema.

Cuando se le suministra energía al sistema (o Resetea) y esta conectado a una PC, el programa monitor retorna un mensaje de comienzo y aparece el prompt en la pantalla de la PC como se muestra a continuación: UNSJ-8085 Kit de Desarrollo. K8085:\> Este monitor permite que desde la Terminal (Computadora) se pueda realizar las siguientes acciones sobre el K8085: A - Listar los comandos como AYUDA memoria.

B - Modificar una BANDERA del registro de estado del microprocesador

C - CARGAR un programa en la memoria RAM de la placa

D - Ingresar un DATO a la memoria RAM

E - EJECUTAR un programa almacenado en la memoria RAM

I - INGRESAR un nuevo valor a los registros del microprocesador

L - LIMPIAR la pantalla de la PC

M - Visualizar una locación de MEMORIA RAM.

P - Ejecutar por PASOs un programa cargado en la memoria RAM

R - Visualizar los REGISTROS del microprocesador

V - Visualizar una VENTANA de datos de memoria RAM.

Cada palabra remarcada es un comando del programa monitor y se ejecutan con solo pulsar la primera letra. Estos comandos son los que le permiten al usuario cargar un programa en el K8085 y depurarlo viendo los registros corriendo paso a paso, modificando datos etc. Debido a que es un kit de desarrollo mínimo los comandos utilizados son "duros" en cuanto la interfaz de usuario, es decir permiten pocos errores en la edición del comando. Nota: Todos los valores se encuentran en hexadecimal A continuación se realizara una descripción de cada uno de los comandos:

(A) Ayuda Objetivo: Hacer una lista de los comandos. Cuando se teclea ‘A’ el monitor hace una lista de los comandos disponibles como se muestra a

Ing. Martín Guzzo, Bioing. Raúl Correa -11- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

continuación: K8085:\>Ayuda Bandera Carga Dato Ejecuta Ingresa Limpia Memoria Paso Registro Ventana K8085:\> Es necesario aclarar que solo se teclea ‘A’ y el monitor completa la palabra AYUDA, así se comportan con todos los comandos del monitor.

(B) Bandera Objetivo: Invertir el valor lógico de la bandera seleccionada del registro de estado del microprocesador Este comando requiere que se le especifique una de las cinco banderas del microprocesador para que realice la inversión lógica, y queda esperando con una barra invertida, a que se le ingrese una de las letras que corresponden a las siguientes banderas:

S - Signo Z - Cero (Zero) A - Acarreo Auxiliar (Auxiliar Carry) P - Paridad C - Acarreo (Carry) El siguiente texto muestra como el monitor queda esperando que se complete la orden: K8085:\>Bandera S\Z\A\P\C Ingrese la bandera a modificar: \ El monitor indica que espera alguna instrucción cuando coloca una barra invertida (\) en la pantalla, esto se repite en todos los comandos, excepto en el comando EJECUTA . Una vez que se le coloca una letra valida, el comando responde mostrando todos los registros como se muestra a continuación, especificado el nuevo valor de la bandera recién modificada: K8085:\>Bandera S\Z\A\P\C Ingrese la bandera a modificar: \C A=00 M=10 PC =1000 CY=1 CA=0 B=00 C=10 SP =2000 Z =0 D=00 E=10 OPC=C3 00 10 S =0 H=00 L=10 MSP=FFFF P =0 Los registros y banderas que se muestran son los valores de las banderas y registros que posee el microprocesador cuando ejecuta un programa de usuario, estos valores están en las correspondientes imágenes de memoria. Estas imágenes se pueden modificar sin que el programa de usuario este ejecutándose, y recién esta modificación llega al registro real cuando el programa de usuario toma el control de la CPU.

(C) Carga Objetivo: Cargar un programa desde la Terminal (Computadora) a la memoria RAM del kit a través del puerto serie. El kit de desarrollo se comunica a través de sus puertas series con la Terminal. Esta comunicación en esta oportunidad es utilizado para cargar un programa, que fue ensamblado (assembler) y enlazado (linker) en la Computadora, a la memoria RAM del kit. Esta comunicación se realiza utilizando un programa de comunicación llamado Hyper Terminal que corre en la computadoral (terminal). Cuando se teclea "C" el programa monitor se queda esperando un archivo en formato "INTEL" (generalmente con extensión .hex ), con una velocidad de transmisión de 4800bps como se muestra a

Ing. Martín Guzzo, Bioing. Raúl Correa -12- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

continuación. K8085:\>Carga INGRESE PROGRAMA : \ En este momento debemos dirigirnos al menú “Transferir” del Hyper Terminal, y seleccionar la opción “Enviar archivo de texto…”.

Allí seleccionamos el archivo .hex generado al compilar el programa. Pero para ello debemos, en la ventana en la que seleccionamos el archivo, modificar en el “tipo de archivo” la opción de solo archivos de formato texto (TXT) y colocar “Todos los archivos”. De esta manera podremos enviar archivos en formato .hex al K8085. El aspecto de carga del programa al KIT puede verse de la siguiente manera:

Ing. Martín Guzzo, Bioing. Raúl Correa -13- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Si luego de cada cadena trasmitida el monitor responde en la próxima con un "&" es que dicha cadena se recibió sin error, si responde con un "*" es que existo algún tipo de error en la transmisión. Nota : La primera dirección recibida se guarda en la imagen del PC de usuario. Lo cual será el punto a partir del cual comenzara a ejecutarse el programa de usuario; siempre y cuando no se especifique otra. Nota : Todas las direcciones del programa a cargar deben estar dentro de la zona en la que se encuentra mapeada la memoria RAM del KIT se recomienda utilizar la dirección de 1100h. La transmisión se realiza en el formato INTEL que es el siguiente: &:14354000723E00D37278D3713E02D3723E00D372F1C9000004 DATOS DEL ARCHIVO ENVIADO

DIRECCION A PARTIR DE LA CUAL SE CARGAN LOS DATOS

CANTIDAD DE DATOS DEL BLOQUE TRASMITIDO

PRINCIPIO DE LA TRANSMISION

CHEQUEO CADENA ANTERIOR (&=OK ; *=ERROR) - Respuesta del Monitor

SUMA DE CHEQUEO

(D) Dato Objetivo: Modificar un dato en un lugar de memoria RAM. Con este comando se puede realizar la modificación del valor de un lugar de memoria RAM, ingresando la dirección y el valor deseado para dicha locación. Al colocar la letra "D", el monitor queda esperando la dirección que se desea modificar como se muestra a continuación: K8085:\>dato INGRESE DIRECCION DE MEMORIA A MODIFICAR : \ Luego de escribir la dirección de memoria, el programa muestra su contenido y espera el nuevo valor . Una

Ing. Martín Guzzo, Bioing. Raúl Correa -14- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

vez este ingresado el comando termina. K8085:\>Dato INGRESE DIRECCION DE MEMORIA A MODIFICAR : \2345:FF INGRESE NUEVO VALOR : \39 Si el comando devuelve un mensaje de ERROR, es que no pudo escribir satisfactoriamente el lugar especificado, este seria el caso de que no hubiese Memoria en esa dirección o bien que sea de solo lectura o de solo escritura (ROM, EPROM, Latch, etc.).

(E) Ejecuta Objetivo: Ejecutar un programa que esta almacenado en la memoria RAM, desde una dirección de comienzo hasta una de finalización. Luego de que se carga un programa en la memoria RAM; este puede ser ejecutado de diferentes formas. Una de estas es especificarle al monitor la dirección de comienzo y la dirección del código de operación de la próxima instrucción a la ultima instrucción que se desea ejecutar (programa de usuario). El comando solicita la dirección de comienzo del bloque a ejecutar y el fin del mismo como se muestra a continuación: K8085:\>Ejecuta INGRESE DIRECCION DE: \CZO \3500 FIN \3552 Luego queda esperando que se presione cualquier tecla para que el programa se EJECUTE. NOTA: Esta es la única excepción en que el programa monitor no retorna una barra invertida en indicación de espera. Cuando el programa de usuario devuelve el control al monitor, este muestra el estado en que quedaron los registros al finalizar el programa de usuario y estos valores se cargan en los registros imagen y retorna el prompt del sistema.

(I) Ingresa Objetivo: Ingresar un valor al registro deseado del microprocesador. Este comando sirve para modificar el valor de cualquiera de los registros de uso general que posee el microprocesador y el acumulador. El comando presenta una pequeña lista de los registros que se pueden modificar cuando se lo invoca. K8085:\>Ingresa A/B/C/D/E/H/L INGRESE EL REGISTRO A MODIFICAR: \H:34 A= 12 M= 00 PC = 3532 CY= 1 CA= 0 B= 12 C= 34 SP = 1FFB Z = 0 D= F7 E= 0E COP= 3E 43 D3 S = 1 H= 34 L= C9 MSP= 12A7 P = 1 Luego de ingresar el registro que se desea modificar, el monitor espera que se ingrese el valor y luego muestra los valores de todos los registros.

(L) Limpia Objetivo: Limpiar la pantalla de la PC Este comando limpia el monitor de la PC con solo presionar la tecla ‘L’.

Ing. Martín Guzzo, Bioing. Raúl Correa -15- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

(M) Memoria Objetivo: Visualizar el contenido de uno o más lugares de memoria Este comando sirve para poder ver el contenido de cualquier lugar del sistema direccionable de memoria. Se coloca la dirección que se desea visualizar y automáticamente se muestra su contenido, si se presiona cualquier tecla se finaliza el comando pero si se presiona la barra espaciadora se puede visualizar otro lugar de memoria K8085:\>Memoria INGRESE DIRECCION DE MEMORIA : \7000:FA INGRESE DIRECCION DE MEMORIA : \5600:FF Este comando puede visualizar todo tipo de memorias RAM y EPROM y eventualmente si la dirección especificada no posee ningún dispositivo conectado, lo que se lee es FF.

(P) Paso Objetivo: Ejecutar por paso un programa que a sido cargado en la memoria RAM con anterioridad El modo paso a paso es una herramienta muy importante para poder depurar los programas cargados en el kit de desarrollo ya que permite ejecutar el programa instrucción por instrucción. El comando primeramente requiere para iniciar una dirección de comienzo, o bien la especificación de ejecutar directamente un paso. Este primer paso se ejecuta desde la dirección almacenada en la imagen del PC. Comando en modo de espera: K8085:\>Paso PASO O CZO \ Cuando el usuario presiona la letra 'p' (paso) el programa responde ejecutando la instrucción que se encuentra apuntada por la imagen del PC y luego muestra los registros. K8085:\>Paso PASO O CZO \P A= 12 M= 00 PC = 3007 CY= 1 CA= 0 B= 12 C= 34 SP = 1FFB Z = 0 D= F7 E= 0E COP= CD 0C 30 S = 1 H= 34 L= C9 MSP= 12A7 P = 1 Si se presiona la tecla 'F' (fin), se sale de la ejecución por paso y se regresa al prompt. Cuando se ingresa al modo paso a paso y se especifica con la letra 'C' que se desea ingresar un comienzo, el monitor responde bajando una línea y esperando la dirección de comienzo. Una vez esta ingresada la dirección, se ejecuta la instrucción cuyo código de operación que se encuentra en esta dirección. K8085:\>Paso PASO O CZO \C 3007 A= 12 M= 00 PC = 300C CY= 1 CA= 0 B= 12 C= 34 SP = 1FF9 Z = 0 D= F7 E= 0E COP= 3E 00 B7 S = 1 H= 34 L= C9 MSP= 300A P = 1 PASO O FIN \F K:\>

Ing. Martín Guzzo, Bioing. Raúl Correa -16- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

(R) Registros Objetivo: Visualizar el contenido de los distintos registros, banderas, contador de programa, stak pointer, etc. Este comando presenta el estado actual de los registros, banderas, registros especiales, código de operación(COP) que corresponde al código de operación apuntado por el PC y también muestra los dos lugares de memoria siguientes además de la ultima dirección guardada en memoria de Pila(MSP). K8085:\>registros A= 12 M= 00 PC = 300C CY= 1 CA= 0 B= 12 C= 34 SP = 1FF9 Z = 0 D= F7 E= 0E COP= 3E 00 B7 S = 1 H= 34 L= C9 MSP= 300A P = 1 A, B, C, D, E, H, L : Registros de uso general y acumulador. PC : Contador de Programa. SP : Puntero de Pila. COP : Código de operación apuntado por el PC más el contenido de las 2 direcciones

(Sirve para visualizar los operandos que intervienen en la Instrucción, si es que así corresponde). MSP : Ultimo par de datos guardados en memoria de pila

(Si una dirección de memoria o el PC se ordenan para poder visualizarlos como una dirección de 16bits en hexadecimal)

CY : Acareo CA : Acareo auxiliar Z : Bandera de Cero S : Bandera de Signo P : Bandera de Paridad

(V) Ventana Objetivo: Visualizar el contenido de una cantidad determinada de lugares de memoria. Este comando se utiliza para poder visualizar el contenido de un rango de memoria especificado por una dirección de comienzo y un valor determinado que especifica la cantidad de lugares de memoria que se visualizarán a partir de la dirección de comienzo. K8085:\>Ventana INGRESE RANGO DE MEMORIA: \3C INGRESE MEMORIA DE CZO: \0000 0000:C3 AE 01 00 00 00 00 00 C3 08 10 00 00 00 00 00 0010:C3 10 10 00 00 00 00 00 C3 18 10 00 00 00 00 00 0020:C3 20 10 00 C3 24 10 00 C3 28 10 00 C3 2C 10 00 0030:C3 30 10 00 C3 34 10 00 C3 34 01 00 NOTA: La cantidad de memoria (rango) debe ser especificada en hexadecimal.

Rutinas de Monitor K8085 Descripción y funcionamiento. En el programa monitor del kit se encuentran rutinas con diversas funciones, que permiten el funcionamiento del kit. Sin embargo cuando el monitor entrega el control al usuario estas pueden ser utilizadas por el mismo para diversas aplicaciones. Estas rutinas tienen una dirección fija en la memoria EPROM y pueden ser accedidas por el usuario mediante una instrucción de llamada a subrutina CALL, a dicha dirección. Para trabajar con las rutinas del monitor es necesario conocer de las mismas los siguientes datos: - Función que Cumple

Ing. Martín Guzzo, Bioing. Raúl Correa -17- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

- Datos Requeridos - Dirección de Comienzo - Registros y direcciones que modifica. - Valores que retorna. A continuación se describirá cada uno de los aspectos anteriormente mencionados de las siguientes rutinas del monitor.

Dirección Nombre Acción Modifica Datos IN

Datos OUT

08CD DATOS HyperTerminal (XX) -> A A - A 08E2 RESEPC HyperTerminal (X) -> A A - A 090A ASCIHEX ASCII(A) -> HEX(A) A A A 094E TRASM A -> HyperTerminal (X) A A - 097B SEND A -> HyperTerminal (XX) A A - 0996 HEXASCI HEX(A) -> ASCII(A) A A A 09B3 TECLA1 TECLADO -> (A) A - A 09C8 TECLA2 TECLADO -> (A) A - A

09DB TEXT ‘CADENA DE ASCII’-> HyperTerminal H,L M(HL) H,L

09EA ENTER ENTER -> HyperTerminal A - -

09F5 DOSP ‘:’,ENTER,’\’ -> HyperTerminal A - -

0A03 BARRR ’\’ -> HyperTerminal A - - 0A11 PROM 'K:\>' -> HyperTerminal A - - 0A27 BIN2BCD BIN(DE) -> BCD(DE) 0A63 CERUNO IF A!=0 => 1 -> (A) A A A

0A6D ERRA 'ERROR',ENTER -> HyperTerminal A - -

0A77 TUPER MINUSCULA -> MAYUSCULA A A A Tabla de Resumen de Rutinas de Monitor

Rutina DATOS - Dirección: 08CDH Dato de Entrada: Teclado PC (2 veces) – RS232 Dato de Salida: A Reg. Modificados: A Requiere SP: SI Esta rutina captura a través de la rutina RESEPC, dos datos ASCII para luego conformarlos en uno solo hexadecimal y enviarlo al acumulador. Las dos teclas presionadas deben pertenecer al los caracteres hexadecimales para que la rutina funcione adecuadamente.

Rutina RECEPC (Recepción) - Dirección: 08E2H Dato de Entrada: Teclado PC (1 ves) – RS232 Dato de Salida: A Reg. Modificados: A Requiere SP: SI La siguiente rutina es la encargada de capturar un dato recibido por la puerta serie del microprocesador a través del protocolo estándar y colocar dicho dato en el acumulador. Esta rutina se encuentra esperando un dato por la puerta serie en un lazo de espera. Cuando este llega el dato recibido es cargado en el acumulador.

Ing. Martín Guzzo, Bioing. Raúl Correa -18- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Rutina ASCIHEX (de ASCII a Hexadecimal) - Dirección: 090AH Dato de Entrada: A Dato de Salida: A Reg. Modificados: A Requiere SP: SI Convierte un carácter ASCII que se encuentra en el acumulador en un carácter Hexadecimal que lo guarda en el mismo acumulador. Si el dato en el acumulador no es un ASCII convertible en hexadecimal ( distinto a 1,2,3, ...,A,B,C,D,E,F) ; el acumulador que cargado con FFH. Ej ASCII '5' A=35H -> A=05H

ASCII 'a' A=61H -> A=0AH (minúscula) ASCII 'F' A=47H -> A=0FH (mayúscula)

ASCII '#' A=23H -> A=FFH

Rutina TRASM (Transmisión) - Dirección: 094EH Dato de Entrada: A Dato de Salida: Monitor PC – RS232 Reg. Modificados: A Requiere SP: SI La siguiente rutina envía por la puerta serie el contenido del acumulador a una velocidad de 4800 bits x segundo (bps). A este dato enviado, el HyperTerminal lo muestra directamente en pantalla como carácter ASCII. Ej A=30H -> PC '0'

A=26H -> PC '&' A=47H -> PC 'G' .

Rutina SEND (Enviar) - Dirección: 097BH Dato de Entrada: A Dato de Salida: Monitor PC – RS232 Reg. Modificados: A Requiere SP: SI Valiéndose de la rutina TRASM esta rutina envía dos caracteres ASCII que representan el contenido del acumulador. Estos datos son visualizados en la pantalla de la PC de la siguiente manera: Ej A=55H -> PC '55'

A=1EH -> PC '1E' A=0AH -> PC '0A'

Rutina HEXASCI (de Hexadecimal a ASCII) - Dirección: 0996H Dato de Entrada: A Dato de Salida: A Reg. Modificados: A,C,D,E Requiere SP: NO Toma la parte baja del dato que se encuentra en A y lo convierte en un carácter ASCII. El resultado es colocado nuevamente en el acumulador. Ej A=03H -> A=33H '3' A=55H -> A=35H '5'

Ing. Martín Guzzo, Bioing. Raúl Correa -19- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

A=0EH -> A=45H 'E' A=4AH -> A=41H 'A'

Rutina TECLA1 - Dirección: 09B3H Dato de Entrada: Teclado Placa (hexadecimal) Dato de Salida: A Reg. Modificados: A Requiere SP: SI Esta rutina espera que una tecla sea presionada y soltada par cargar el valor de la misma en el acumulador Ej Tecla '3' -> A=03H Tecla 'E' -> A=0EH

Rutina TECLA2 - Dirección: 09C8H Dato de Entrada: Teclado Placa (hexadecimal) Dato de Salida: A Reg. Modificados: A Requiere SP: SI A diferencia de Tecla1, esta rutina en el momento de ser invocada chequea si hay alguna tecla presionada. Si hay, carga su valor en el acumulador, sino el acumulador se carga con el valor de la última tecla presionada.

Rutina TEXT (Texto) – Dirección: 09DBH Dato de Entrada: Contenido de (HL) M Dato de Salida: A Reg. Modificados: A, H, L Requiere SP: SI Tomando la dirección que apunta M como inicio, esta rutina envía uno a uno los lugares de memoria a la puerta serie asta encontrar un fin de cadena representado por el '20H' (Espacio en blanco de ASCII). Esto genera en el HyperTerminal una cadena de texto si todos los caracteres son ASCII conocidos. HL se incrementa carácter a carácter y cuando termina la rutina que da apuntando a la próxima dirección luego del '20H', esto sirve para volver a ingresar a la rutina y visualizar la siguiente cadena de texto. Rutinas ENTER, DOSP (Dos puntos), BARRR (Barra), Dirección Enter: 09EAH, Dirección Dosp: 09F5H, Dirección Barrr: 0A03H Dato de Entrada: - Dato de Salida: Monitor PC – RS232 Reg. Modificados: A Requiere SP: SI Estas subrutinas se valen de la subrutina de transmisión para poder enviar a la pantalla de la PC los caracteres del Enter, los dos puntos, y la barra invertida. Estas tres rutinas están muy ligadas ya al solicitar la rutina DOSP se genera un ‘:’ seguido de un Enter y una ‘\’ .

Rutina PROM – Dirección: 0A11H Dato de Entrada: - Dato de Salida: Monitor PC – RS232 Reg. Modificados: A Requiere SP: SI

Ing. Martín Guzzo, Bioing. Raúl Correa -20- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

Esta es una pequeña subrutina que una vez invocada muestra el prompt en la pantalla de la PC y luego genera un Enter.

Rutina BIN2BCD – Dirección: 0A27H Todavía en desarrollo

Rutina CERUNO (Cero o Uno) - Dirección: 0A63H Dato de Entrada: A Dato de Salida: A Reg. Modificados: A Requiere SP: NO Esta rutina coloca en el acumulador un uno, si este al ingresar a la rutina poseía un valor distinto de cero.

Rutina ERRA (Error) - Dirección: 0A6DH Dato de Entrada: - Dato de Salida: Monitor PC – RS232 Reg. Modificados: A Requiere SP: SI Esta rutina presenta en pantalla el mensaje ‘Error’ y un Enter, cuando es invocada.

Rutina TUPER - Dirección: 0A77H Dato de Entrada: A Dato de Salida: A Reg. Modificados: A Requiere SP: SI Esta rutina traduce de minúscula a mayúscula si en el acumulador se encuentra un carácter ASCII correspondiente a una letra. El resultado es guardado en el mismo acumulador.

;**************************************************** ; Programa de prueba para Kit del up 8085 ;****************************************************** ;de las funciones del IO-8085Half dir_display_L equ 80h dir_display_H equ 81h dir_teclado equ 82h dir_llaves equ 84h dir_leds equ 86h bit_rebote equ 10h ;******************************************************** ; Programa Principal ;******************************************************** defseg prueba, start=1000h seg prueba org 1000h lxi sp,17e0h ;inicializo el sp inicio: call tecla1_io ; lectura del teclado

Ing. Martín Guzzo, Bioing. Raúl Correa -21- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

; hasta que se oprime una tecla mov e, a out dir_display_L ; muestra lo leído en el teclado en la ; parte baja de los displays call tecla1_io ; lectura del teclado ; hasta que se oprime una tecla mov d, a out dir_display_H ; muestra lo leído en el teclado en la ; parte alta de los displays in dir_llaves ; lee el estado de las llaves out dir_leds ; muestra lo leído en las llaves en los leds mov d, a jmp inicio ; fin del programa principal

;************************************************ ; RUTINA DE TECLA1_IO ;************************************************ Tecla1_io: push b Tec_ocupado: in dir_teclado ; leo el byte del teclado ani bit_rebote ; enmascaro bit rebote jnz Tec_ocupado ; espero a que se desocupe el teclado Leer_teclado: in dir_teclado mov b, a ; guardo tecla ani bit_rebote ; enmascaro bit rebote jz Leer_teclado ; y espero a que mov a, b ; la suelten. ani 0fh ; Enmascaro pop b ; y guardo en A. ret ;************************************************ ; RUTINA DE TECLA2_IO ;************************************************ Tecla2_io: push b in dir_teclado mov b, a ; guardo tecla ani bit_rebote ; enmascaro bit rebote jnz Hay_tecla_push ; Si hay tecla presionada, salta mvi a, 1fh ; sino, AC <- 1fh y regreso jmp fin_tecla2_io Hay_tecla_push: mov a, b ; hay tecla presionada ani 0fh ; en Ac queda la tecla presionada fin_tecla2_io: pop b ret

Ing. Martín Guzzo, Bioing. Raúl Correa -22- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

PPrrooggrraammaa ppaarraa eell mmaanneejjoo ddeell AADDCC yy DDAACC..

PPaarraa eell ccaannaall NN°° 11

oorrgg 11110000hh ;; ccoommiieennzzoo ddeell pprrooggrraammaa

SSiigguuee:: mmvvii aa,, 0000hh ;; ccaarrggoo eell aaccuummuullaaddoorr ccoonn eell ccaannaall qquuee vvooyy aa uuttiilliizzaarr

oouutt 8888hh ;; mmaannddoo eell ccaannaall ppoorr eell bbuuss ppaarraa qquuee sseeaa ccaappttuurraaddoo ppoorr eell AADDCC ccoonn AALLEE

;; yy ddooyy llaa oorrddeenn ddee SSTTAARRTT ((ccoommeennzzaarr llaa ccoonnvveerrssiióónn))

LLeeeerr:: iinn 8822hh ;; lleeoo EEOOCC ((ffiinn ddee ccoonnvveerrssiióónn))

oorraa aa

jjpp LLeeeerr ;; ssii eell AADDCC nnoo mmaannddoo EEOOCC ssaallttaa aa lleeeerr yy ssee qquueeddaa eenn eessttee llaazzoo hhaassttaa qquuee

;; ffiinnaalliiccee llaa ccoonnvveerrssiióónn

iinn 8888hh ;; hhaabbiilliittoo OOEE ddeell AADDCC yy lleeoo eell ddaattoo ccoonnvveerrttiiddoo,, eell ddaattoo eessttaa eenn eell AACC

oouutt 5500hh ;; ssaaccoo eell ddaattoo ppoorr eell DDAACC

jjmmpp SSiigguuee ;; ssee iinniicciiaa nnuueevvaammeennttee ttooddoo eell cciicclloo

PPaarraa eell ccaannaall NN°°22

oorrgg 11110000hh ;; ccoommiieennzzoo ddeell pprrooggrraammaa

SSiigguuee:: mmvvii aa,, 0011hh ;; ccaarrggoo eell aaccuummuullaaddoorr ccoonn eell ccaannaall qquuee vvooyy aa uuttiilliizzaarr

oouutt 8899hh ;; mmaannddoo eell ccaannaall ppoorr eell bbuuss ppaarraa qquuee sseeaa ccaappttuurraaddoo ppoorr eell AADDCC ccoonn AALLEE

;; yy ddooyy llaa oorrddeenn ddee SSTTAARRTT ((ccoommeennzzaarr llaa ccoonnvveerrssiióónn))

Bit_rebote

tecla1_io

in teclado

Push B

in teclado

B <- AC

Pop B

ret

Bit_rebote

AC <- B

Ani 0Fh

Tec_ocupado:

Leer_ocupado:

Bit_rebote

tecla2_io

AC <- B

Push B

in teclado

ani 0Fh

ret

B <- AC

pop B

AC <- 1Fh

Hay_tecla_push:

Fin_tecla2_io:

Ing. Martín Guzzo, Bioing. Raúl Correa -23- UNSJ - Microprocesadores I

Kit de D

esarrollo del Microprocesador 8085

LLeeeerr:: iinn 8822hh ;; lleeoo EEOOCC ((ffiinn ddee ccoonnvveerrssiióónn))

oorraa aa

jjpp LLeeeerr ;; ssii eell AADDCC nnoo mmaannddoo EEOOCC ssaallttaa aa lleeeerr yy ssee qquueeddaa eenn eessttee llaazzoo hhaassttaa qquuee

;;ffiinnaalliiccee llaa ccoonnvveerrssiióónn

iinn 8899hh ;; hhaabbiilliittoo OOEE ddeell AADDCC yy lleeoo eell ddaattoo ccoonnvveerrttiiddoo,, eell ddaattoo eessttaa eenn eell AACC

oouutt 5500hh ;; ssaaccoo eell ddaattoo ppoorr eell DDAACC

jjmmpp SSiigguuee ;; ssee iinniicciiaa nnuueevvaammeennttee ttooddoo eell cciicclloo

Sistema de Desarrollo

K8085

Computadora Editor

Programa a prueba

Ensambador Compilador

Programa Monitor

Procomm Cable Serie RS232

UART 4800bps

.ASM

.HEX

ROM

RAM

Instrumentos de Medición y Generación

I/O

Comandos: Cargar de PC Ver registros Ver memoria Paso a paso Ejecutar … Subrutinas: Tecla 1y2 ASCIIHEX Send …

Comando: :\AZ archivo

8888

0.1288

Cátedra Microprocesadores I Electrónica Digital III