Você está na página 1de 27

Microprocessador 8085

V.Lobo, Escola Naval


v1.6 2007

Microprocessadores

INTRODUO
Microprocessador 8085 Microprocessador 8085

Intel 8080
Primeiro microprocessador de 8 bits da Intel Sucessor do primeiro microprocessador do mundo (de 4 bits)

Intel 8085
Verso melhorada do 8080 Primeiro microprocessador com grande sucesso comercial Muito usado em instruo por ter uma arquitectura simples e limpa
8 bits de dados

Arquitectura externa bsica


Bus de dados de 8 bits Bus de endereamento de 16 bits (espao de endereamento de 64K) 8085
16 bits de endereo 17 bits de controlo

V.Lobo @ EN

1 1

Arquitectura interna
D7-D0 B1-DIRECTIONAL DATA BUS

Microprocessador 8085 Microprocessador 8085

DATA BUS BUFFER/LATCH

(8 BIT) INTERNAL DATA BUS

ACCUMULATOR 8

TEMP. REG.

FLAG FLIP-FLOPS 5

INSTRUCTION REGISTER 8

MULTIPLEXER 8 W TEMP. REG. 8 Z TEMP. REG. 8 C REG. 8 E REG. L REG. 8 16 16 REGISTE R ARRAY

ARITHMETI C LOGIC UNIT (ALU) 8

INSTRUCTION DECODER AND MACHINE CYCLE ENCODING

REGISTER SELECT

ACCUMULATOR LATCH 8

B REG. D REG. H REG.

8 8 8

STACK POINTER PROGRAM COUNTER

DECIMAL ADJUST

TIMING AND CONTROL

INCREMENTER/DECREMENTER ADDRESS LATCH 16

DATA BUS CONTROL

INTERRUPT CONTROL

SERIAL PORT

HOLD CONTROL

CLOCKS

RESET OUT RESET IN

ADDRESS BUFFER A15-A0 ADRESS BUS

16

WR RD IO/M S0 S1 ALE
V.Lobo @ EN

INT INTA RST & TRAP SID SOD HOLD HOLD ACK

x1 X2 CLK OUT READY

2 2

Pgina 1

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Implementao em Silcio
N de transistors: 6000
Microprocessador 8085 Microprocessador 8085

Incio de fabrico: Abril 1974 (8080) Fabricado pela INTEL e por vrios outros fabricantes sob licena (p.exemplo, Siemens, Philips, Texas, etc) Diferentes modelos, que se diferenciam por:
Frequncia. de relgio Tecnologia de construo (NMOS, CMOS, largura das pistas, etc) Robustez de encapsulamento
V.Lobo @ EN

3 3

REGISTOS
Microprocessador 8085 Microprocessador 8085

Registos de uso geral


Existe 1 registo privilegiado chamado ACUMULADOR, onde guardado: um dos operandos das operaes aritmticas o resultado das operaes aritmticas Existem 6 registo de uso geral, que podem ser agrupados 2 a dois para formar registos de 16 bits Dois desses registos H e L (High & Low) so usados para gerar endereos. O dado contido no endereo de memria apontado por HL tratado por algumas instrues como se fosse um registo (chamado M)

A B D H
V.Lobo @ EN

C E L
4 4

Pgina 2

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

REGISTOS
Program Counter Stack Pointer
Contm o endereo do topo do stack ( gerido pelo P)
Microprocessador 8085 Microprocessador 8085

Contm o endereo da prxima instruo a ser executada

STACK
Estrutura computacional que permite guardar dados numa base LIFO (Last In First Out) Comporta-se como uma pilha de livros onde podem ser postos livros, e retirados O acesso ao stack feito APENAS COM DUAS INSTRUES: PUSH - pe um dado (de 16 bits) no stack POP - retira um dado (de 16 bits) do stack
Instrues: PUSH BC PUSH DE PUSH HL PUSH PSW POP BC POP DE POP HL POP PSW LXI SP,(endereo inicial do stack)
V.Lobo @ EN

