




















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Aplicacoes de Microprocessadores
Tipologia: Trabalhos
1 / 28
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Maputo, 05 de Agosto de 2019
1.1 Arquitectura do 8085 Figura 1: Diagrama de blocos do microprocessador 8085
➢ 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.1 Unidades internas do 8085 ➢ Unidade 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.
➢ 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 ;
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
Figura 3: Pinagem do microprocessador 8085
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:
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
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
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