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

Arquitectura e principio de funcionamento do microprocessador 8085, Trabalhos de Engenharia Eletrônica

Aplicacoes de Microprocessadores

Tipologia: Trabalhos

2019

Compartilhado em 26/08/2019

artur-marrima-2
artur-marrima-2 🇧🇷

4

(1)

2 documentos

1 / 28

Toggle sidebar

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

Não perca as partes importantes!

bg1
Departamento de Rádio
Curso de Engenharia Electrónica e de Telecomunicações
3RA
Trabalho de Pesquisa
Cadeira: Aplicação dos Microprocessadores II
Tema: Microprocessador Intel 8085
Nomes:
Artur Junior Bambo Marrima
Celsa Paulo Massingue
Henriques Clementina Tivane
Larcen Mutica Mendonça
Olívia António Sitoe
Docente:
Eng. Elso Guilengue
Maputo, 05 de Agosto de 2019
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Pré-visualização parcial do texto

Baixe Arquitectura e principio de funcionamento do microprocessador 8085 e outras Trabalhos em PDF para Engenharia Eletrônica, somente na Docsity!

Departamento de Rádio

Curso de Engenharia Electrónica e de Telecomunicações

3RA

Trabalho de Pesquisa

Cadeira: Aplicação dos Microprocessadores II

Tema: Microprocessador Intel 8085

Nomes:

❖ Artur Junior Bambo Marrima

❖ Celsa Paulo Massingue

❖ Henriques Clementina Tivane

❖ Larcen Mutica Mendonça

❖ Olívia António Sitoe

Docente:

❖ Eng. Elso Guilengue

Maputo, 05 de Agosto de 2019

Indice

  • Introducao
  • Objectivos:
    • Geral
    • Específicos
    1. Arquitectura e princípio de funcionamento do microprocessador
    • 1.2 Principais características
    1. Unidades internas e registadores do
    • 2.1 Unidades internas do
    • 2.2 Registadores do
    1. Estado do ciclo de máquina.......................................................................................
    1. Pinagem do
    1. Função de cada pino
    1. Instruções do microprocessador
    • 6.1 Classificação da lista de instruções
    • 6.1.1 Operações de transferência de dados (copia)
    • 6.1.2 Operações aritméticas
    • 6.1.3 Operações lógicas
    • 6.1.4 Operações de salto
    • 6.1.5 Operações de controle da maquina
    • 6.2 Simbologia das Instruções
    • 6.3 Modos de Endereçamento
    • 6.5 Instruções de Desvio
    1. Programação do microprocessador
  • ANEXOS
  • Referências Bibliográficas
  • Conclusão

1. Arquitectura e princípio de funcionamento do microprocessador

1.1 Arquitectura do 8085 Figura 1: Diagrama de blocos do microprocessador 8085

1.2 Principais características

➢ Microprocessador de 8 bits de propósito geral ( com 6. 200 transístores); ➢ Opera com +5V e GND. O 8080, seu antecessor, opera com +2V, +5V e - 5V; ➢ 100% Compatível em software com o 8080A; ➢ Conjuntos de instruções com 74 instruções. Estas 74 instruções resultam num total de 246 opcodes (código de operação) distintos; ➢ Instruções do 8085 possuem 1,2 ou 3 bytes; ➢ Há 2 registadores temporários de 8 bits (W e Z) não aparentes ao programador ( não endereçável); ➢ 8 linhas de dados: barramento bidireccional e com 3S ( thee state); ➢ 16 linhas de endereço; permite endereçamento de ate 64 kbytes = 65. posições de memória;

➢ Barramento de dados multiplexado com parte baixa do barramento de endereco ( o hardware deve conter um lach ( exemplo: 74373) para armazenar os enderecos baixos: A0 a A7); ➢ Possui pino de selecção de entrada (I) e saída (O) – ( IO/M); ➢ Possui gerador de clock interno ( é necessário apenas um cristal externo juntamente com dois capacitares); ➢ Reset do 8085: PC em 0000h; Flip-Flop IE ( interrupt Enable) em 0 ( indicando interrupções desabilitadas); HLDA em 0; demais registadores com valores indeterminados; interrupções RST 5.5 , RST 6.5, RST 7,5 mascaradas ; SOD em