5 5

FLAGS
Microprocessador 8085 Microprocessador 8085

Existe um registo especial que guarda indicaes sobre a ltima operao efectuada pelo P. Esse registo tem 5 bits, ou FLAGS Qualquer operao de aritmtica ou lgica afecta essas flags Cada bit pode ser interrogado separadamente por instrues que necessitam de saber se a ltima operao provocou um carry se o resultado foi 0, etc. Z
V.Lobo @ EN

S CY P AC
6 6

Pgina 3

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

FLAGS
Microprocessador 8085 Microprocessador 8085

As flags so:
Z Zero 1 = O resultado da ltima operao foi 0 0 = O resultado da ltima operao no foi 0 S Sign (igual ao bit mais significativo; assume notao de complemento para 2) 1 = O resultado da ltima operao < 0 0 = O resultado da ltima operao 0 CY Carry 1 = Houve Carry 0 = No houve Carry P Parity 1 = Paridade Par 0 = Paridade mpar AC AUXILARY CARRY 1 = Houve Carry em BCD 0 = No houve Carry em BCD
V.Lobo @ EN

7 7

INSTRUCTION SET
Microprocessador 8085 Microprocessador 8085

O 8085 tem um conjunto vasto de instrues


Era um CISC para a sua poca

Cada instruo um nmero ou cdigo mquina Para facilidade de leitura cada instruo representada (no papel) por uma mnemnica, que se assemelha ao seu significado em ingls
Ex: A instruo CFH faz um restart e tem a mnemnica RST Um programa escrito em mnemnicas diz-se escrito em Assembly Language, ou Assembler

Vamos dividir as instrues em classes



V.Lobo @ EN

Mover dados Aritmtica e lgica Controlo de fluxo Outras

8 8

Pgina 4

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

MOVER DADOS
Microprocessador 8085 Microprocessador 8085

Modos de endereamento
H vrias maneiras de referir o dado que se pretende usar:
Nome do modo Argumento passado instruo Dado usado

Imediato Directo por registo Directo por Endereo Indirecto por registo Indirecto por endereo Indexado
V.Lobo @ EN

36 A 2000H [HL] [3053H] [HL+3] 36 36 2000H 2000H 1FFDH + 3 36 36 36 9 9

MOVER DADOS
MOV r1,r2
Microprocessador 8085 Microprocessador 8085

Move os dados (8 bits) do registo r2 para o registo r1 Ex: MOV A,B ; pe no acumulador o contedo de B MOV H,D ; pe em H o contedo de D

MOV r1,M

/ MOV M,r1

Move os dados (8 bits) do endereo apontado por HL para o registo r1, ou vice-versa Ex: MOV M,A ; pe o contedo do acumulador no ; endereo de memria apontado por HL

LDAX rp

STAX rp

(Load Acumulador x...)

V.Lobo @ EN

Move para o acumulador o contedo do endereo apontado pelo par de registos rp, ou vice-versa. Ex: STAX BC; pe o contedo do acumulador no ; endereo de memria apontado por BC LDAX HL; equivale a MOV A,M 10 10

Pgina 5

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

MOVER DADOS
Microprocessador 8085 Microprocessador 8085

MVI r1, data(8bits)

(move imediate) Move para o registo r1 o dado indicado. Ex: MVI A,00 ; pe no acumulador o valor 0 MVI B,A0H ; pe em B o valor 160 (load pair imediate)

LXI rp,data(16bits)

Move para o par de registos rp o dado indicado. Ex: LXI BC,0000 ; pe no par BC o valor 0 LXI HL,3F00H ; pe em HL o valor 3F00

XCHG

(exchange)

Troca o contedo de HL com DE

V.Lobo @ EN

11 11

MOVER DADOS
Microprocessador 8085 Microprocessador 8085

