Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Interrupções e subrotinas do MC-1, Notas de estudo de Engenharia Elétrica

interrupções e subrotinas do 8085

Tipologia: Notas de estudo

2012

Compartilhado em 28/06/2012

guilherme-saggioratto-2
guilherme-saggioratto-2 🇧🇷

5

(2)

8 documentos

1 / 18

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Universidade Estadual Paulista “Júlio de Mesquita Filho”
FEIS - Campus de Ilha-Solteira
ELE1078 – SP2 – Microprocessadores I
Relatório do 5º Experimento :
Interrupções e Subrotinas do MC-1
Docente : Prof. Dr. Alexandre César Rodrigues da Silva
Discente : Guilherme Saggioratto R.A. : 201014301
Ilha Solteira, 23 de junho de 2012
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Pré-visualização parcial do texto

Baixe Interrupções e subrotinas do MC-1 e outras Notas de estudo em PDF para Engenharia Elétrica, somente na Docsity!

Universidade Estadual Paulista “Júlio de Mesquita Filho”

FEIS - Campus de Ilha-Solteira

ELE1078 – SP2 – Microprocessadores I

Relatório do 5º Experimento :

Interrupções e Subrotinas do MC-

Docente : Prof. Dr. Alexandre César Rodrigues da Silva

Discente : Guilherme Saggioratto R.A. : 201014301

Ilha Solteira, 23 de junho de 2012

Sumário

  • 1 – Objetivo pg
  • 2 – Introdução pg
  • 3 – Programas pg
  • 4 – Fluxogramas pg
  • 5 – Conclusão pg
    1. Referências Bibliográficas pg

RST 6.5 → Endereço 0034h RST 7.5 → Endereço 003Ch Obs.: No MC-1 usado no laboratório, o atendimento à interrupção RST 7.5 deve ser feito no endereço 20CEh No caso da interrupção INTR, existem códigos específicos que podem e devem ser usados. Estes códigos correspondem a CALLs com endereços predefinidos. Esses códigos são: Instrução Endereço de Desvio Código RST 0 0000h C7h RST 1 0008h CFh RST 2 0010h D7h RST 3 0018h DFh RST 4 0020h E7h RST 5 0028h EFh RST 6 0030h F7h RST 7 0038h FFh As interrupções podem ser ativadas simultaneamente, mas o atendimento será baseado em uma ordem de prioridade. No 8085 a ordem de prioridade é a seguinte: TRAP → máxima prioridade; RST 7.5 → maior prioridade dos RST; RST 6.5 → prioridade intermediária; RST 5.5 → menor prioridade dos RST; INTR → prioridade mínima. Observação: O uso da INTR é baseado no sinal INTA gerado pelo microprocessador. Este sinal é colocado em nível baixo sempre que uma interrupção INTR é reconhecida. Neste instante deve-se colocar no barramento um código de desvio para o 8085. A manipulação de interrupções no 8085 exige a configuração de um Registro de Controle de Interrupção, que é organizado como segue: A programação deste registro, que também é referida como “definição da máscara de interrupção”, é feita com a instrução seguinte:

  • SIM → Set Interrupt Mask – ativa / desativa as interrupções mascaráveis. Esta instrução envia para o Registrador de Interrupção o DADO armazenado no ACUMULADOR. X X X R 7.5 MSE M 7.5 M 6.5 M 5. 0 – Habilita Interrupção 1 – Habilita Máscara 0 – Desabilita Máscara 1 – Zera Flip-Flop de RST 7. Este registrador pode ser lido através da instrução seguinte.
  • RIM → Read Mask – Lê a máscara de interrupção, armazenando o valor correspondente no acumulador. (^3)

Existem ainda duas instruções para controle de todas as interrupções mascaráveis, de forma global e de acordo com a máscara de interrupção, que são:

  • EI → Enable Interrupt – habilita todas as interrupções, de acordo com a máscara definida;
  • DI → Disable Interrupt – desabilita todas as interrupções, independente da máscara definida;