2. Unidades internas e registadores do 8085

2.1 Unidades internas do 8085Unidade controle de interrupção Essa unidade é responsável pelo tratamento das 5 instruções externas do microprocessador 8085. Essas instruções são vectoradas, o que significa que há um endereço fixo, pré-definido, para cada uma ( RST n salta para a posição de memoria 8 vezes n: RST 5.5 = 44 10 = 2ch; RST 6.5 = 34h; RST 7.5 = 3ch). As interrupções RST 5.5 , RST 6.5 e RST 7,5 podem ser mascaradas, ou seja, elas podem ser bloqueadas via "software". Já a interrupção TRAP não pode ser bloqueada e é a interrupção de maior prioridade do 8085. Ela normalmente é activada quando há problemas de falta de energia, para um desligamento seguro do microprocessador. A interrupção INTR, na verdade, é um canal para expansão da capacidade de interrupção. Através desse canal um CI especial ( exemplo: CI 8259) é conectado ao 8085, de modo a permitir um numero maior de interrupções. O sinal INTA⁄ faz parte da comunicação entre o 8085 e o CI usado para expansão da capacidade de interrupção. ➢ Unidade Controle de entrada /saída serial. É através dessa unidade que o microprocessador recebe e envia dados de forma serial, ou seja, bit a bit, ao invés de um byte por vez.

  • O pino SID (serial Imput Data) é usado para a entrada de dados de forma serial;
  • O pino SOD (serial Output Data) é usado para a saída de dados de forma serial. ➢ Unidade Temporização de controlo

Flip-Flop dos flags É também conhecido como registador F (de flags), ou registador PSW (programa Status Word) É um registador de 8 bites ( mas somente 5 bits são utilizados) que armazena o estado da ultima operação realizada na ULA. São 5 as flags do 8085, conforme mostrado a seguir: S = Flag de Sinal - assume o valor 1 quando o resultado de uma operação é negativo; Z = Flag de Zero - assume o valor 1 quando o resultado de uma operação é zero; AC = Auxiliar de Carry = flag usada como auxiliar de transporte. Assume valor 1 quando há transporte do; bit 3 para o bit 4. É usada em operações BCD P = Flag de Paridade = assume valor 1 quando há um número de par de algarismos 1 no acumulador; CY = Flag de Carry (transporte) = assume valor 1 quando há transporte do bit 7. ➢ Registador de Instrução (IR - Instruction Register) É um registador de 8 bits que armazena o primeiro byte da instrução (OPCODE), ou seja, o conteúdo da memória apontado (endereçado) pelo registado PC. ➢ Descodificador de Instrução e Codificador de Ciclo de Máquina É o registador responsável pela decodificação de cada instrução e de definição dos ciclos de máquina que serão controlados pela unidade de controlo. ➢ Registadores B, C, D, E, H e L São registadores de propósito gerais de 8 bits e que podem ser combinados aos pares para formar registadores par ( rp : register pair) para armazenar endereços (16 bits). Os pares formados são: BC , DE e HL. O primeiro registador de cada par armazena o byte mais significativo, isto é, B, D e H. ➢ Registador par HL Registador usado como apontador de dados na memória RAM, à semelhança do registador PC, que aponta instruções e dados na memória. O registador HL é usado implicitamente em várias instruções e é referenciado nessas instruções “M”, de Memory.