LDA addr

(Load Acumulator)

Mover um dado do endereo ADDR para o acumulador EX: LDA 1000 ; Carrega o acumulador com o dado ; contido no endereo de memria 1000

STA addr

(Store Acumulator) Mover um dado do acumulador para o endereo ADDR EX: STA FFFF ; Carrega no endereo de memria FFFF ; o dado contido no acumulador

LHLD addr / SHLD addr (Load HL Direct/Store HL Direct))


Mover um dado (16 bits) do endereo ADDR para o par HL EX: LHLD FFFF ; Carrega o par HL com o dado ; contido no endereo de memria FFFF 12 12

V.Lobo @ EN

Pgina 6

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

ADD r / ADC r
Somar o registo ao acumulador ( C/CARRY )

ADD M / ADC M
Somar a memria ao acumulador ( C/CARRY )

ADI data / ACI data


Somar o dado ao acumulador ( C/CARRY) MVI A, 255 MVI B,1 MVI C,2 ADD B ADI 30 ADC C Agora, qual o valor de A ?

Exemplos

V.Lobo @ EN

13 13

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

SUB r / SBB r
Subtrair o registo ao acumulador ( C/Borrow)

SUB M / SBB M
Subtrair a memria ao acumulador ( C/Borrow )

SUI data / SBI data


Subtrair o dado ao acumulador ( C/Borrow ) MVI A,10 SUI 03 MVI B,AFH MVI C,10H ADD B SBB C Agora, qual o valor de A ? 14 14

Exemplos

V.Lobo @ EN

Pgina 7

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

DAD rp
adicionar o par rp ao par HL DAD BC

DAA
Corrigir uma soma /subtraco em BCD DAA

INR r
incrementar o registo r INR B

INR M
Incrementar o contedo da posio apontada por HL INR M

INX rp
Incrementar o par de registos rp INX BC O par rp (BC, DE, ou HL), comporta-se como um nmero de 16 bits
V.Lobo @ EN

15 15

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

DCR r
Decrementar o registo r

DCR M
Decrementar o contedo da posio apontada por HL

DCX rp
Decrementar o par de registos rp MVI H,00H MVI L,FFH INX H MVI L,FF INC L DCR M DCR H Agora, qual o valor de H e L ?

Exemplos

V.Lobo @ EN

16 16

Pgina 8

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

OPERAES DE COMPARAO
Subtraem os operandos mas no guardam o resultado. Afectam as flags, que podem depois ser usadas para tomar decises do tipo se B=A ento...

CMP r
comparar o acumulador com o registo R

CMP M
Comparar o acumulador com o contedo da posio apontada por HL

CPI data 8
Comparar o acumulador com o valor indicado 17 17

V.Lobo @ EN

OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085

ANA r
AND lgico entre o acumulador e o registo r

ANA M
AND lgico entre o acumulador e a posio apontada por HL

ANI data 8
AND lgico entre o acumulador e o dado indicado MVI A,10H MVI B,FFH MVI C,10H CMP C ANA B CMP B Agora, qual o valor de A,B,C, e das FLAGS ?

Exemplos

V.Lobo @ EN

18 18

Pgina 9

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085

ORA r
OR lgico entre o acumulador e o registo r

ORA M
OR lgico entre o acumulador e a posio apontada por HL

ORI data 8
OR lgico entre o acumulador e o dado indicado

XRA r / XRA M / XRI I


OR exclusivo com um registo/memria/dado MVI A,F8H ANI 08H ORI 02 Agora, qual o valor de A ?
V.Lobo @ EN

19 19

INSTRUES DE CONTROLO DE FLUXO


Microprocessador 8085 Microprocessador 8085

Jumps
Fazem com que a prxima instruo no seja a instruo imediatamente a seguir, mas sim outra qualquer

JMP

addr 16

Salta para o endereo dado

JNZ addr 16
Salta para o endereo dado se Z=0 (o acumulador 0)

