A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e.

Apresentações semelhantes


Apresentação em tema: "EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e."— Transcrição da apresentação:

1 EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e I/O. 3 – 8086 – Estrutura basica Prova2; Nota=raiz(lab*teoria) REC

2 Elementos de um computador
Linhas de Controle CPU Memória I/O Barramentos de endereços e dados 8 BIT >>>> 16 BIT >>>>> 20 BIT >>>>>>

3 Funcionamento basico Memória código CPU 04 3C 3E 25 RI PC ACC SP BC DE
HL 04 – INR B 3C – INR A 3E 25 – MVI A 25

4 Linguagem – Assembly Características Gerais
Uma linguagem de montagem é uma representação simbólica para uma linguagem de máquina (numérica). É o primeiro nível a fazer uso de palavras e abreviaturas (mnemônicos) familiares às pessoas para representar as instruções de máquina. Cada comando em Assembly de montagem corresponde a uma instrução de linguagem de máquina.

5 Linguagem – Assembly Permite a livre atribuição de nomes simbólicos a dados e endereços. O que pode ser feito em linguagem de máquina pode ser em Assembly. Este nível e os superiores são suportados por tradução. O tradutor para uma linguagem de montagem é denominado montador (assembler). É o primeiro nível dirigido aos programadores de aplicação. O programador em Assembly tem acesso a todos os recursos e instruções disponíveis na CPU. Os programas em Assembly têm pouca ou nenhuma portabilidade.

6 Comparação entre Linguagem de Montagem e Linguagem de Alto Nível
Será que os grandes programas comerciais, que serão muito vendidos, precisam ser escritos inteiramente em linguagem de montagem para serem eficientes? O custo de desenvolver um grande programa inteiramente em assembly é muito mais alto do que o custo de desenvolvê-lo em uma linguagem de alto nível. A produtividade do programador em uma linguagem de alto nível é muito maior do que quando ele programa em linguagem de montagem. O programador tem uma visão muito melhor do problema e do algoritmo quando utiliza uma linguagem de alto nível. Portabilidade do projeto entre plataformas e entre diferentes programadores. Facilidade de compreensão, depuração e atualização de código-fonte em linguagem de alto nível. Mas um programa feito em linguagem de montagem ainda é bem mais rápido do que um equivalente feito em linguagem de alto nível e compilado. Solução: Combinar as duas linguagens!

7 Quando Utilizar Assembly?
Quando for necessário extrair o máximo desempenho dos procedimentos críticos de um programa em linguagem de alto nível. Em microprocessadores voltados para sistemas pequenos (dedicados), o Assembly pode ser a única alternativa. Geralmente os compiladores de linguagens de alto nível também executam o processo de montagem. Portanto, entender de Assembly é essencial para entender o funcionamento dos compiladores.

8 O Processo de Montagem É bastante semelhante entre máquinas diferentes. O código assembly contém muitas referências futuras. Os montadores podem ser de dois passos ou de um passo. Montador de dois passos: Lê o programa-fonte duas vezes.  No passo 1: Elimina todas as referências futuras; Coleciona as definições de todos os símbolos em uma tabela.  No passo 2: Cada comando pode ser lido, montado e dar saída. Montador de um passo: Lê o programa-fonte somente uma vez para fazer a montagem. Os comandos com referências futuras são guardados em uma tabela para serem montados após o término da leitura do programa. A maioria dos montadores é de dois passos.

9 Estrutura do 8085 Registradores de 8 Bit A – Acumulador
B C - podem formar o par B D E - podem formar o par C H L - Apontador de memória-H SP – Stack Pointer – 16 bit PC – Programm Counter – 16b

10 Estrutura do 8085

11 Instruções Só o Código da instrução 04 INR B Código e um byte de Dado
0E 22 MVI C22H Código e dois bytes de Dados ou endereço CD CALL Soma; Comentário

12 Instruções - Endereço - Código - Instrução - Dado - Comentário INR A
MVI A,25H 2000 3C INR A ; Atualiza cont 2001 3E 25 MVI A,25; ???? 2002 CD CALL Soma

13 Sub routinas

14 Monitor Eprom 0000H- 2000H RAM 2000H – 2400H Programa
Rotinas do Monitor KIT 8085 Monitor Eprom 0000H- 2000H RAM 2000H – 2400H Programa

15 Rotinas do Monitor Letecla 02E7 A H L Ler p/A
Nome endereço altera função Letecla 02E7 A H L Ler p/A MostraA 036E todos MostraA MostraD todos MostraDE Delay F1 A D E Atraso ( D=1 = 100ms) ( D=0 ??? ) LOOP xxxx ; atraso DCR D JN Z LOOP

