Sei sulla pagina 1di 45

EEL 7030

Resumo do Programa 1 Com 8085 Subrotinas, Pilha, Entrada e Sadas, Interrupo Prova1 2 Microcontroladores 8051 Timer, Interrupo e I/O. 3 8086 Estrutura basica Prova2; Nota=raiz(lab*teoria) REC

Elementos de um computador

Linhas de Controle

CPU

Memria

I/O

Barramentos de endereos e dados 8 BIT >>>> 16 BIT >>>>> 20 BIT >>>>>>

Funcionamento basico
Memria

cdigo CPU
RI ACC BC DE HL PC SP

04 3C 3E 25

04 INR B 3C INR A 3E 25 MVI A 25

Linguagem Assembly

Caractersticas Gerais
Uma linguagem de montagem uma representao simblica para uma linguagem de mquina (numrica). o primeiro nvel a fazer uso de palavras e abreviaturas (mnemnicos) familiares s pessoas para representar as instrues de mquina. Cada comando em Assembly de montagem corresponde a uma instruo de linguagem de mquina.

Linguagem Assembly
Permite a livre atribuio de nomes simblicos a dados e endereos. O que pode ser feito em linguagem de mquina pode ser em Assembly. Este nvel e os superiores so suportados por traduo. O tradutor para uma linguagem de montagem denominado montador (assembler). o primeiro nvel dirigido aos programadores de aplicao. O programador em Assembly tem acesso a todos os recursos e instrues disponveis na CPU. Os programas em Assembly tm pouca ou nenhuma portabilidade.

Comparao entre Linguagem de Montagem e Linguagem de Alto Nvel


Ser que os grandes programas comerciais, que sero 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 nvel. A produtividade do programador em uma linguagem de alto nvel muito maior do que quando ele programa em linguagem de montagem. O programador tem uma viso muito melhor do problema e do algoritmo quando utiliza uma linguagem de alto nvel. Portabilidade do projeto entre plataformas e entre diferentes programadores. Facilidade de compreenso, depurao e atualizao de cdigo-fonte em linguagem de alto nvel. Mas um programa feito em linguagem de montagem ainda bem mais rpido do que um equivalente feito em linguagem de alto nvel e compilado. Soluo: Combinar as duas linguagens!

Quando Utilizar Assembly?


Quando for necessrio extrair o mximo desempenho dos procedimentos crticos de um programa em linguagem de alto nvel. Em microprocessadores voltados para sistemas pequenos (dedicados), o Assembly pode ser a nica alternativa. Geralmente os compiladores de linguagens de alto nvel tambm executam o processo de montagem. Portanto, entender de Assembly essencial para entender o funcionamento dos compiladores.

O Processo de Montagem
bastante semelhante entre mquinas diferentes. O cdigo assembly contm muitas referncias 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 referncias futuras; Coleciona as definies de todos os smbolos em uma tabela. No passo 2: Cada comando pode ser lido, montado e dar sada.
Montador de um passo: L o programa-fonte somente uma vez para fazer a montagem. Os comandos com referncias futuras so guardados em uma tabela para serem montados aps o trmino da leitura do programa. A maioria dos montadores de dois passos.

Estrutura do 8085
Registradores A Acumulador B C - podem formar o par B D E - podem formar o par C H L - Apontador de memria-H

SP Stack Pointer PC Programm Counter

Estrutura do 8085

Instrues
S o Cdigo 04 INR B Cdigo e um byte de Dado 0E 22 MVI C22H Cdigo e dois bytes de Dados CD 2541 CALL Soma; Comentrio

Instrues

- Endereo - Cdigo - Instruo - Dado - Comentrio


INR A MVI A,25H 2000 3C INR A ; Atualiza cont 2001 3E 25 MVI A,25; ???? 2002 CD 2541 CALL Soma

Sub routinas

Rotinas do Monitor KIT 8085


Eprom 0000H- 2000H

RAM 2000H 2400H Programa

Rotinas do Monitor
Nome endereo altera funo

Letecla MostraA MostraD Delay

02E7 A H L Ler p/A 036E todos MostraA 0363 todos MostraDE 05F1 A D E Atraso ( D=1 = 100ms) ( D=0 ??? ) xxxx ; atraso
DCR D

LOOP

JN Z LOOP

Sistema de Desenvolvimento
Editor Montador Compilador Simulador Gravador Emulador

Crossware Edita e Compila Abacus Simulador PINNACLE para 8051

; 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 1 ; 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 dgitos ? JNC endereo