JZ JNC JC
V.Lobo @ EN

addr16 addr 16 addr 16


20 20

Salta para o endereo dado se Z=1 (o acumulador = 0)

Salta para o endereo dado se CY=0 / CY=1

Pgina 10

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

INSTRUES DE CONTROLO DE FLUXO


Microprocessador 8085 Microprocessador 8085

JPE JPO JP JM PCHL

addr 16 addr 16 addr 16 addr 16

Salta se P=1 (parity even)

Salta se P=0 (parity odd)

Salta se S=0 (positive)

Salta se S=1 (minus)

Pe em PC o contedo HL Salta para o endereo contido em HL. como se fosse JMP M.


V.Lobo @ EN

21 21

ROTAES
Microprocessador 8085 Microprocessador 8085

RLC

CY

MSB

LSB

Rotate (acumulator) left to carry CY MSB LSB

RRC

Rotate right to carry

RAL

CY

MSB

LSB

Rotate left through carry

RAR

CY

MSB

LSB

Rotate right trough carry 22 22

V.Lobo @ EN

Pgina 11

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

NEGAES E SET
Microprocessador 8085 Microprocessador 8085

CMA
Complementa o acumulador

CMC
Complementa a flag carry

STC
Set carry flag ( faz cy=1)

V.Lobo @ EN

23 23

METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085

DEFINIR PRECISAMENTE OS OBJECTIVOS


Compreender e explicitar o que se pretende do programa: quais os dados de entrada, e quais os dados de sada

FAZER DIAGRAMA DE BLOCOS OU DIAGRAMA DE ESTADOS


Definir as sub-tarefas bsicas e a interligao entre elas

DEFINIR ESTRUTURA DE DADOS


Decidir que dados so necessrios, onde so guardados, que formato tm, etc. Definir a utilizao dos registos do P Escrever qual a utilizao dos registos e o nome das variveis (fazer o lxico de variveis), bem como fazer um mapa de memria 24 24

V.Lobo @ EN

Pgina 12

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085

FAZER FLUXOGRAMA DETALHADO


Para cada bloco fazer um fluxograma detalhado

FAZER CODIFICAO
Escrever uma tabela com as mnennicas, endereo, cdigo mquina, e n de bytes usados Mnemnicas MVI MVI SUB DEC A,FFH B,02H B A Endereo Cdigo 4000H 4002H 4004H 4005H XX XX XX XX XX XX NBytes 2 2 1 1

EXEMPLO: Comparar 2 bytes que se encontram em endereos consecutivos. se forem iguais fazer A=1, caso contrrio, fazer A=2. Comece o cdigo no endereo 6000H, e compare o contedo do endereo 2000H com o seguinte.
V.Lobo @ EN

25 25

EXEMPLOS:
Microprocessador 8085 Microprocessador 8085

Escreva programas para: Comparar dois bytes que se encontram em endereos consecutivos. Se forem iguais fazer a=0, se o primeiro for maior, fazer a=1, caso contrrio fazer a=2. Assuma que o endereo do primeiro byte 3010H. Fazer a soma de 2 nmeros de 3 bytes, que se encontram nos endereos apontados por HL e por DE, deixando o resultado no endereo originalmente apontado por HL
V.Lobo @ EN

26 26

Pgina 13

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

SUB - ROTINAS
Microprocessador 8085 Microprocessador 8085

Objectivo
Dividir o programa em tarefas simples e modulares Criar procedimentos que podem ser chamados de diversos pontos do programa.

Vantagens
Cdigo mais compacto Se necessrio fazer vrias vezes a mesma coisa, existe apenas 1 poro de cdigo para a executar Cdigo mais modular Permite uma programao mais ordenada e estruturada Menos erros As sub-rotinas podem ser testadas uma a uma

V.Lobo @ EN

27 27

INSTRUES CALL/RET
Microprocessador 8085 Microprocessador 8085