B – SUBROTINAS DO MÓDULO MC-

DELAY (atraso) - endereço 05F1h : Decrementa o par DE até chegar a zero UPDDT → Endereço: 036Eh : Exibe o conteúdo de A (8 bits) no campo de dados do display UPDAD → Endereço: 0363h: Exibe o conteúdo do par DE no campo de endereços do display RDKBD → Endereço: 02E7h : Realiza leitura do teclado Entrada: não tem Saída : no acumulador Registradores Utilizados: A, H e L Obs: Esta subrotina é baseada na interrupção RST 5.5. Assim, para utilizá-la, deve-se ativar as interrupções antes de acioná-la. OUTPUT → Endereço: 02B7h : Subrotina de controle individual de display no MC- Entrada: A, B e HL Saída: não tem Registradores Utilizados: todos Operação: HL → Indica o endereço inicial de uma tabela que deve conter códigos para acionamento do display. A apresentação é dada como segue: Código Apresentação Código Apresentação 00 0 0B B 01 1 0C C 02 2 0D D 03 3 0E E 04 4 0F F 05 5 10 H 06 6 11 L 07 7 12 P 08 8 13 I 09 9 14 R 0A A 15 (branco) O acumulador indica o campo do display: A = 00 → campo de endereços A = 01 → campo de dados. O registrador B indica liga/desliga para o ponto decimal: B = 00 → desliga B = 01 → liga. 4

3 - Programas

tabela 1 – Programa 5. Label End.(H) Mnemônico Código (HEXA) Comentário início 2000 LXI SP, 20B0 31 B0 20 Define o topo da pilha em 20B0h. 2003 MVI A, 08H 3E 08 Carrega A com 08h. 2005 SIM 30 Ativa interrupções de acordo com o valor de A (08h habilita todas). 2006 EI FB Habilita interrupções 2007 LDA 2050H 3A 50 20 Carrega no acumulador o conteúdo da posição 2050h. loop 200A PUSH PSW F5 Copia o conteúdo do par AF para o topo da pilha. 200B CALL UPDDT CD 6E 03 Subrotina que exibe o conteúdo de A no display de dados. 200E LXI D, 8000H 11 00 80 Carrega o par DE com 8000h. 2011 CALL delay CD F1 05 Subrotina de delay com o tempo proporcional ao valor do par DE. 2014 LDA 2051H 3A 51 20 Carrega no acumulador o conteúdo da posição 2051h. 2017 MOV B,A 47 BA 2018 POP PSW F1 Copia o conteúdo do topo da pilha no par AF. 2019 EI FB Habilita interrupções 201A CMP B B8 Compara o valor de B com A. 201B JZ início CA 00 20 Se B=A e flag Z=0, desvia para início. 201E ADI 01H C6 01 AA+ 2020 DAA 27 Ajuste decimal. 2021 JMP loop C3 0A 20 Desvia para loop. 6

tabela 2 -Programa 5. Label End.(H) Mnemônico Código (HEXA) Comentário início 2000 LXI SP, 20B0H 31 B0 20 Define o topo da pilha em 20B0h. 2003 MVI A, 08 3E 08 Carrega A com 08h. 2005 SIM 30 Ativa interrupções de acordo com o valor de A. 2006 EI FB Habilita interrupções 2007 CALL RDKBD CD E7 02 Subrotina que realiza leitura do teclado enviando tal valor ao acumulador. 200A PUSH PSW F5 Copia o conteúdo do par AF para o topo da pilha. 200B CALL UPDDT CD 6E 03 Subrotina que exibe o conteúdo de A no display de dados. 200E POP PSW F1 Copia o conteúdo do topo da pilha no par AF. 200F RLC 07 Desloca os bits para esquerda sem carry. 2010 RLC 07 Desloca os bits para esquerda sem carry. 2011 RLC 07 Desloca os bits para esquerda sem carry. 2012 RLC 07 Desloca os bits para esquerda sem carry. 2013 MOV B,A 47 BA 2014 CALL RDKBD CD E7 02 Subrotina que realiza leitura do teclado enviando tal valor ao acumulador. 2017 ADD B 80 A=A+B 2018 PUSH PSW F5 Copia o conteúdo do par AF para o topo da pilha. 2019 CALL UPDDT CD 6E 03 Subrotina que exibe o conteúdo de A no display de dados. 201C POP PSW F1 Copia o conteúdo do topo da pilha no par AF. 201D MOV B,A 47 BA