; Por fazer no programa anterior CONT1.asm 1) Iniciar o contador com valor de 1 ou 2 dgitos lido ao iniciar o programa 2) Contador hexadecimal ou decimal ( Escolher por tecla ou INT) 3) Contador com 4 dgitos 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 sugestes ??

Problemas no desenvolvimento de programas!!


Erros de Sintaxe No colocar END No definir a pilha Definir a pilha em local inadequado Definir endereos errados Erros de lgica !!!!!!!!!!!!!!!!!

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

Interrupes
So desvios do programa ocasionados por eventos externos. Interrupo por Software Interrupo por Hardware Nvel Borda Ascendente Borda Descendente Borda e nvel

Interrupes no 8085
RST0 ........ RST3 RST4 RST5 TRAP RST5.5 RST6 RST6.5 RST7 RST7.5

CPU 0000H
0018H 0020H 0028H 0024 1 002C 4 0030 0034 3 0038H 003C 2

RAM 2000H
2018H 2020H 2028H

Prioridade
20D1H 20C8H 2030H 20CBH 2038H 20CEH

Interrupes no 8085
Flags usados IP Interrupt Priority
5.5 6.5 7.5

IE Interrupt Enable
EA 5.5 6.5 7.5

Interrupes no 8085
; A Interrupo 7.5 deve zerar o contador ; Teste quais so os problemas ???? LXI SP,2060H ; Inicializa pilha MVI A,18H ; Habilita 5.5, 6.5 7.5 SIM inicio: MVI A,00H EI LOOP: ADI 01H ; INR A no 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

Interrupes no 8085

T75 MVI A,0 EI RET ORG RST5.5 ; Evitar RST 5.5 EI RET ORG RST6.5 ; evitar RST 6.5 EI RET ORG RST7.5 ; Desvio da RST 7.5 JMP T75 ORG TRAP ; no Mascarvel EI RET END

Interrupes 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 STA CONTA EI RET CONTA: DB 00H ORG RST7.5 ; Desvio da RST 7.5 JMP TRATADOR END ints85a.asm

Interrupes 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 correo STA COUNT CALL MOSTRAA MVI D,05H ; Atraso de 500ms CALL DELAY LDA STATE CPI 00H ; Testa se houve INT JZ LOOP ; Continua contando MVI A,00H

Interrupes no 8085
LDA STATE CPI 00H ; Testa critrio 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 RST7.5 ; Desvio da RST JMP HNDLR END

Interrupes 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

Interrupes no 8085
LDA INCRE CPI 1 JZ DOIS MVI A,1 STA INCRE JMP CONTINUA DOIS: MVI A,2 STA INCRE 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

Interrupes no 8085
STATE DB 00H ; Flag global COUNT DB 00H ; Contagem incremento DB ORG RST7.5 ;Desvio RST 7.5 JMP T75 END

Interrupes
Caracteristicas de um tratador de interrupo Lo Pequeno No alterar Registradores No alterar a pilha

Porta paralela 8155

+Vcc PB0

+Vcc

PB1
REGISTRO COMANDO END. 8155 20H

+Vcc PB7

8155
PA0 PA1

+Vcc

PORTA A PORTA B

21H 22H

PA7

Porta paralela 8155


;Chaves.asm - Utilizao de I/O
COMMAND EQU 20H CHAVES EQU 21H LEDS EQU 22H ORG 2000H MVI A,02H ; Porta A entrada, ; B como sada OUT COMMAND LOOP: IN CHAVES ; Le chaves p/A OUT LEDS ; Acende LEDs JMP LOOP END

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 sada 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

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 !!

Manipulao de bits
Operaes booleanas !! Manipulao com mascaras Registro 11111x00 Mascara 00001110 Operao OR 00001110 SETAR o BIT definido na mascara

Manipulao de bits
RESETAR UM ou mais bits Registro 11111100 Mascara 00001111 Operao AND 00001100

Reseta o BIT cuja mascara for zero !!!!

Manipulao de bits
COMPLEMENTAR UM ou mais bits Registro 11111100 Mascara 00001111 Operao XOR 00000011 Complementa os bits cuja mascara for um !!!

Manipulao de bits
TESTAR UM ou mais bits
Registro Mascara Operao AND ANI 01 JZ SETA6
Xxx ...................

1111100x 00000001 0000000x

ANI 03
JNZ SETA6
YYY

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

Exerccio1
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 5 ....

Exerccio2
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 5 ....

Exerccio3
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 5 ....

Exerccio4
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 5 ....

Potrebbero piacerti anche