CALL addr 16
Chama uma sub-rotina Guarda o endereo contido em pc no stack e salta para o endereo addr

RET
Retorna de uma sub-rotina Vai buscar um endereo ao stack, e salta para esse endereo
Endr.
0231

Programa
MOV CALL MOV MVI ADD RET M,B 0522 A,B A,10 B

Operaes

Stack

SP
PC(0235) 0522 STACK PC

X 02 32

0522

SP
STACK PC

V.Lobo @ EN

28 28

Pgina 14

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Calls condicionais
Microprocessador 8085 Microprocessador 8085

Calls que so ou no efectuados dependendo das flags


CZ / CNZ CM / CP CPE / CPO CC / CNC - Call if Zero / if Not Zero - Call is Minus / if Positive - Call if Parity Even / if Parity Odd - Call if Carry / if Not Carry

Exemplo
Converter o valor de [2000] em negativo se ele for positivo LDA ANA CP STA
V.Lobo @ EN

Rotina que recebe um dado no acumulador e calcula o complemento para 2 CMA INR RET ; complementa A ; soma 1

2000 A 2A00 2000

29 29

PASSAGEM DE PARMETROS
Microprocessador 8085 Microprocessador 8085

1 - NOS REGISTOS
N limitado de parmetros Rpido e eficiente

2 - EM ENDEREOS FIXOS NA MEMRIA


Obriga uma ocupao permanente da memria Passagem morosa dos dados No relocvel No permite chamadas recursivas

3 - NO STACK
N ilimitado de parmetros No interfere c/ o resto do programa Diversas convenes sobre quem pe e/ou tira os dados do Stack 30 30

V.Lobo @ EN

Pgina 15

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Exemplo de parmetros
Microprocessador 8085 Microprocessador 8085

Escreva uma rotina para somar dois bytes, e escreva um programa que chame essa sub-rotina.
Passando parmetros nos registos: A rotina recebe os dados nos registos B e C, e devolve o resultado no Acumulador Passando parmetros em endereos fixos A rotina recebe os dados nos endereos 20B0H e 20B1H, devolvendo o resultado no endereo 20B2H Passando parmetros no stack Recebendo no stack os dados e devendo-os tambm no stack Recebendo no stack os dados e o endereo onde deve ser guardado o resultado

DOCUMENTE ESTAS ROTINAS !

V.Lobo @ EN

31 31

Passagem de Parametros
Microprocessador 8085 Microprocessador 8085

Passagem de parmetros C
A rotina que pe os dados no stack antes de chamar a sub-rotina, retira-os aps o retorno Permite que se use um n de parmetros reais inferior ao n de parmetros formais Cada rotina deixa o stack pointer exactamente na mesma posio em que o recebeu Os parmetros so metidos no stack da direita para a esquerda

Passagem de parmetros Pascal


A sub-rotina que chamada retira os parmetros do stack Exige que a rotina que chama e a rotina que chamada conheam muito bem o n de bytes a pr/retirar do stack Os parmetros so metidos no stack da esquerda para a direita 32 32

V.Lobo @ EN

Pgina 16

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Documentao das Sub-rotinas


Microprocessador 8085 Microprocessador 8085

H que documentar especialmente bem a INTERFACE da rotina com o resto do sistema A documentao deve incluir:
quais os parmetros como so passados os parmetros (de entrada e sada) quais os registos modificados qual a ocupao de memria

Usar (e abusar) dos comentrios Ver exemplos de rotinas do monitor do SDK85


33 33

V.Lobo @ EN

SOFTWARE INTERRUPTS
Microprocessador 8085 Microprocessador 8085

Instrues mquina RST ( restart ) Funcionam como CALLS para endereos prfixados Existem as instrues RST0 a RST7 Para cada RST h 8 bytes de memria disponvel
Geralmente, a interrupo tem de ser vectorizada para outro local, i.e. nesses 8 bytes h um JMP para o local onde a rotina est implementada.

