Você está na página 1de 3

MC-LAB - LABORATÓRIO 08: O SISTEMA DE INTERRUPÇÕES

1. Objetivos

Mostrar como o microcomputador gera os sinais de controle e como estes são usados no sistema MC-LAB.

2. Equipamento necessário

? Unidade microcomputador MC-1


? Fonte de alimentação de +5 volts MB-2F
? Unidade de serviço PU-116 (Chaves e Indicadores Luminosos)
? Unidade Adaptadora de Barramentos MC-2/3
? Conjunto de cabos de interconexão (DL-2)
? Osciloscópio
3. Teoria

ANTES DE INICIAR A PARTE PRÁTICA, LEIA ATENTAMENTE A TEORIA EXPOSTA NA PRÁTICA 02


E 05 E NOS CAPÍTULOS 8 E 12 DO GAONKAR

4. Experimentos

PARA EXECUTAR OS PROGRAMAS, COMPLETE E CONFIRA TODOS OS CÓDIGOS


HEXADECIMAIS DAS INSTRUÇÕES

4.1. Uso da linha /INTR

O 8085A possui 5 entradas de interrupções: INTR, RST 5.5, RST 6.5, RST 7.5 e TRAP.
A linha /INTR (Interrupt Request ou Pedido de Interrupção) tem a menor prioridade e no microcomputador
MC -1 está ativa no estado lógico “0”. A linha /INTA (Interrupt Acknowledge ou reconhecimento da
interrupção) é usada para ler a próxima instrução depois do pedido /INTR ter sido aceito pelo
microcomputador.
Este experimento mostrará como usar a linha /INTR e como o microcomputador toma conhecimento do
pedido de interrupção.
Conecte o microcomputador à unidade Bus Adapter e sua porta de entrada de dados (DATA IN) a 8
chaves. Estas chaves permitem estabelecer um código de instrução que poderá ser lido pelo sinal /INTA.
Leve as chaves ao estado:
CF = 1100 1111
onde CF é o código da instrução RST 1.
Conecte a linha /INTR à saída Q de um dos push-buttons (PB1 ou PB2).
Execute o seguinte programa, que aguarda um pulso na linha /INTR e quando o recebe, devolve o controle
ao monitor. Aplique um pulso na entrada /INTR e observe o resultado obtido.
END. OPCODE OPERANDOS LABEL ASSEMBLY COMENTÁRIOS
LXI SP,20A0 defina o stack pointer
LOOP: EI habilita as interrupções
JMP LOOP espera o sinal /INTR
Tabela 1 - Uso da linha /INTR
Altere o estado das chaves para:
EF = 1110 1111
onde EF é o código da interrupção de software RST 5. Como já sabemos, ao executarmos a instrução RST
5, o processamento é desviado para a posição 0028 em ROM (5 x 8 = 40D = 28H). Nesta posição existe
um JMP para a posição 20C2 em RAM (veja o roteiro do laboratório 5). Portanto, é possível armazenarmos
uma instrução JMP a partir de 20C2 para a Rotina de Serviço da RST 5 (RSI5).

56
A rotina de serviço da RST 5 pode, por exemplo, acender os Leds da porta A do 8155, tal como mostrado
na Tabela 2. Execute este programa e verifique o resultado obtido.
END. OPCODE OPERANDOS LABEL ASSEMBLY COMENTÁRIOS
LXI SP,20A0 defina o stack pointer
LOOP: EI habilita as interrupções
JMP LOOP espera o sinal /INTR

RSI5: MVI A,01 Define a Porta A como saída


OUT 20 Envia para o registrador de comando
MVI A,FF Define os dados da Porta A
OUT 21 Envia para a Porta A; acende os Leds
RET Termina o programa

20C2 JMP RSI5 Vai para a rotina de serviço da RST5


Tabela 2 - Uso das interrupções de software
Analise o esquemático da unidade adaptadora de barramentos e responda por que o microprocessador
consegue ler o byte relativo à instrução.
4.2. Uso das interrupções RST