16 Sistema de Desenvolvimento
Editor Montador Compilador Simulador Gravador Emulador Crossware – Edita e Compila Abacus – Simulador PINNACLE – para 8051

17 Para contar com 4 dígitos ? JNC endereço
; EXEMPLO CONT1.ASM ; Este programa realiza uma contagem decimal a partir de 7 MOSTRAA equ 036EH MOSTRAD equ 0363H DELAY equ 05f1H ORG 2000h LXI SP,20C2H LOOP: ADI ; INCREMENTAR DAA ; AJUSTE PARA DECIMAL STA MEMORIA ; SALVAR Valor MOV E,A MVI D,0 CALL MOSTRAD ; Mostrar em DE LDA MEMORIA ; RECUPERAR JMP LOOP MEMORIA DB 7 END Para contar com 4 dígitos ? JNC endereço

18 ; Por fazer no programa anterior CONT1.asm
1) Iniciar o contador com valor de 1 ou 2 dígitos lido ao iniciar o programa 2) Contador hexadecimal ou decimal ( Escolher por tecla ou INT) 3) Contador com 4 dígitos 4) Contagem deve ser zerada toda vez que uma chave for pressionada 5) Contagem deve ser iniciada em 3344 toda vez que ocorrer a Int Trap 6) Controlar a velocidade do contador ( chave, tecla, Int ???) 7) Outras sugestões ??

19 Problemas no desenvolvimento de programas!!
Erros de Sintaxe Não colocar END Não definir a pilha Definir a pilha em local inadequado Definir endereços errados Erros de lógica !!!!!!!!!!!!!!!!!

20 Diretivas ORG 2000H - Origem END Dado DB 25H – define dado=25
Dado DW 25H – define dado=0025 MSG DB ‘ Microprocessador’ DELAY EQU 05F1 LETECLA EQU 02E7H CHAVES EQU 21H LEDS EQU 22H

21 Porta paralela 8155 REGISTRO END. 8155 COMANDO 20H PORTA A 21H PORTA B

22 Porta paralela 8155 ;Chaves.asm - Utilização de I/O COMMAND EQU 20H
CHAVES EQU 21H LEDS EQU 22H ORG 2000H MVI A,02H ; Porta A entrada, ; B como saída OUT COMMAND LOOP: IN CHAVES ; Le chaves p/A OUT LEDS ; Acende LEDs JMP LOOP END

23 Porta paralela 8155 REGISTRO END. 8155 COMANDO 20H PORTA A 21H PORTA B

24 Porta paralela 8155 Deslocar um led para a Esq.
A int TRAP alterna entre led ligado ou apagado COMMAND EQU 20H CHAVES EQU 21H LEDS EQU 22H MVI A,02H ; B é saída OUT COMMAND SIM EI LOOP: LDA DADO OUT LEDS ; Acende o LEDs RLC ; Rotaciona LED STA DADO MVI D,02H ; Atraso de 200ms CALL DELAY ; p/ ver LED JMP LOOP

25 Porta paralela 8155 TTRAP: PUSH PSW LDA DADO CMA STA DADO EI POP PSW
RET DADO DB 01 ; valor inicial ORG TRAP JMP TTRAP END RSTxx – Alterna SENTIDO !!

26 Porta paralela 8155 TTRAP: PUSH PSW LDA DADO CMA STA DADO EI POP PSW
RET DADO DB 01 ; valor inicial ORG TRAP JMP TTRAP END RSTxx – Alterna SENTIDO !!

27 Manipulação de bits Operações booleanas !! Manipulação com mascaras
Registro x00 Mascara Operação OR SETAR o BIT definido com 1 na mascara

28 Manipulação de bits RESETAR UM ou mais bits Registro 11111100
Mascara Operação AND Reseta o BIT cuja mascara for zero !!!!

29 Manipulação de bits COMPLEMENTAR UM ou mais bits Registro 11111100
Mascara Operação XOR Complementa os bits cuja mascara for um !!!

30 ;Testar o Bit0 de DADO ;Se tiver em 1 Resetar o BIT7 ; e caso contrário Setar o BIT6 INICIO: LDA DADO ANI 01 JZ SETA6 LDA DADO ANI 7FH ;resetar bit7 STA DADO JMP INICIO SETA6: LDA DADO ORI B;set B6 DADO DB 0FFH END

31 Interrupções São desvios do programa ocasionados por eventos externos.
Interrupção por Software Interrupção por Hardware Nível Borda Ascendente Borda Descendente Borda e nível