Endereo do RST = 8xn do RST


RST0 CALL 0000 RST1 CALL 0008 RST2 CALL 0010
V.Lobo @ EN

34 34

Pgina 17

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

VANTAGENS DOS SOFT.INT.


Microprocessador 8085 Microprocessador 8085

Ocupam s 1 byte Permitem chamadas a rotinas independentes da sua implementao(i.e...) Podem ser revectorizadas facilmente
Podemos substituir as rotinas sem alterar os programas que as chamam

So normalmente usadas para fazer chamadas s rotinas do sistema operativo Normalmente os endereos de RST so ROM, e so revectorizados para RAM RST 0 normalmente faz o reset de todo o sistema
V.Lobo @ EN

35 35

INTERRUPES POR HARDWARE


Microprocessador 8085 Microprocessador 8085

Objectivos
Forar o p a actuar em funo de um evento externo (que o far executar um certo programa) O P no tem que perder tempo a verificar o sistema, pois o sistema avisa-o quando necessrio Eventos urgentes so prontamente atendidos

Consegue-se sincronismo perfeito


Os ciclos de espera e sincronismo por software tm sempre tempos de latncia grandes A resposta a interrupes pode ser (QUASE) imediata

Acorda o P (de crash, de ciclos de espera, etc.) H 2 tipos de interrupes


Umas dependem directamente de pinos do P, outras necessitam de circuitos externos
V.Lobo @ EN

36 36

Pgina 18

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Interrupes directas
Microprocessador 8085 Microprocessador 8085

Pinos TRAP E RST


Existem pinos exteriores que quando actuados foram o P a executar uma instruo rst Quando um pino actuado, feito um CALL para um dado endereo : addr = (n do Rst) x 8 H 4 pinos:

Pino RST 5.5 RST 6.5 RST 7.5

Endereo

Tipo de actuao

2CH actuado por nvel 34H actuado por nvel

3CH actuado por flanco (tem 1 FF) 24 H actuado por flanco (MANTIDO)
37 37

TRAP (RST 4.5)


V.Lobo @ EN

Interrupes atravs de INTR


Microprocessador 8085 Microprocessador 8085

Pino INTR
Existe um pino de entrada INTR pelo qual o P recebe o pedido de interrupo Quando poder atender a interrupo, o P responde com a activao do pino de sada INTA (interrupt acknolege) Quando gerado um INTA o up vai gerar um ciclo de opfetch (leitura do opcode da memria) mas sem pr um endereo no bus quem gerou o INTR tem que fornecer um opcode

Pedido de interrupo Aceitao do pedido Envia o opcode da instruo a executar


V.Lobo @ EN

INTR 8 INTA 8085 D0-D7

Exemplo: .

38 38

Pgina 19

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Exemplo simples
Microprocessador 8085 Microprocessador 8085

Quero incrementar o registo B sempre que actuado um sinal


O sinal pode ser proveniente de um interruptor que gera um impulso curto Software Ligaes fsicas Interruptor Rst 5.5 8085 Prog.Pincipal inst.1 inst.2 inst.3 ... ... ... Rotina de interrupo Endereo Contedo 002C INC B 002D RET

NOTA: Como veremos adiante, esta rotina teria alguns problemas de carcter prtico
V.Lobo @ EN

39 39

Mscara de interrupes
Microprocessador 8085 Microprocessador 8085

RSTs podem ser mascarados , ou seja desactivados (desablados) por software


Para evitar que o mP seja interrompido quando est a executar cdigo crtico Para que uma rotina de interrupo no se interrompa a si prpria Para ignorar temporariamente os pedidos de um dado perifrico

A linha TRAP no mascarvel


Est sempre activa usada muitas vezes como WATCH-DOG para evitar crashes profundos

8085
Trap
V.Lobo @ EN