AA - 0A.

201E JNC loop2 D2 19 20 Se A< 0Ah, desvia para loop 2. 2021 ADD B 80 AA+B 2022 PUSH PSW F5 Copia o conteúdo do par AF para o topo da pilha. 2023 CALL UPDDT CD 6E 03 Subrotina que exibe o conteúdo de A no display de dados. 2026 POP PSW F1 Copia o conteúdo do topo da pilha no par AF. 2027 MOV B,A 47 BA 2028 JMP inicio C3 00 20 Desvia incondicionalmente inicio Tabela 4 – Programa 5. Label End.(H) Mnemônico Código (HEXA) Comentário 2000 LXI SP, 20B0H 31 B0 20 Define o topo da pilha em 20B0h. 2003 MVI A,08H 3E 08 Carrega A com 08h. 2005 SIM 30 Ativa interrupções de acordo com o valor de A. 2006 CALL ex3 CD 30 20 Subrotina para ler um valor do teclado (programa 5.3, modificando JMP para RET). 2009 PUSH B C5 Copia o conteúdo do par BC para o topo da pilha. 200A CALL ex3 CD 30 20 Subrotina para ler um valor do teclado (programa 5.3, modificando JMP para RET). 200D MOV A,B 78 AB 200E POP B C1 Copia o conteúdo do topo da pilha no par BC. 200F CMP B B8 Compara o valor de B com A. 2010 JC jump DA 16 20 Se A<B, devia para jump. 2013 MOV C,A 4F CA 2014 MOV A,B 78 AB (^9)

2015 MOV B,C 41 BC

jump 2016 STA 2060H 32 60 20 Salva na posição 2060h o menor número. 2019 MOV A,B 78 AB 201A STA 2061H 32 61 20 Salva na posição 2061h o maior número. 201D HLT 76 Fim. Tabela 5 – Programa 5. Label End.(H) Mnemônico Código (HEXA) Comentário begin 2000 LXI SP, 20B0H 31 B0 20 Define o topo da pilha em 20B0h. 2003 MVI A, 08H 3E 08 Carrega A com 08h. 2005 SIM 30 Ativa as interrupções de acordo com o valor contido em A ( habilita todas). 2006 CALL item 6.4 CD 20 20 Chama subrotina programa item 5.4. 2009 CALL item 6.1 CD 70 20 Chama subrotina programa item 5.1. 200C JMP begin C3 00 20 Desvia para Begin. 10

Figura 2 – Fluxograma do programa 5.2. Inicio Define a pilha. Habilita interrupções. Mostra no display. Salva no reg B. Realiza a leitura via teclado 12

Figura 3 – Fluxograma do programa 5.3. Início Define a pilha. Habilita as interrupções. Realiza leitura via teclado. Valor lido > 9 Não Sim Mostra no display. Salva valor no Registrador B. 13

Figura 5 – Fluxograma do programa 5.5. Define a pilha. Habilita as interrupções. Chama o programa 5.4. Chama o programa 5. Inicio 15

5 - Conclusão

Utilizando interrupções e sub-rotinas do modulo MC-1 foram feitos programas que contam e armazenam dados enviados pelo usuário, o qual pode reinicializar o programa utilizando interrupções. 16