32 Interrupções no 8085 Prioridade RST0 0000H 2000H ........
CPU RAM RST H H RST H H RST H H RST H H Prioridade TRAP D1H RST C C8H RST H RST CBH RST H 2038H RST C CEH

33 Interrupções no 8085 Flags usados IP – Interrupt Priority
IE – Interrupt Enable EA

34 Interrupções no 8085 ; A Interrupção 7.5 deve zerar o contador
; Teste quais são os problemas ???? LXI SP,2060H ; Inicializa pilha MVI A,18H ; Habilita 5.5, SIM inicio: MVI A,00H EI LOOP: ADI 01H ; INR A não CY) DAA ; utiliza CY flag na corr. PUSH PSW ; Salva contagem MVI D,0 MOV E,A CALL MOSTRAD MVI D,05H ; Atraso de 500ms CALL DELAY POP PSW ; Recupera A JMP LOOP

35 Interrupções no 8085 T75 MVI A,0 EI RET ORG RST5.5 ; Evitar RST 5.5
ORG RST ; Desvio da RST 7.5 JMP T75 ORG TRAP ; não Mascarável END

36 Interrupções no 8085 LXI SP,20C0H ; Inicializa pilha
MVI A,18H ; Habilita 5.5, 6.5 e7.5 SIM EI LOOP: LDA CONTA ADI 01H DAA ; Ajusta p/Decimal STA CONTA CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY JMP LOOP TRATADOR: MVI A,00H RET CONTA: DB 00H ORG RST ; Desvio da RST 7.5 JMP TRATADOR END ints85a.asm

37 Interrupções no 8085 LXI SP,20C0H ; Inicializa pilha
MVI A,18H SIM ; Habilita 5.5, 6.5 e 7.5 MVI A,00H STA STATE ; Flag de contagem STA COUNT ; Inicializa EI LOOP: LDA COUNT ADI 01H DAA ; Utiliza CY na correção STA COUNT CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY LDA STATE CPI 00H ; Testa se houve INT JZ LOOP ; Continua contando

38 Interrupções no 8085 LDA STATE CPI 00H ; Testa critério
JZ LOOP ; Continua MVI A,00H STA COUNT ; zera a contagem STA STATE ; Reinicializa flag JMP LOOP HNDLR: PUSH PSW MVI A,01H STA STATE EI POP PSW RET STATE DB 00H ; Flag global INT COUNT DB 00H ; Contagem ORG RST ; Desvio da RST JMP HNDLR END

39 Interrupções no 8085 Um contador cujo incremento deve ser alternado entre 1 e 2 com int7.5 MVI A,00H STA STATE ; Flag de reset STA COUNT ; Inicializa cont. EI LOOP: LDA COUNT LXI H,INCRE ADD M ; DAA ; Utiliza CY STA COUNT CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY LDA STATE CPI 00H ;Testa de houve INT JZ LOOP ;Continua ate STATE = 0

40 Interrupções no 8085 LDA INCRE CPI 1 JZ DOIS MVI A,1 STA INCRE
JMP CONTINUA DOIS: MVI A,2 CONTINUA ; STA COUNT ; CASO MVI A,0 STA STATE ; reinicializa Flag JMP LOOP T75: PUSH PSW MVI A,01H STA STATE EI POP PSW RET

41 Interrupções no 8085 STATE DB 00H ; Flag global
COUNT DB 00H ; Contagem incremento DB ORG RST7.5 ;Desvio RST 7.5 JMP T75 END

42 Interrupções Caracteristicas de um tratador de interrupção
Local do tratador Tamanho - Pequeno Não alterar Registradores Não alterar a pilha

43 Exercício1 Deslocar um LED ligado para a esquerda no conjunto de Leds.
As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e

44 Exercício2 Deslocar um LED ligado para a esquerda no conjunto de Leds.
As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e

45 Exercício3 Deslocar um LED ligado para a esquerda no conjunto de Leds.
As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e

46 Exercício4 Deslocar um LED ligado para a esquerda no conjunto de Leds.
As chaves 7 e 8 definem a velocidade de deslocamento. A chave 1 define o sentido. Ligada – para a direita e desligada para a esquerda. A chave 2 controla entre deslocar um LED aceso e um desligado ! As chaves 3, 4 e


Carregar ppt "EEL 7030 Resumo do Programa 1 – Com 8085 – Subrotinas, Pilha, Entrada e Saídas, Interrupção Prova1 2 – Microcontroladores – 8051 Timer, Interrupção e."

Apresentações semelhantes


Anúncios Google