Monoestvel ou Contador

Se no se fizer reset ao contador periodicamente, ele faz RESET

40 40

Pgina 20

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Mscara de interrupes
Microprocessador 8085 Microprocessador 8085

Podemos ligar/desligar todas as interrupes ao mesmo tempo (salvo caso das NMI)
Instruo DI - Desable Interrupts desliga as interrupes Instruo EI - Enable Interrupts liga as interrupes

Podemos activar apenas ALGUMAS interrupes:


Existe um registo (chamado INTERRUPT MASK) que pode ser escrito/lido de modo a seleccionar quais interrupes esto activas

Para que uma interrupo no se interrompa a si prpria, a sua chamada faz automaticamente DI logo, necessrio fazer EI durante a rotina
o EI s tem efeito depois de 1 instruo (para possibilitar os RETs)
V.Lobo @ EN

41 41

Instrues SIM e RIM


Microprocessador 8085 Microprocessador 8085

SIM - Set Interrupt Mask


Pe na mscara de interrupo o contedo do acumulador
?

N.U.

7.5 MSE 7.5 6.5 5.5

Mscaras (1=Disable) Mask Set Enable (1=Enable Interrupts) Reset do Flip-flop do RST 7.5

RIM - Read Interrupt Mask


Pe no acumulador a mscara de interrupo
? 7.5 6.5 5.5 IE 7.5 6.5 5.5

Mscaras (1=Disable) Interrupt Enable (1=Enable Interrupts) Interrupes pendentes (1=pendente)


V.Lobo @ EN

42 42

Pgina 21

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Prioridades
Microprocessador 8085 Microprocessador 8085

No caso de serem actuadas vrias interrupes simultaneamente, existe uma escala de prioridades entre elas:
os endereos mais baixos so menos prioritrios.

TRAP o mais prioritrio RST 5.5 menos prioritrio que 6.5 e estes dois menos que o 7.5 INTR o menos prioritrio Existem mtodos de controlo de prioridades mais sofisticados (ver 8259)
V.Lobo @ EN

43 43

ROTINAS DE INTERRUPO (INTERRUPT HANDLERS)


Microprocessador 8085 Microprocessador 8085

So assncronas
No possvel saber em que ponto do cdigo que vo ser chamadas logo torna-se necessrio salvaguardar o contexto: PC guardado automaticamente pelo CALL FLAGS e ACC tm de ser guardados quase sempre (PUSH PSW) Outras reg. s os que forem usados

Por convenincia so normalmente revectorizadas dos seus endereos originais


Vector de interrupes original no tem espao para o cdigo Os endereos do vector de interrupes so por vezes ROM

V.Lobo @ EN

44 44

Pgina 22

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

I/O Srie com o 8085


Microprocessador 8085 Microprocessador 8085

No 8085 as instrues RIM e SIM tambm controlam dois pinos de entrada/sada srie
Pinos SOD ( Serial Output Data ) e SID ( Serial Input Data ) SIM - Send data - Envia um bit do acumulador para SOD RIM - Read data - L o bit presente em SID para o acumulador

RIM
SID 7.5 6.5 5.5 IE 7.5 6.5 5.5

SIM
SOD SOE N.U. 7.5 MSE 7.5 6.5 5.5

Serial output Enable Bit lido de SID


V.Lobo @ EN

Bit a enviar para SOD

45 45

I/O Paralelo com o 8085


Microprocessador 8085 Microprocessador 8085

Espao de endereamento de Input/Output (I/O)


um espao de endereamento similar ao de memria, mas com apenas 256 endereos gerado com um endereo de apenas 8 bits. Usado para fazer IO com perifricos, sem gastar endereos de memria

IN addr8
L do porto IO indicado para o Acumulador

OUT addr8
Escreve do Acumulador para o porto de IO indicado

MVI A,23H ; pe o dado no Acc OUT 20 ;manda o dado para IO