As entradas RST 6.5 e RST 7.5 são interrupções de hardware que ocasionam um RESTART interno para
posições de memória preestabelecidas. O sinal RST 7.5 está conectado à tecla RST 7.5 do teclado do MC-
1. O sinal RST 6.5 se encontra disponível num conector da unidade Bus Adapter. As duas interrupções
possuem maior prioridade que o sinal INTR.
O programa mostrado na Tabela 3 espera uma interrupção RST e envia ao display de dados uma
mensagem. Se o sinal recebido for a RST 6.5, a mensagem será “65”, se, por outro lado, for a RST 7.5, a
mensagem será “75”. Execute o programa e envie alternadamente sinais RST 6.5 e RST 7.5 ao
microprocessador.

END. OPCODE OPERANDOS LABEL ASSEMBLY COMENTÁRIOS


INÍCIO: LXI SP,20A0 Defina o stack pointer
MVI A,08 Prepara a máscara de interrupções
SIM Ajusta a máscara de interrupções
LOOP: EI Habilita as interrupções
JMP LOOP Repete

RSI65: MVI A,65 Armazena 65 em A


CALL UPDDT Mostra “65”no display
RET Volta ao endereço “REPETE”

RSI75: MVI A,75 Armazena 75 em A.


CALL UPDDT Mostra “75”no display
RET Volta ao endereço “REPETE”

20C8 JMP RSI65 Vai p/ a rotina de serviço da RST65


20CE JMP RSI75 Vai p/ a rotina de serviço da RST75
Tabela 3 - Uso das interrupções RST

4.3. Um contador decimal

O programa dado na Tabela 4 mostra um contador no display de dados. Este contador será interrompido
pressionando-se a tecla RST 7.5 e retornará a contagem quando qualquer outra tecla (exceto RESET IN)
for pressionada. A letra “E”no display de endereços significa que o programa está sendo executado.
END. OPCODE OPERANDOS LABEL ASSEMBLY COMENTÁRIOS
LXI SP,20A0 define o stack pointer
MVI A,08 retira as máscaras das interrupções
SIM
AGAIN: EI habilita as interrupções
57
MOV A,B
ADI 01 incrementa o contador
DAA ajusta o contador ao modo decimal
MOV B,A
PUSH B
CALL mostra a contagem no display de
UPDDT dados
LXI D,1800
CALL espera um certo tempo e incrementa o
DELAY contador
POP B
JMP AGAIN começa novamente

20CE RSI75: EI endereço de acesso ao programa que


serve a interrupção RST 7.5
20CF HLT espera a interrupção
20D0 RET continua a contar
Tabela 4 - Um contador decimal
Execute o programa e tente parar o contador no valor 00 usando a tecla RST 7.5. A velocidade do contador
poderá ser alterada variando-se o conteúdo do par de registradores DE.
O contador pode ser modificado em contador de segundos incluindo-se algumas instruções entre DAA e
MOV B, A, como é mostrado na Tabela 5.
Deverão ser incluídos atrasos adicionais (NOP) para se obter um contador de segundos mais exato.
END. OPCODE OPERANDOS LABEL ASSEMBLY COMENTÁRIOS
LXI SP,20A0 define o stack pointer
MVI A,08 retira as máscaras das interrupções
SIM
ZERA: XRA A zera acumulador
AGAIN: EI
PUSH PSW
CALL UPDDT
LXI D,FFFF
CALL DELAY
LXI D,80FF
CALL DELAY
POP PSW
ADI 01 incrementa contador
DAA
CPI 60 verifica se a contagem é igual a 60
JNZ AGAIN começa novamente
JMP ZERA

20CE RSI75: EI endereço de acesso ao programa


que serve a interrupção RST 7.5
20CF HLT espera a interrupção
20D0 RET continua a contar
Tabela 5 - Um contador de segundos

5. Tarefa

Modifique o programa da Tabela 5 para contar, além dos segundos, os minutos e as horas, de tal modo que
seja possível observar o resultado desta contagem no displays de endereços e de dados.

6. Para pensar

Suponha que dois periféricos desejam usar a RST6.5. Como isto é possível?

58

Você também pode gostar