Apontador de Pilha O registador apontador de pilha SP (Stack Pointer) é um registador de 16 bits usado como apontador de dados numa região especial da memória RAM, denominada de Pilha ( Stack ). Esse espaço de memória é especialmente destinado a guardar temporariamente informações de registadores que serão usados em outra tarefa. A ordenação de elementos na pilha é tal que somente um dado pode ser acessado num determinado instante e a última palavra digital que entra é a primeira que sai (Lista LIFO - L ast I n F irst O ut). O apontador de pilha (registador SP) aponta sempre para o topo desta pilha (top of stack),ou seja, para o último dado que foi armazenado. Os dados normalmente armazenados são endereços de chamadas/retornos de sub-rotina e endereços de retorno de interrupções, que automaticamente armazenados pelo 8085 e ainda outros dados que podem ser armazenados pelo programador usando a instrução PUSH. Posteriormente esses dados são retirados da pilha usando a instrução POP.Funcionamento da Pilha Como já foi dito anteriormente, a Pilha é uma região da memória RAM, definida pelo usuário, para guardar valores que serão usados posteriormente. Assim, o usuário pode guardar o conteúdo de qualquer registador (dois a dois: A e Flags, B e C, D e E, H e L) na pilha e o microprocessador guarda automaticamente os endereços de retorno de sub- rotinas comuns e de sub-rotinas de interrupções. A seguir é ilustrada a região da memória definida como Pilha (Stack). Observações: a) O conteúdo guardado na pilha é sempre de 16 bits. Assim, o microprocessador normalmente guarda o conteúdo de PC , que já é de 16 bits, mas o usuário normalmente guarda o conteúdo de registadores de 8 bits, que então são associados 2 a 2; b) Os registadores duplos que podem ser guardados na pilha são PSW (= A + Flags), B (= B + C), D (= D + E) e H (= H + L); c) Para guardar o conteúdo de um desses registadores duplos usa-se a instrução PUSH rp; d) Para recuperar o conteúdo que foi guardado na pilha usa-se a instrução POP rp ;

IO/M S1 S0 ESTADO

0 0 1 escrita em memória 0 1 0 leitura de memória 0 1 1 busca de opcode 1 0 1 escrita em porta (instrução OUT porta) 1 1 0 leitura de porta (instrução IN porta) 1 1 1 reconhecimento de interrupção (INTA) 3S 0 0 HLT (parada: sai com INT, HOLD ou RESET 3S X X Hold 3S X X Reset

4. Pinagem do 8085

Figura 3: Pinagem do microprocessador 8085

5. Função de cada pino

Pinos Função Pinos Função 1 2 Pinos de conexão do cristal. X pode ser uma onda quadrada. Nesse caso, X2 pode ficar aberto.

Pino de alimentação. Vcc = +5 V 3 Indicas aos periféricos que a CPU está sendo ressetada. 39 Requerimento de barramento. Activo alto. 4 Pino de saída de dado serial. 38 Reconhecimento de HOLD. Indica que pedido foi aceito. 5 Pino de entrada de dado serial. 37 Saída de clock para os demais chips do sistema 6 Pino da interrupção de maior prioridade. Não mascarável. 36 Reset do sistema. PC = 0000 h. Interrupções com máscara. 7 Pino da interrupção que desvia para o endereço 3C h. 35 1 → memória ou perif. prontos para acesso. 0 → wait 8 Pino da interrupção que desvia para o endereço 34 h. 34 Indica se a operação é de entrada/saída ou com memória 9 Pino da interrupção que desvia para o endereço 2C h. 33 Com S0 e IO/M\ indicam estados do ciclo de máquina 10 Pino usado para expandir a capacidade de interrupção. 32 Sinal que habilita periférico ou memória para leitura 11 Reconhecimento de pedido de interrupção. 31 Sinal que habilita periférico ou memória para escrita 12 13 14 15 Byte menos significativo do endereço e barramento de dados. 30 Sinal para carga da parte baixa do endereço (no latch 74373) 29 Com S1 e IO/M\ indicam estados do ciclo de máquina

Tipos Exemplos Entre os registadores Copia os conteúdos do registado B para o registador D Byte de dado especifico para um registador ou local de memória. Carrega registador B com o byte de dado 32H Entre um local de memória e registador. Do local de memória 2000H para o registador B Entre um dispositivo E/S e o acumulador. Da entrada de teclado para o acumulador. 6.1.2 Operações aritméticas Essas instruções realizam operações aritméticas como a adição, subtracção, incremento e decremento. Adição – qualquer número de 8-bit, ou os conteúdos dos registadores ou os conteúdos de algum local de memória podem ser adicionados ao conteúdo do acumulador e a soma eh armazenada no acumulador. Dois registadores de 8-bits não podem ser directamente adicionados (exemplo: o conteúdo do registador B não pode ser directamente adicionado ao registador C). A instrução DAD é uma exceção; este adiciona um dado de 16 - bits directamente nos registadores pares. Subtracção – qualquer número de 8-bits, ou os conteúdos dos registadores ou os conteúdos de algum local de memória podem ser subtraídos do conteúdo do acumulador e o resultado armazenado no acumulador. A subtracção é realizada em complemento de 2, se o resultado for negativo, este é expressado em complemento de 2. Nesta operação também, dois registadores não podem directamente ser subtraídos. Incremento/Decremento- o conteúdo de um local de memória de 8-bits pode ser incrementado ou decrementado em. Do mesmo modo, o conteúdo de 16-bits de um par de registadores (como BC) pode também ser incrementado ou decrementado em 1. Essas operações de incremento e decremento diferem das operações de adição e subtracção de um jeito muito importante; elas podem ser realizadas sobre qualquer registador ou local de memória.

6.1.3 Operações lógicas Estas instruções realizam várias operações lógicas com o conteúdo dos acumuladores. AND, OR & EXCLUSIVE-OR : qualquer número de 8-bits, ou os conteúdos dos registadores ou os conteúdos de algum local de memória pode ser logicamente sofrer uma operação AND, OR ou EXCLUSIVE-OR com o conteúdo do acumulador. O resultado é armazenado no acumulador. Rotate : cada bit no acumulador pode ser movido tanto para a esquerda assim como para a direita para a próxima posição. Compare : qualquer número de 8-bits, ou os conteúdos dos registadores ou os conteúdos de algum local de memória pode ser comparado para igualdade, maior do que, ou menor do que, o conteúdo presente no acumulador. Complement : o conteúdo do acumulador pode ser complementado. Todos os 0s são substituídos por 1s e todos os 1s substituídos por 0s. 6.1.4 Operações de salto Este grupo de instruções altera a sequência da execução do programa tanto condicionalmente ou incondicionalmente. Jump – saltos condicionais são um aspecto importante em processos de tomada de decisão na programação. Estas instruções testam uma certa condição (ex: zero ou carry flag) e alteram a sequência do programa quando a condição é cumprida. Para além disso, a lista de instruções do 8085 possui uma instrução chamada de salto incondicional. Call, Return and Restart - estas instruções mudam a sequência do programa ou chamando uma sub-rotina ou retornando de uma sub-rotina. A chamada condicional (Call) e as instruções de retorno (Return) podem também testar as condições dos flags. 6.1.5 Operações de controle da maquina Estas instruções controlam as funções da máquina como Halt (parar), Interrupt (interrupção) ou do nothing (não realize nada).

➢ Para transferir o conteúdo do registador B para o registador A, o mnemónico da instrução é MOV A,B. A cada mnemónico corresponde um código de operação (opcode) em hexadecimal. No caso dessa instrução é 78 h. ➢ Para transferir o conteúdo do registador E para o registador D, o mnemónico da instrução é MOV D,E. O opcode é 53 h. Exemplo 2: Instrução : LDA addr Indicação simbólica : (A) ← ((byte 3)(byte 2)) Significado: O conteúdo da memória, cujo endereço é especificado nos bytes inferior (byte 2) e superior (byte 3), é transferido (copiado) para o registrador A. É uma instrução de 3 bytes (opcode + byte 3 + byte 2). a) Para transferir o conteúdo do endereço 234B h da memória, a instrução e o código da instrução seriam: LDA 234B h; Opcode: 3A 4B 23 (O conteúdo do byte menos significativo é digitado primeiro). 6 .3 Modos de Endereçamento As instruções do 8085 fazem referência aos dados de forma explícita ou implícita. Há 4 maneiras distintas de se fazer esta referência: Imediato : A instrução contém o dado no byte ou bytes seguintes ao Opcode. Exemplos: MVI r, dado8 = move o dado especificado para o registador r ( r ) ← (byte 2). ADI dado8 = adiciona o dado especificado ao acumulador (A) ← (A) + (byte 2) Directo : O 2o e o 3o bytes da instrução contém o endereço da posição de memória onde se encontra o dado. Exemplo:

