Monografias.com > Computación > Hardware
Descargar Imprimir Comentar Ver trabajos relacionados

Microprocesador 8085



    1. Componentes
    2. Arquitectura
    3. Set de
      Instrucciones
    4. Diseño básico
      del sistema para el microprocesador 8085

    El siguiente microprocesador
    fue creado por la empresa Intel
    en 1977. La alimentación es única: requiere
    sólo +5V. Esto se debe a la nueva tecnología utilizada
    para la fabricación llamada HMOS (High performance
    N-channel MOS) que además permite una mayor integración, llegando a la VLSI (Very Large
    Scale of Integration o muy alta escala de
    integración) con más de diez mil transistores (el
    8085 no es VLSI, pero sí el 8088, como se verá más
    adelante).

    Tiene incorporado el generador de pulsos de reloj con lo
    que sólo hace falta un cristal de cuarzo y un par de
    capacitores
    externos (para el 8080
    se necesitaba el circuito integrado auxiliar que lleva el
    código
    8224).

    Además está mejorado en lo que se refiere
    a las interrupciones. Incluye las 74
    instrucciones del 8080 y posee dos adicionales
    (RIM y
    SIM) referidas a este sistema de
    interrupciones y a la entrada y salida serie.

    El bus de datos está
    multiplexado con los ocho bits menos significativos del bus de
    direcciones (utiliza los mismos pines para ambos buses), con lo
    que permite tener más pines libres para el bus de control del
    microprocesador (el 8080
    necesitaba un integrado especial, el 8228, para generar el
    bus de control). Intel produjo ROMs, RAMs y chips de soporte que
    tienen también el bus multiplexado de la misma manera que
    el microprocesador. Todos estos integrados forman la familia
    MCS-85.

    Debido a la gran densidad de
    integración comparado con el 8080, se utilizó mucho este
    microprocesador en aplicaciones industriales. Sin embargo, para
    aplicaciones de computación de uso general, se
    extendió más el uso del microprocesador Z-80 como
    se indicó en el apartado referente al 8080.

    Componentes

    Interrupciones

    El microprocesador
    8085 posee un complejo y completo sistema de interrupciones.
    Esta uP posee cinco terminales destinados al tratamiento de
    interrupciones. Recordemos que una interrupción es un
    artificio hardware/software por el cual es
    posible detener el programa en curso
    para que, cuando se produzca un evento predeterminado,
    después de concluir la instrucción que está
    ejecutando, efectúe un salto a una determinada subrutina
    en donde se efectuará el tratamiento de la
    interrupción; una vez acabado éste, el uP
    continúa con la instrucción siguiente del programa
    principal. Así pues, el 8085 dispone de tres formas
    diferentes de tratar las interrupciones que le llegan por los
    citados cinco terminales. Los nombres de estos cinco terminales
    son:

    INTR (Interrupt Request): Por esta entrada
    se introduce una interrupción que es aceptada o no
    según haya sido previamente indicado por las instrucciones
    EI (Permitir interrupciones) o DI (No permitir
    interrupciones). Cuando una interrupción es permitida y
    ésta se ha producido, la CPU busca una
    instrucción RST (de un sólo byte), que es
    presentada por el bus de datos por el periférico que
    interrumpe. Este byte tiene el formato binario 11 XXX 111. La
    subrutina se ubicará en la dirección 00 XXX 000.

    RST 5.5, RST 6.5 y RST 7.5: Los
    terminales de RST 5.5 y RST 6.5 detectan la
    interrupción sólo si la señal que se les
    aplica es un uno lógico o nivel alto de una cierta
    duración, lo mismo que la entrada anterior INTR; sin
    embargo, la entrada de interrupción correspondiente al
    terminal RST 7.5 se excita por flanco ascendente, es
    decir, por una transición de cero a uno. Esta
    transición se memoriza en un biestable en el interior del
    uP.

    Estas interrupciones se pueden habilitar o deshabilitar
    mediante las instrucciones EI y DI, como en el caso
    de INTR; pero además son enmascarables por software
    mediante la instrucción SIM (Set Interrupt Mask). Es posible leer
    tanto el estado de
    la máscara como las interrupciones que se han producido y
    aún no se atendieron mediante la instrucción
    RIM. TRAP: Es una
    interrupción no enmascarable que es activada cuando el
    terminal del mismo nombre se lleva a nivel lógico uno.
    Esta interrupción es la de más alta prioridad, por
    lo que puede ser usada para tratar los acontecimientos más
    relevantes, tales como errores, fallos de alimentación,
    etc.

    Control de entrada/salida serie

    Este microprocesador posee dos terminales denominados
    SID (Serial Input Data) y SOD (Serial Output Data).
    Estos terminales se pueden usar con propósitos generales.
    Por ejemplo el terminal SID se puede conectar a un
    interruptor y el SOD a un LED (a través de una
    compuerta inversora externa). Para leer el estado del
    terminal SID se ejecuta la instrucción
    RIM, con lo que se puede leer
    en el bit 7 del acumulador el estado de dicho
    terminal.

    Para enviar un dato por el terminal SOD se
    ejecuta la instrucción SIM, donde el bit 7 del acumulador debe
    tener el valor a poner
    en el terminal, y el bit 6 debe estar a uno.

    Terminales (pinout) del 8085

    Este microprocesador estaba encapsulado en el formato
    DIP (Dual Inline Package) de 40 patas (veinte de
    cada lado). La distancia entre las patas es de 0,1 pulgadas (2,54
    milímetros), mientras que la distancia entre patas
    enfrentadas es de 0,6 pulgadas (15,32
    milímetros).

    Nótese en el gráfico el semicírculo
    que identifica la posición de la pata 1. Esto sirve para
    no insertar el chip al revés en el circuito
    impreso.

    Las funciones de las
    40 patas con las que se conecta el 8085 con el exterior son las
    siguientes:

    Arquitectura

    Set de
    Instrucciones

    Conjunto de Instrucciones

    Explicación de cada
    instrucción

    Cuando me refiero a los registros "r" (ya
    sea r1,r2 o simplemente r) estoy hablando de cualquier registro propio
    del 8085, A(Acumulador), o los registros B,C,D,E,H,L de 8 bits
    respectivamente. Estos registros se pueden agrupar por parejas
    BC,DE,HL (rp) y así formar registros de 16 bits para
    direccionar una posición de memoria
    directamente(16 BITS), siendo el par HL el mas importante por
    tener instrucciones que trabajan directamente con el.

    Todas las anteriores:

    BYTE= VALOR ENTRE 0 Y FF (0 Y 255 EN DECIMAL)

    DOBLE BYTE= DOS BYTES PARA FORMAR 16 BITS

    DIRECCION = 16 BITS o 2 BYTES

    **Instrucciones Aritmético
    lógicas:

    instrucción código
    explicación

    ADD r 10000RRR Suma al acumulador el registro r y el
    Resultado queda en el acumulador.

    ADD M 10000110 Suma al acumulador el contenido de la
    posición apuntada por HL y resultado en

    acumulador.

    ADI 11000110 Suma al acumulador el 2º byte de la
    Instrucción y resultado en acumulador.

    ADC r 10001RRR Suma al acumulador el registro r y el
    Carry, resultado en acumulador.

    ADC M 10001110 Suma a acumulador el contenido de la
    Posición apuntada por HL y el carry,

    result. en acumulador.

    ACI 11001110 Suma al acumulador el 2º byte de la
    Instrucción y el carry y resultado en

    acumulador.

    SUB r 10010RRR Resta al acumulador el contenido del
    Registro r y lo deja en el acumulador.

    SUB M 10010110 Resta al acumulador el contenido de la
    Posición que apunta HL y resultado al

    acumulador.

    SUI 11010110 Resta al acumulador el 2º byte de
    la

    instrucción.

    SBB r 10011RRR Resta al acumulador el registro r + el
    carry.

    SBB M 10011110 Resta al acumulador el contenido de la
    Posición que apunta HL.

    SBI 11011110 Resta al acumulador el 2º byte + el
    carry.

    INR r 00RRR100 Incrementa en 1 el registro
    r.(Z;S;P;AC)

    INR M 00110100 Incrementa en 1 el contenido de la
    Posición que apunta HL (Z;S;P;AC)

    DCR r 00RRR101 Decrementa en 1 el registro r
    (Z;S;P;AC)

    DCR M 00110101 Decrementa en 1 el contenido de la
    Posición que apunta HL (Z;S;P;AC)

    INX rp 00RR0011 Incrementa en 1 el par rp de
    registros.BC,DE,HL

    DCX rp 00RR1011 Decrementa en 1 el par rp de
    registros.BC,DE,HL

    DAD rp 00RR1001 Suma a HL el par de registros rp (CY a
    veces).

    DAA 00100111 Los 8 bits del acumulador se ajusta a
    BCD=decimal.(flags)

    ENTRE PARENTESIS() FLAGS AFECTADOS POR LA
    INSTRUCCION.

    Todas las anteriores:

    Instrucción código
    (Hex) instrucción código (Hex)

    ADD A 87 ADC A 8F

    ADD B 80 ADC B 88

    ADD C 81 ADC C 89

    ADD D 82 ADC D 8A

    ADD E 83 ADC E 8B

    ADD H 84 ADC H 8C

    ADD L 85 ADC L 8D

    ADD M 86 ADC M 8E

    SUB A 97 SBB A 9F

    SUB B 90 SBB B 98

    SUB C 91 SBB C 99

    SUB D 92 SBB D 9A

    SUB E 93 SBB E 9B

    SUB H 94 SBB H 9C

    SUB L 95 SBB L 9D

    SUB M 96 SBB M 9E

    INR A 3C DCR A 3D

    INR B 04 DCR B 05

    INR C 0C DCR C 0D

    INR D 14 DCR C 15

    INR E 1C DCR D 1D

    INR H 24 DCR H 25

    INR L 2C DCR L 2D

    INR M 34 DCR M 35

    INX B 03 DCX B 0B

    INX D 13 DCX D 1B

    INX H 23 DCX H 2B

    INX SP 33 DCX SP 3B(SP=STACK POINTER)

    ADI BYTE C6 DAD B D9

    ACI BYTE CE DAD D 19

    SUI BYTE D6 DAD H 29

    SBI BYTE DE DAD SP 39

    DAA 27

    **Intrucciones lógicas:

    Instrucción código Explicación

    ANA r 10100RRR AND entre el acumulador y el registro
    r (flags, CY=0,AC=1)

    ANA M 10100110 AND entre el acumulador y el
    contenido

    De la posición apuntada por HL (flags
    Ídem)

    ANI 11100110 AND entre el acumulador y el 2º byte
    de La instrucción (flags ídem)

    XRA r 10101RRR OR Exclusiva entre el acumulador y el
    registro r (flags,CY y AC=0)

    XRA M 10110110 OR Exclusiva entre el acumulador y el
    contenido de la posición de HL(flags

    ídem)

    XRI 11101110 OR Exclusiva entre el acumulador y el
    2º Byte de la instrucción(flags
    ídem)

    ORA r 10110RRR OR entre el acumulador y el registro
    r(flags ídem)

    ORA M 10110110 OR entre el acumulador y el contenido de
    la posición apuntada por HL(flags
    ídem)

    ORI 11110110 OR entre acumulador y 2º byte de la
    instrucción(ídem)

    CMP r 10111RRR Compara el acumulador con el registro r
    no laterando el contenido del

    acumulador(si A=1 Z=1,si A<r CY=1,flags)

    CMP M 10111110 Compara el acumulador con el contenido
    de la posición apuntada por HL (flags

    ídem)

    CPI 11111110 Compara el acumulador con el 2º byte
    de la instruc.(ídem)

    RLC 00000111 Rotación del contenido del
    acumulador un lugar a la izquierda(flags, CY y bit
    0=

    valor bit 7 del acumulador)

    RRC 00001111 Rotación del contenido del
    acumulador un lugar a la derecha(flags, CY y bit 7=

    bit 0 del acumulador)

    RAL 00010111 Rotación del acumulador un lugar a
    la izquierda intercalando el CY (CY)

    RAR 00011111 iden anterior pero a la derecha
    (CY)

    CMA 00101111 Complementa el contenido edl acumulador
    bit a bit

    CMC 00111111 Complementa el contenido del carry
    CY(CY)

    STC 00110111 Fija CY a 1 (CY)

    todas ellas:

    instrucción código instrucción código

    ANA A A7 XRA A AF

    ANA B A0 XRA B A8

    ANA C A1 XRA C A9

    ANA D A2 XRA D AA

    ANA E A3 XRA E AB

    ANA H A4 XRA H AC

    ANA L A5 XRA L AD

    ANA M A6 XRA M AE

    ORA A B7 CMP A BF

    ORA B B0 CMP B B8

    ORA C B1 CMP C B9

    ORA D B2 CMP D BA

    ORA E B3 CMP E BB

    ORA H B4 CMP H BC

    ORA L B5 CMP L BD

    ORA M B6 CMP M BE

    CMA 2F RLC 07

    STC 37 RRC 0F

    CMC 3F RAL 17

    RAR 1F

    ANI BYTE E6

    XRI BYTE EE

    ORI BYTE F6

    CPI BYTE FE

    **Instrucciones de bifurcación:

    instrucción código Explicación

    JMP 11000011 Salto a la posición indicada por el
    2º y 3º byte de la instrucción, 2º
    byte=parte

    baja,3º=alta

    instrucción Flags código Explicación

    JZ Z 11FF1010 Salto a la posición indicada en
    el 2 y 3º byte de

    JC CY la instrucción si el flag (FF) tiene
    valor 1

    JPE P

    JM S

    JNZ Z 11FF0010 ídem si el valor del Flag es
    cero

    JNC CY

    JPO P

    JP S

    PCHL 11101001 Salto a la posición direccionada
    por HL.

    todas ellas:

    instrucción código instrucción código

    JMP dir. C3 JPO dir. E2

    JNZ dir. C2 JPE dir. EA

    jz dir. CA JP dir. F2

    JNC dir. D2 JM dir. FA

    JC dir. DA PCHL E9

    **Instrucciones de salto y retorno a
    subrutinas:

    instrucción
    flags código Explicación

    CALL 11001101 Salto a la posición direccionada
    por el 2º y 3º byte de la

    instrucción.Guarda en el STACK el contenido
    de P.C.(Contador de programa).

    CZ Z 11FF1100 Salto a la posición direccionada
    por el 2º y 3º

    CC CY byte de la instrucción si el flag
    indicado es uno.

    CPE P Guarda el P.C. en el stack.

    CM S

    CNZ Z 11FF1100 ídem anterior pero si el Flag es
    cero.

    CNC CY Guarda el P.C. en el STACK.

    CPO P

    CP S

    RET 11001001 Retorno a la ultima dirección
    Almacenada en el STACK.

    RZ Z 11FF1000 Retorno a la ultima dirección
    almacenada

    RC CY en el STACK solo si el Flag indicado vale
    1.

    RPE P

    RM S

    RNZ Z 11FF0000 ídem caso anterior pero si el
    Flag vale 0.

    RNC CY

    RPO P

    RP S

    todas ellas:

    instrucción código instrucción código

    CALL dir. CD RET C9

    CNZ dir. C4 RNZ C0

    CZ dir. CC RZ C8

    CNC dir. D4 RNC D0

    CC dir. DC RC D8

    CPO dir. E4 RPO E0

    CPE dir. EC RPE E8

    CP dir. F4 RP F0

    CM dir. FC RM F8

    **Otras instrucciones:

    instrucción código Explicación

    PUSH rp 11RR0101 Guarda el par de registros rp en el
    Stack.

    PUSH PSW 11110101 Guarda el contenido del acumulador y
    el registro de Flags en el Stack.

    POP rp 11RR0001 Carga el el par de registros rp el
    contenido de las dos ultimas posiciones

    del Stack

    POP PSW 11110001 Carga el registro de Flags y el
    Acumulador con las dos ultimas

    posiciones del Stack.

    XTHL 11100011 Intercambio del contenido de las
    Posiciones direccionadas por el Stack

    por el contenido de los registros H y L.

    SPHL 11111001 Traslada el contenido del par HL al
    Puntero del Stack. Debe ejecutarse al

    iniciar el sistema para ubicar el Stack en la zona
    elegida de la memo ria.

    IN port 11011011 Carga el acumulador con el contenido
    del canal I/O direccionado por el 2º byte de

    la instrucción.

    OUT port 11010011 Carga el canal I/O direccionado por el
    2º byte de la instrucción con el

    acumulador.

    EI 11111011 Habilita las interrupciones (no afecta a
    la interrupcion TRAP)

    DI 11110011 Deshabilita las interrupciones (
    no afecta a TRAP)

    HLT 01110110 Detencion y entrada de la cpu hasta que
    se realice un Reset, una interrupcion

    valida o un HOLD.

    NOP 00000000 No opera, solo sirve para perder tiempo.

    SIM 00110000 Fija el registro de interrupciones y la
    linea SOD con el valor del acumulador.

    Bit 7 del acumulador= sale por linea SOD.

    Bit 6 " " = a 1 habilita la linea SOD.

    Bit 5 no se usa.

    Bit 4 " " = a 1 borra la bascula RST 7,5

    Bit 3 = a 1 permite modificar este
    registro.

    Bit 2 = a 1 prohibe la interrupcion 7,5

    Bit 1 = a 1 prohibe la " 6,5

    Bit 0 = a 1 prohibe la " 5,5

    RIM 00100000 Lee el estado de la línea SID y el
    estado de las interrupciones cargándolo

    en el acumulador:

    Bit 7 del acumulador con: Lo que tenga la
    línea SID,

    Bit 6 " : a 1 indica que la interrupción 7,5
    esta solicitada por ejecutar.

    Bit 5 " : iden anterior pero con la 6,5

    Bit 4 " : ídem anterior pero con la
    5,5

    Bit 3 " : a 1 indica que las interrupciones INTR
    han sido habilitadas. cion EI. Bit 2 " : Estado de
    la interrupción 7,5

    Bit 1 " : Estado de la interrupción
    6,5

    Bit 0 " : Estado de la interrupción
    5,5

    RST 11AAA111 Guarda el P.C. en el Stack y lo
    carga

    con la dir:00000000AAA000

    Cuando se produce la interrupción INTR,
    después de aceptarla con INTA hay que

    introducir por el bus de datos el
    código

    AAA que será axial:

    AAA RST dirección de salto(en HEX.)

    000 0 0000

    001 1 0008

    010 2 0010

    011 3 0018

    100 4 0020

    101 5 0028

    110 6 0030

    111 7 0038

    todas las que quedaban:

    instrucción código instrucción código

    PUSH B C5 POP B C1

    PUSH D D5 POP D D1

    PUSH H E5 POP H E1

    PUSH PSW F5 POP PSW F1

    XTHL E3 SPHL F9

    OUT byte D3 IN byte DB

    DI F3 EI FB

    NOP D0 HLT 78

    RIM 20 SIM 30

    RST 0 C7 RST 4 E7

    RST 1 CF RST 5 EF

    RST 2 D7 RST 6 F7

    RST 3 DF RST 7 FF

    ***Y POR ULTIMO LOS FLAGS:

    Los flag (bandera en español)
    es un registro interno de la cpu que indica el estado de una
    operación después de haberla realizado (más
    o menos), estos son controlados por la ALU(una cosa interna que
    hace todas las operaciones
    aritméticas y lógicas). Pero veamos que son cada
    uno:

    Flags Explicación

    S Cuando un resultado ha sido negativo se pone a
    1

    Z Cuando una operación ha sido cero este se pone
    a 1

    P Indica la paridad de una operación, si es par
    P=1

    CY Se pone a 1 cuando se produce un acarreo en una
    operación de 8 bits

    **P.D. :Siempre el primer byte que se carga (por ejemplo
    en la instrucción JMP dir.) es el mas bajo y el segundo el
    mas alto, por lo tanto al lado de las instrucciones que llevan
    2º y 3º byte estos indicaran la dirección pero
    al revés.

    Diseño
    básico del sistema para el microprocesador
    8085

    La "tarjeta" que posee el sistema básico para
    hacer funcionar al microprocesador 8085 se muestra en la
    figura 1.
    En ella podemos ver cómo la conexión de la memoria
    EEPROM se realiza del mismo modo que se ha indicado en la
    edición
    anterior.
    El banco de memorias
    RAM estará
    constituido en este caso por tres unidades tipo 6116, con
    idéntico modo de conexión en todas sus
    líneas a excepción de las líneas de selección
    de chip, que en este caso serán las CS0, CS1 y CS2
    procedentes del decodificador 74LS138 (vea Saber 195).
    En lo que se refiere a la conexión del 8212, vemos que
    nada varía respecto a lo que el lector conoce,
    únicamente debemos mencionar la colocación de una
    resistencia de
    4k7 de "pull-up" a +5V en la señal ALE con el objeto de
    reafirmar los niveles de tensión en esta salida del
    microprocesador.
    Este mismo sistema se emplea en la parte alta del bus de
    direcciones en el que se sitúa un bloque de 8 resistencias
    de 10 k ohm cada una conectadas a +5V.
    El decodificador de direcciones 74LS138, sigue el mismo esquema
    de conexión explicado oportunamente. Ahora además
    se refuerzan las salidas del mismo colocando un bloque de 8
    resistencias de 4k7 a +5V. Puede verso como en este caso las
    salidas CS0, CS1 y CS2, tomadas de las patas 15, 14 y 13
    respectivamente se emplean para direccionar las tres pastillas de
    memorias RAM que hemos colocado en el sistema.
    Puede verse con claridad cómo el microprocesador se sirve
    de un cristal de cuarzo de 4MHz y un condensador de 18pF, que
    colocados entre las patas 1 y 2 generan la oscilación que
    produce la frecuencia de reloj a la que funcionará el
    sistema. Es decir, se genera la "frecuencia de trabajo".
    Destacamos además el circuito situado en la señal
    de entrada RESET IN del microprocesador (pata 36) formado por una
    resistencia de 1 k ohm en paralelo con un diodo y un condensador
    electrolítico de 1 microfarario. Este circuito es el que
    asegura un arranque correcto del sistema en el momento de
    conexión a red iniciándose el
    contador de programa en la dirección 0000H, después
    de que la patilla 36 haya alcanzado el nivel lógico 1
    (ALTO).
    Este circuito produce un retardo en el arranque que viene dado
    aproximadamente por la constante de tiempo RC

    En la parte izquierda de la figura 1 puede verse que las
    señales
    INTR, TRAP, RST 7.5, RST 6.5, RST 5.5 y HOLD son conectadas
    directamente a masa para conseguir un correcto funcionamiento del
    sistema mientras no vayamos a emplearlas.

    Estas conexiones deben realizarse individualmente para
    cada señal y mediante puentes fácilmente
    eliminables de modo que si en un momento dado, para una
    determinada aplicación deseamos emplear alguna de ellas,
    podamos hacerlo sin más que eliminar el puente a masa
    correspondiente y tratando dicha entrada del modo
    adecuado.

    Además deben colocarse distribuidos sobre la
    tarjeta condensadores
    de desacoplo. Lo más usual es situar uno por cada circuito
    integrado y deberán ir soldados mediante conexiones cortas
    y a ser posible directamente sobre las patillas de
    alimentación de los circuitos
    integrados.

    Este es un medio eficaz y sencillo para impedir la
    creación de señales parásitas de alta
    frecuencia que son derivadas a masa
    a través del condensador. Normalmente estos condensadores
    son de 100nF. Puede apreciarse también cómo la
    tarjeta dispones, para su conexión a otros circuitos, de
    cuatro conectores:
    CON1: Constituido por 16 líneas en las cuales
    podemos encontrar el bus de direcciones completo (A0, A1, A2,
    …, A15).
    CON2: Constituido por 8 líneas en las que podemos
    encontrar el bus de datos completo (D0, D1, …, D7).
    CON3: Constituido por un total de 24 líneas entre
    las que encontramos el bus de control, el bloque completo de
    señales de interrupción (que podremos utilizar
    desde el exterior eliminando previamente los puentes a masa) y
    las señales de selección de chip que se toman del
    decodificador 74LS138.

    CON4: Constituido por nueve líneas
    divididas en dos grupos que sirven
    para suministrar la alimentación a la tarjeta (+5V y
    MASA).

    Realizadas todas estas consideraciones, no queda
    más que analizar con detenimiento, las direcciones de
    memoria que ocupa cada uno de los componentes que integran esta
    tarjeta y las direcciones que quedan disponibles para futuras
    ampliaciones.

    Como puede deducirse de la figura 1 y apoyándonos
    en los valores
    que adquieren las entradas A0, A1, A2 y E3 del decodificador, se
    tendrá la siguiente distribución de direcciones:
    EPROM 27256: Desde 0000H hasta 7FFFH
    RAM 6116-1: Desde 8000H hasta 87FFH
    RAM 6116-2: Desde 9000H hasta 97FFH
    RAM 6116-3: Desde A000h hasta A7FFH

    Al mismo tiempo, los terminales del decodificador 74LS138 que
    quedan libres para añadir nuevos elementos al sistema,
    responderán a las siguientes direcciones:
    CS3 – B000H
    CS4 – C000H
    CS5 – D000H
    CS6 – E000H
    CS7 – F000H

    Ejemplo de Programas que
    realiza el microprocesador 8085

    1)

    ;**************************************************

    ;* Nombre : Simulador de aut¢mata programable
    *

    ;* Programador: Esteban Galeano *

    ;* Fecha: 13 octubre 1995 *

    ;* Ult. modif: 31 agosto 2000 *

    ;* Fichero: AUTOMATA.ASM *

    ;**************************************************

    ;***************************************************************

    ;* Se simular  el funcionamiento de un
    autómata programable, *

    ;* en cuyo interior hay un circuito MARCHA/PARO. Para
    ello, *

    ;* seguir  el siguiente funcionamiento:
    *

    ;* *

    ;* Marcha Paro ³ Salida *

    ;*
    ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ
    *

    ;* 0 0 ³ Salida *

    ;* 0 1 ³ 0 *

    ;* 1 0 ³ 1 *

    ;* 1 1 ³ 0 *

    ;* *

    ;* HACER *

    ;* programar(8255); *

    ;* MIENTRAS PuertoA[7]=1 HACER *

    ;* valor:=PuertoA[1..0]; *

    ;* SI *

    ;* valor=00b -> í *

    ;* valor=01b -> PuertoB[0]:=0 *

    ;* valor=10b -> PuertoB[0]:=1 *

    ;* valor=11b -> PuertoB[0]:=0 (prio PARO)
    *

    ;* FSI *

    ;* FMIENTRAS *

    ;* MIENTRAS (cierto) *

    ;***************************************************************

    ;****************************

    ;* Definición de ENTORNO *

    ;****************************

    .RADIX H ;Sistema de numeración ser 
    hexadecimal

    ;****************************

    ;* Definición de CONSTANTES *

    ;****************************

    cero: .EQU 0

    DirPila: .EQU 1200 ;Dirección desde donde
    comenzar  la PILA

    ByteControl: .EQU 90 ;8255 -> A in – B out – C
    out

    2)

    ;***********************************************

    ;* Nombre : Espera visualizable FFFF-0000 *

    ;* Programador: Esteban Galeano *

    ;* Fecha: 11 octubre 1995 *

    ;* Ult. modif: 31 agosto 2000 *

    ;* Fichero: CONTADOR.ASM *

    ;***********************************************

    ;***************************************************************

    ;* Se le dar  un valor num‚rico a los
    registros HL y cada 1ms *

    ;* se decrementar  su valor hasta llegar a cero,
    momento en el *

    ;* cual, se terminar  el programa y regresar 
    al S.O. *

    ;* *

    ;* HL:=selecci¢n *

    ;* HACER *

    ;* retardo(1ms); *

    ;* visualiza(HL); *

    ;* HL:=HL-1; *

    ;* MIENTRAS (HL<>0) *

    ;* visualiza(HL); *

    ;* restaurar; *

    ;***************************************************************

    ;****************************

    ;* Definición de ENTORNO *

    ;****************************

    .RADIX H ;Sistema de numeración ser 
    hexadecimal

    ;****************************

    ;* Definición de CONSTANTES *

    ;****************************

    cero: .EQU 0

    DirPila: .EQU 1200 ;Dirección desde donde
    comenzar  la PILA

    selección: .EQU 2000 ;Numero de veces a
    decrementar

    ;***************************

    ;* Inclusión de SUBRUTINAS *

    ;***************************

    .DATA ;Dirección inicial de las
    subrutinas

    .INCLUDE a:rutinas.asm ;Incluye la definición de
    direcciones de rutinas del S.O.

    ;***************************

    ;* Programa PRINCIPAL *

    ;***************************

    .CODE

    .ORG 1000 ;Dirección inicial del
    programa

    LXI SP,DirPila ;SP:=DirPila

    LXI H,seleccion ;HL:=seleccion

    sigue: PUSH H ;Salvar  los registros H y
    L

    CALL delay ;Retardo de 1ms

    CALL updad ;Visualiza HL en el campo de direcciones del
    ®Display¯

    POP H ;Recuperar  los registros H y L

    DCX H ;HL:=HL-1

    MOV A,H ;Si (H<>0) salta

    CPI cero

    JNZ sigue

    MOV A,L ;Si (L<>0) salta

    CPI cero

    JNZ sigue

    ;*******************************

    ;* Visualizar  el Ultimo valor *

    ;*******************************

    PUSH H ;Salvar  los registros H y L

    CALL updad ;Visualiza HL en el campo de direcciones del
    ®Display¯

    POP H ;Recuperar  los registros H y L

    RST 1

    .END

     

    Muebles de Oficina, C.A.
    "MOCA"

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter