Vous êtes sur la page 1sur 9

Microprocessador 8085

V.Lobo, Escola Naval


v1.6 2007

Microprocessadores

INTRODUO
Microprocessador 8085 Microprocessador 8085

Arquitectura interna
D7-D0 B1-DIRECTIONAL DATA BUS

Microprocessador 8085 Microprocessador 8085

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

DATA BUS BUFFER/LATCH

(8 BIT) INTERNAL DATA BUS

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

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

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
DATA BUS CONTROL

DECIMAL ADJUST

TIMING AND CONTROL

INCREMENTER/DECREMENTER ADDRESS LATCH 16

INTERRUPT CONTROL

SERIAL PORT

HOLD CONTROL

CLOCKS

RESET OUT RESET IN

ADDRESS BUFFER A15-A0 ADRESS BUS

16

V.Lobo @ EN

1 1

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

Implementao em Silcio

REGISTOS
Microprocessador 8085 Microprocessador 8085 Microprocessador 8085 Microprocessador 8085

N de transistors: 6000

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)

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

A B D H
V.Lobo @ EN

C E L

4 4

REGISTOS

FLAGS
Microprocessador 8085 Microprocessador 8085 Microprocessador 8085 Microprocessador 8085

Program Counter Stack Pointer

Contm o endereo da prxima instruo a ser executada

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 S CY P AC
6 6

Contm o endereo do topo do stack ( gerido pelo P)

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

V.Lobo @ EN

Pgina 1

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

Microprocessadores

FLAGS
Microprocessador 8085 Microprocessador 8085

INSTRUCTION SET
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

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


Mover dados Aritmtica e lgica Controlo de fluxo Outras

V.Lobo @ EN

7 7

V.Lobo @ EN

8 8

MOVER DADOS
Microprocessador 8085 Microprocessador 8085

MOVER DADOS

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

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

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

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

MOVER DADOS
Microprocessador 8085 Microprocessador 8085

MOVER DADOS
Microprocessador 8085 Microprocessador 8085

LDA addr

(Load Acumulator)

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

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

LXI rp,data(16bits)

(load pair imediate) 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 (exchange)

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

XCHG

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

Troca o contedo de HL com DE

V.Lobo @ EN

11 11

V.Lobo @ EN

12 12

Pgina 2

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

Microprocessadores

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

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

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

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

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

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 ?

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

Exemplos

V.Lobo @ EN

13 13

V.Lobo @ EN

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

DAD rp
adicionar o par rp ao par HL DAD BC

DCR r
Decrementar o registo r

DAA
Corrigir uma soma /subtraco em BCD DAA

DCR M
Decrementar o contedo da posio apontada por HL

INR r
incrementar o registo r INR B

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 ?

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

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

V.Lobo @ EN

16 16

OPERAES ARITMTICAS
Microprocessador 8085 Microprocessador 8085

OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085

OPERAES

DE COMPARAO

ANA r
AND lgico entre o acumulador e o registo r

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

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

CMP r
comparar o acumulador com o registo R

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 ?

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

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

V.Lobo @ EN

V.Lobo @ EN

18 18

Pgina 3

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

Microprocessadores

OPERAES LGICAS
Microprocessador 8085 Microprocessador 8085

INSTRUES DE CONTROLO DE FLUXO


Microprocessador 8085 Microprocessador 8085

ORA r
OR lgico entre o acumulador e o registo r

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

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

JMP

addr 16

Salta para o endereo dado

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

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

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 ?

JZ JNC JC

addr16 addr 16 addr 16


20 20

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

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


V.Lobo @ EN

V.Lobo @ EN

INSTRUES DE CONTROLO DE FLUXO


Microprocessador 8085 Microprocessador 8085

ROTAES
Microprocessador 8085 Microprocessador 8085

JPE JPO JP JM PCHL

addr 16 addr 16 addr 16 addr 16

Salta se P=1 (parity even)

RLC

CY

MSB

LSB

Rotate (acumulator) left to carry CY MSB LSB

Salta se P=0 (parity odd)

RRC

Rotate right to carry

Salta se S=0 (positive)

RAL

CY

MSB

LSB

Salta se S=1 (minus)

Rotate left through carry

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


V.Lobo @ EN

RAR

CY

MSB

LSB

Rotate right trough carry 22 22

21 21

V.Lobo @ EN

NEGAES E SET
Microprocessador 8085 Microprocessador 8085

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

CMA
Complementa o acumulador

FAZER DIAGRAMA DE BLOCOS OU DIAGRAMA DE ESTADOS


Definir as sub-tarefas bsicas e a interligao entre elas

CMC
Complementa a flag carry

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

STC
Set carry flag ( faz cy=1)

V.Lobo @ EN

23 23

V.Lobo @ EN

24 24

Pgina 4

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

Microprocessadores

METODOLOGIA EM ASSEMBLER
Microprocessador 8085 Microprocessador 8085

EXEMPLOS:
Microprocessador 8085 Microprocessador 8085

FAZER FLUXOGRAMA DETALHADO


Para cada bloco fazer um fluxograma detalhado

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

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

V.Lobo @ EN

SUB - ROTINAS
Microprocessador 8085 Microprocessador 8085

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

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

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

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

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

27 27

V.Lobo @ EN

28 28

Calls condicionais
Microprocessador 8085 Microprocessador 8085

PASSAGEM DE PARMETROS
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

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

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

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

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

2000 A 2A00 2000

29 29

V.Lobo @ EN

30 30

Pgina 5

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

Microprocessadores

Exemplo de parmetros
Microprocessador 8085 Microprocessador 8085

Passagem de Parametros
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

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

DOCUMENTE ESTAS ROTINAS !

V.Lobo @ EN

31 31

V.Lobo @ EN

32 32

Documentao das Sub-rotinas


Microprocessador 8085 Microprocessador 8085

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.

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


Endereo do RST = 8xn do RST


RST0 CALL 0000 RST1 CALL 0008 RST2 CALL 0010

Ver exemplos de rotinas do monitor do SDK85


33 33

V.Lobo @ EN

V.Lobo @ EN

34 34

VANTAGENS DOS SOFT.INT.


Microprocessador 8085 Microprocessador 8085

INTERRUPES POR HARDWARE


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

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

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

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


V.Lobo @ EN

V.Lobo @ EN

Pgina 6

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

Microprocessadores

Interrupes directas
Microprocessador 8085 Microprocessador 8085

Interrupes atravs de INTR


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

Pino RST 5.5 RST 6.5 RST 7.5

Endereo

Tipo de actuao

2CH actuado por nvel 34H actuado por nvel


Pedido de interrupo Aceitao do pedido Envia o opcode da instruo a executar 37 37
V.Lobo @ EN

INTR 8 INTA 8085 D0-D7

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

TRAP (RST 4.5)


V.Lobo @ EN

Exemplo: .

38 38

Exemplo simples
Microprocessador 8085 Microprocessador 8085

Mscara de interrupes
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 Prog.Pincipal inst.1 inst.2 inst.3 ... ... ... Rotina de interrupo Endereo Contedo 002C INC B 002D RET

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

Interruptor

Rst 5.5 8085

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

8085 39 39
Trap
V.Lobo @ EN

Monoestvel ou Contador

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

40 40

Mscara de interrupes
Microprocessador 8085 Microprocessador 8085

Instrues SIM e RIM


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

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

Podemos activar apenas ALGUMAS interrupes:


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

RIM - Read Interrupt Mask


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

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) 41 41
V.Lobo @ EN

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

V.Lobo @ EN

Pgina 7

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

Microprocessadores

Prioridades
Microprocessador 8085 Microprocessador 8085

ROTINAS DE INTERRUPO (INTERRUPT HANDLERS)


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.

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

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)
43 43
V.Lobo @ EN

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

I/O Srie com o 8085


Microprocessador 8085 Microprocessador 8085

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

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

IN addr8
L do porto IO indicado 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

OUT addr8
Escreve do Acumulador para o porto de IO indicado

Serial output Enable Bit lido de SID


V.Lobo @ EN

Bit a enviar para SOD

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

45 45

V.Lobo @ EN

46 46

Instruo HLT (HALT)


Microprocessador 8085 Microprocessador 8085

Hardware e ligaes externas


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

Existem vrias embalagens


(packaging options)

Forma mais vulgar (disponvel no laboratrio)


DIP de 40 pinos Nveis TTL

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

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

47 47

V.Lobo @ EN

48 48

Pgina 8

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

Microprocessadores

Multiplexagem no Bus de Dados


Microprocessador 8085 Microprocessador 8085

Pinos de temporizao/reset/interrupts
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

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

8085

49 49

TRAP, RST x.5, INTR, INTA


Interrupes 50 50

V.Lobo @ EN

V.Lobo @ EN

Outros pinos
Microprocessador 8085 Microprocessador 8085

Pino HOLD e HLDA


Microprocessador 8085 Microprocessador 8085

Vcc e Vss
Alimentao (5V cc) e massa

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)

SID, SOD
Comunicaes srie

~RD, ~WR, IO/~M


Leitura ou Escrita em memria ou IO

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

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

V.Lobo @ EN

51 51

V.Lobo @ EN

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


V.Lobo @ EN

Pgina 9

Vous aimerez peut-être aussi