LDA addr = carrega o acumulador com o dado do endereço indicado (A) ← ((byte 3)(byte 2)) REGISTRO : A instrução especifica o registador ou o par de registadores onde o dado está armazenado. Exemplo: MOV r1, r2 = move conteúdo do registador r2 para o registador r1 (r1) ← (r2) ADD r = adiciona o conteúdo do registador r ao acumulador (A) ← (A) + ( r ) Indirecto por Registro : A instrução especifica o registador par (rp) que contém o endereço da posição de memória onde o dado está armazenado. Exemplo: MOV r, M = move para o registador r o conteúdo da memória localizado na posição indicada pelo para HL ( r ) ← ((H)(L)) 6 .4 Grupos de Instruções As instruções do 8085 são distribuídas em 5 grupos, cujas características são dadas a seguir:

  1. Grupo de Transferência de Dados - Move dados entre registadores ou posições de memória e registadores. Inclui movimentos, cargas, armazenamentos a troca de dados. Exemplo: MVI M, dado8 = move o dado especificado para a posição de memória indicada pelo registador par HL. ((H)(L)) ← (byte 2)
  2. Grupo Aritmético - Adições, subtracções, incrementos, ou decrementos de dados em registadores ou memória. Exemplo: SUB r = o conteúdo do registador r é subtraído do acumulador. O resultado é guardado de volta no acumulador (A) ← (A) - ( r )
  3. Grupo Lógico - ANDs, ORs, XORs, comparações, rotações, ou complementos de dados em registadores ou entre memória e um registador. Exemplo: ANA r = os conteúdos do acumulador e do registador r são submetidos ao operador

e) As instruções de desvio condicional examinam o estado (status) de uma das quatro flags (Z, S, P e CY), para verificar se o desvio indicado deve ser executado. As condições que podem ser especificadas são dadas a seguir: Instruções possíveis: JNZ, JZ, JNC, JC, JPO, JPE, JP e JM

7. Programação do microprocessador 8085

Exemplo de Programa em Assembly do 8085 Escrever em linguagem assembly um programa que adicione um numero de 8 bits guardados nos enderecos 2050 e 2051 no microprocessador 8085. Tomemos como o endereco de partida do programa o endereco 2000. Algoritimo

  1. primeiro carregamos o primeiro número do local de memória 2050 para o acumulador.
  2. Movemos o conteúdo do acumulador para registo o H.
  3. Carregamos o segundo número do local de memória 2051 para o acumulador.
  4. Em seguida, adicionamos o conteúdo do Registro B e do acumulador usando a instrução “ADD” e armazenando o resultado em 3050
  5. O carry gerado é recuperado usando o comando “ADC” e é armazenado no local da memória 3051. MEMORY ADDRESS MNEMONICS COMMENT 2000 LDA 2050 A<-[2050] 2003 MOV H, A H<-A

2004 LDA 2051 A<-[2051]

2007 ADD H A<-A+H

2006 MOV L, A L←A

2007 MVI A 00 A←

2009 ADC A A←A+A+carry 200 ª MOV H, A H←A 200B SHLD 3050 H→3051, L→ 200E HLT Explicação/comentários

  1. LDA 2050 move o conteúdo do local de memória 2050 para o acumulador.
  2. MOV H, A copia o conteúdo do Acumulador para registar H em A.
  3. LDA 2051 move o conteúdo da localização da memória 2051 para o acumulador.
  4. ADD H adiciona conteúdo de A (acumulador) e registador H (F9). O resultado é armazenado no próprio A. Para todas as instruções aritméticas, A é por padrão um operando e A armazena o resultado também
  5. MOV L, A copia o conteúdo de A (34) para L
  6. MVI A 00 move dados imediatos (ou seja, 00) para A
  7. ADC A adiciona conteúdo de A (00), conteúdo de Registro especificado (isto é, A) e transporte (1). Como o ADC também é uma operação aritmética, A é, por padrão, um operando e A armazena o resultado também
  8. MOV H, A copia o conteúdo de A (01) para H
  9. SHLD 3050 move o conteúdo do registador L (34) na localização da memória 3050 e o conteúdo do registador H (01) na localização da memória 3051
  10. HLT i nterrompe qualquer execução adicional