V.Lobo @ EN

46 46

Pgina 23

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Instruo HLT (HALT)


Microprocessador 8085 Microprocessador 8085

Pe o microprocessador num estado de espera


Pra todo o processamento Apenas possvel sair deste estado com um pedido de interrupo A resposta a um pedido de interrupo extremamente rpida porque no necessrio esperar por nada

Exemplo de espera passiva: L1: HLT JMP L1 ; Espera que haja uma interrupo ; Volta para a instruo de espera

V.Lobo @ EN

47 47

Hardware e ligaes externas


Microprocessador 8085 Microprocessador 8085

Existem vrias embalagens


(packaging options)

Forma mais vulgar (disponvel no laboratrio)


DIP de 40 pinos Nveis TTL

Pinout do 8085:

X1 X2 Reset Out SOD SID TRAP RST 7.5 RST 6.5 RST 5.5 INTR ~INTA AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

Vcc (+5V) Hold Hlda Clock out ~Reset In Ready IO/~M S1 ~RD ~WR ALE S0 A15 A14 A13 A12 A11 A19 A9 A8

V.Lobo @ EN

48 48

Pgina 24

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Multiplexagem no Bus de Dados


Microprocessador 8085 Microprocessador 8085

A fim de poupar pinos no integrado, h pinos que ora servem para DADOS ora servem para ENDEREOS
No princpio do ciclo de leitura/escrita so usados para conter o endereo No fim do ciclo de leitura/escrita contm os dados gerado um pulso no pino ALE (Address Latch Enable) para separar os dois tipos de sinais
A8-A15 AD0-AD7 Latch ALE D0-D7 A0-A7 ALE Addr Data

8085

V.Lobo @ EN

49 49

Pinos de temporizao/reset/interrupts
Microprocessador 8085 Microprocessador 8085

X1, X2
Ligados a um cristal externo para gerar o clock de sistema. Montagem tpica:

CLK out
Clock de sistema para os perifricos

~Reset In
Mantido a 0 durante 4 ciclos de relgio fora uma reinicializao

Reset out
Usado para fazer reset aos outros componentes do sistema

TRAP, RST x.5, INTR, INTA


Interrupes
V.Lobo @ EN

50 50

Pgina 25

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Outros pinos
Microprocessador 8085 Microprocessador 8085

Vcc e Vss
Alimentao (5V cc) e massa

SID, SOD
Comunicaes srie

~RD, ~WR, IO/~M


Leitura ou Escrita em memria ou IO

S0, S1
Status (para ver o ciclo de BUS)

V.Lobo @ EN

51 51

Pino HOLD e HLDA


Microprocessador 8085 Microprocessador 8085

Por vezes necessrio usar o bus sem que este esteja controlado pelo P
Sistemas com vrios processadores Sistemas com perifricos/sub-sistemas inteligentes (para DMA por exemplo)

Funcionamento
Quando algum quer o BUS, gera um pedido de HOLD ao P Quando o P poder prescindir do BUS, pe as suas sadas em TriState, e activa o pino HLDA (Hold Acknowledge) HOLD HLDA 8085 52 52

V.Lobo @ EN

Pgina 26

Microprocessador 8085
V.Lobo, Escola Naval
v1.6 2007

Microprocessadores

Ciclos de Bus
Microprocessador 8085 Microprocessador 8085

Ciclos T e ciclos M H s 7 de ciclos mquina (M) no BUS:


OF, MR, MW, IOR, IOW, INA, BI

Operao de Leitura de um dado em memria (MR)


Diagrama temporal completo, e simplificado. Presena de Wait States

Operao de Escrita de um dado (MW) Diferenas entre OpFetch (OF), InterruptAck (INA), e MemRead Diferenas entre ciclos de I/O (IOW, IOR) e memria Ciclo Bus Idle (BI) Diagrama de Estados do 8085
V.Lobo @ EN

53 53

Pgina 27