Você está na página 1de 43

Introdução aos Microprocessadores e

Microcontroladores

Automação de Sistemas Mecânicos I


Engenharia Mecânica
Objetivos
• Descrever a função e o modo de operação de cada um dos cinco
elementos presentes na organização de computadores ou sistemas com
processadores digitais;
• Entender que um computador repete continuamente operações de
busca e execução;
• Entender a diferença entre microprocessador, microcomputador e
microcontrolador;
• Analisar os ciclos de busca e execução durante a execução de um
programa em linguagem de máquina;
• Entender a função operacional dos diferentes tipos de barramentos e
seus sinais num microcomputador;
• Citar as principais funções executadas por um microprocessador;
• Descrever os diferentes tipos de palavras de computadores;
• Atualizar seus conhecimentos através do aprendizado de detalhes e
conceitos avançados de sistemas baseados em microprocessadores.
Introdução
• Microprocessadores, microcomputadores e microcontroladores
revolucionaram a indústria eletrônica e nosso dia-a-dia;
• O tamanho e custo desses sistemas foram dramaticamente reduzidos
enquanto sua versatilidade, potência e velocidade de processamento
aumentaram na mesma proporção;
• Será dado aqui maior ênfase em microcomputadores, porém estes
conceitos se aplicam a qualquer tipo de sistema computadorizado;
• O primeiro microprocessador foi fabricado pela Intel no início dos
anos 70 e trabalhava com 4 bits (Intel 4004);
• Nessa mesma época foram lançados os processadores de 8 bits: 8008,
8080, 8085, 6800, 6502, Z80, etc;
• As aplicações destes microprocessadores se dividiram em duas áreas:
– Computadores pessoais – a arquitetura desses sistemas não sofreram
mudanças substânciais deste seus primórdios;
– Utilização em sistemas de controle embarcados – aplicação coberta pelos
modernos mircrocontroladores.
O que é um computador digital?

• É uma combinação de dispositivos digitais e circuitos que executam


uma seqüência de operações programadas com um mínimo de
intervenção humana.
• A seqüência de operações é denominada programa;
• Um programa é um conjunto de instruções codificadas que está
armazenada na memória interna do computador juntamente com todos
os dados que o programa necessita;
• Quando o computador recebe um comando para executar o programa,
ele executa as instruções na ordem em que as mesmas estão
armazenadas em sua memória até que o programa seja concluído;
• O programa é executado em velocidades extremamente altas.
Como um computador raciocina?

• Computadores não pensam!


• O programador de computadores elabora um programa com instruções
e dados que especificam cada detalhe de tudo que deve ser feito, como
fazer, e quando fazer;
• O computador é simplesmente uma máquina de alta velocidade que
pode manipular dados, resolver problemas, e tomar decisões, tudo sob
o controle de um programa;
• Se o programador cometer algum erro no programa ou inserir dados
errôneos, o computador produzirá resultados errôneos.
• Um ditado popular no campo da computação diz “entra lixo / saí lixo”;
O agente secreto 89
• O agente secreto 89 está tentando descobrir o número da pista de
aterrissagem onde um conhecido terrorista irá descer. Seu contato
lhe disse que esta informação está localizada numa série de caixas
postais. Para garantir que ninguém mais obtenha esta informação,
ela foi espalhada em 10 caixas postais diferentes. Seu contato lhe
deu 10 chaves com as seguintes instruções:
1. A informação em cada caixa postal está escrita em código;
2. Abra a caixa 1 primeiro e execute a instrução que está lá;
3. Continue com as demais caixas mantendo a seqüência a menos que seja
instruído para não o fazer;
4. Uma das caixas contém informações que irá fazer qualquer um perder
a direção exceto o Agente 89
O agente secreto 89
O agente secreto 89
• Analogia com sistemas computacionais:
– Caixas postais são como memórias num computador, onde instruções e
dados são armazenados;
– As caixas postais de 1 a 6 contém instruções que devem ser executadas
pelo agente secreto, e as caixas 8, 9 e 10 contém os dados requeridos pelas
instruções;
– Os números em cada caixa são como endereços de locações de memórias;
– Há três classes diferentes de instruções nas caixas de 1 a 6:
• As caixas 1, 2, 3, e 5 são instruções que pedem operações aritméticas;
• A caixa 4 contém uma instrução de tomada de decisão chamada de salto
condicional ou desvio condicional que depende do resultado das operações
aritméticas anteriores;
• A caixa 6 contém uma simples instrução de controle que não necessita de
dados e não se refere a nenhum outro endereço. Esta instrução de retorno diz
ao agente que o procedimento terminou (o programa foi concluído).
– Cada instrução aritmética ou de salto condicional possui duas partes: uma
operação e um endereço. Esses dados são geralmente chamados de
operando, e seu endereço é chamado de endereço do operando. A
instrução na caixa 5 é um caso especial no qual o endereço de operando
não é especificado. Ao invés disso o próprio operando é fornecido.
Organização básica de sistemas
computadorizados
• Todo computador contém cinco elementos ou unidades essenciais:
– Unidade Lógica Aritmética (ULA);
– Unidade de memória;
– Unidade de controle;
– Unidade de entrada;
– Unidade de saída.
Unidade Lógica Aritmética

• Área onde as operações lógicas e aritméticas são executadas sobre os


dados;
• O tipo de operação a ser executada é determinada por sinais vindos da
unidade de controle (seta 1);
• Os dados que serão processados pela ULA podem vir tanto da unidade
de memória (seta 2) quanto da unidade de entrada (seta 3);
• Os resultados das operações executadas pela ULA podem ser
transferidos tanto para a unidade de memória (seta 4) quanto para a
unidade de saída (seta 5).
Unidade de Memória

• A memória armazena grupos de dígitos binários (palavras) que podem


representar instruções (programa) que o computador deve executar e
dados que serão trabalhados pelo programa;
• A memória também serve como local de armazenamento de resultados
intermediários e finais de operações aritméticas.
• A operação da memória é controlada pela unidade de controle, que
envia sinais para operações de leitura e/ou escrita.
• Uma dada locação na memória é acessada pela unidade de controle
que fornece o código de endereço adequado.
• Informações vindas da ULA ou da unidade de entrada podem ser
escritas na memória sob o controle da unidade de controle.
• Informações podem ser lidas da memória e transmitidas para a ULA ou
para a unidade de saída.
Unidade de Entrada

• Consiste de todos os dispositivos utilizados para adquirir informações


e dados externos ao computador e os colocar na unidade de memória
ou na ULA.
• A unidade de controle determina para onde as informações na entradas
devem ser enviadas.
• A unidade de entrada é utilizada para carregar programas e dados para
a unidade de memória na inicialização do computador.
• Esta unidade também é utilizada para carregar dados na ULA a partir
de dispositivos externos durante a execução do programa.
• Dispositivos de entradas mais comuns são: teclados, chaves seletoras,
modems, leitores de cartões magnéticos, unidades de disco, e
conversores de sinais analógicos para digital (ADCs).
Unidade de Saída

• Consiste de dispositivos utilizados para transferir dados e informações


do computador para o mundo externo.
• O dispositivo de saída é selecionado pela unidade de controle e pode
receber dados da memória ou da ULA;
• Os dados são então colocados em uma forma apropriada para uso
externo.
• São exemplos comuns de dispositivos de saída: LEDs, luzes
indicativas, impressoras, unidades de disco e fita, monitores de vídeo,
e conversores de sinais digitais para analógicos (DACs).
• Quando um computador executa um programa, em geral os resultados
ou sinais de controle gerados devem ser apresentados ao mundo
externo.
Interfaces
• Os dispositivos que se ligam as unidades de entrada e saída são
chamados de periféricos pelo fato de serem externos ao restante do
computador.
• O aspecto mais importante dos periféricos envolve o interfaceamento.
• O interfaceamento é definido especificamente como transmissão de
informação digital entre o computador e seus periféricos de uma forma
compatível e sincronizada.
• Muitos dispositivos de entrada/saída não são diretamente compatíveis
com o computador devido a diferenças em algumas características
como velocidade de operação, formato de dados (ex. BCD, ASCII,
binário), modo de transmissão de ddos (ex. serial, paralelo), e nível de
sinal lógico.
• Tais dispositivos de E/S precisam de circuitos de interface especial que
os permitam comunicar com as partes de controle, memória e ULA de
um computador.
Unidade de Controle
• Dirige a operação de todas as outras unidades através de sinais de
temporização e controle.
• Contém circuitos lógicos e de temporização que geram os sinais
necessários para executar cada instrução em um programa.
• A unidade de controle busca uma instrução na memória enviando um
endereço e um comando de leitura para a unidade de memória.
• A instrução (palavra) armazenada na memória é então transferida para
a unidade de controle.
• Esta instrução (código binário) é decodificada pelos circuitos lógicos
da unidade de controle para determinar qual instrução está sendo
chamada.
• A unidade de controle usa esta informação para enviar sinais
adequados para as demais unidades de forma a executar a operação
especificada.
Unidade de Controle
• A seqüência de busca de uma instrução (código) e execução da
operação indicada é repetida continuamente pela unidade de controle.
• O ciclo só termina quando o computador é desligado ou a tecla RESET
é ativada.
• RESET sempre faz com que o computador busque sua primeira
instrução do programa, geralmente no endereço 0000.
• O ciclo de execução pode ser diferente dependendo do tipo de
instrução.
Unidade Central de Processamento (CPU)

• Compreende a unidade de controle e a ULA.


• Num microcomputador a CPU é o microprocessador.
• A CPU também contém um conjunto de registradores que
desempenham funções especiais.
• Estes registradores podem armazenar dados por curtos intervalos de
tempo dentro da CPU e minimizar o acesso a memória externa.
Elementos básicos de um µC
• Diferença entre microcomputador (µC) e microprocessador (µP);
• Um microcomputador possui diversos elementos, inclusive um
microprocessador.
Elementos básicos de um µC
• A unidade de memória mostra dispositivos RAM e ROM;
– RAM  usada para armazenar programas e dados, que poderão ser
alterados durante a operação em curso. Também é utilizada para
armazenar resultados intermediários e finais de operações executadas por
um programa.
– ROM  armazena instruções e dados que não são alterados e não podem
ser perdidos após um desligamento. Armazena o programa bootstrap que o
µC executa quando é energizado, ou pode armazenar uma tabela de
códigos ASCII necessários para decodificar dados que serão enviados a
monitores ou impressoras.
• As seções de entrada e saída contém os circuitos de interface
necessários para permitir a comunicação dos periféricos com o restante
do computador.
O Microprocessador (MPU)
• É o coração do microcomputador. Executa as seguintes funções:
1. Fornece sinais de temporização e controle para todos os elementos do
µC;
2. Busca instruções e dados na memória;
3. Transfere dados para e da memória e dispositivos de E/S;
4. Decodifica instruções;
5. Executa as operações aritméticas e lógicas solicitadas pelas instruções;
6. Responde aos sinais de controle gerados pelas E/S tais como RESET e
INTERRUPÇÂO.
• Pode-se controlar tudo o que ocorre dentro do MPU através das
instruções em programas que são colocadas na memória para que o
MPU as execute. Isso é o que confere versatilidade e flexibilidada
ao MPU  mudanças de operação são alterações em programas.
O Microprocessador (MPU)
• Há três seções básicas em um MPU:
– Seção de controle e temporização função principal é buscar e decodificar
(interpretar) instruções da memória de programa, e gerar os sinais de controle
necessários pelas outras seções do MPU de forma que a instrução seja executada.
Gera também sinais de temporização e controle para dispositivos externos (Ex.
R/W, clock);
– Seção de registradores contém diversos registradores que desempenham funções
especiais. O mais importante é o PC (program counter), que indica o endereço da
instrução que será buscada na memória. Outros registradores armazenam instruções
a serem decodificadas, dados operados pela ULA. Todo processador tem um
registrador principal chamado acumulador ou registrador A.
– ULA executa uma grande variedade de operações aritméticas e lógicas em dados
Palavras em computadores
• A menor unidade de informação em um computador é o bit;
• A principal unidade de informação em um computador é a palavra;
• O número de bits que compõe uma palavra é chamado de tamanho da palavra.
• Os computadores são caracterizados pelo tamanho de sua palavra (ex. 8 bits,
16 bits, etc);
• O tamanho da palavra também indica o tamanho do barramento de dados;
• Microcontroladores possuem tipicamente palavras de 4, 8, ou 16 bits.
• PCs trabalham com 64 bits.
• Em geral, computadores com tamanho de palavras grandes podem executar
programas mais rápido porque mais dados e mais instruções estão agrupadas
em uma palavra.
• Um grupo de 8 bits é denominado byte por razões históricas e porque o código
ASCII utiliza este formato de dados.
• Uma palavra armazenada na memória de um computador pode conter dois
tipos de informação: instruções ou dados;
Instruções
• O formato usado em palavras contendo dados varia muito pouco entre
diferentes tipos de computadores;
• O mesmo raciocínio não se aplica a instruções; estas palavras contém
informações necessárias para um computador executar sua várias operações;
• Para a maioria dos computadores, as instruções são compostas de duas
unidades básicas: operação (op code) a ser executada e endereço do operando;
Segue exemplo de instrução do microprocessador 8051:

• Se forem usados 5 bits para instruções  25 = 32 instruções + 3 bits para


endereços  23 = 8 endereços. Neste caso a capacidade do microprocessador
estará severamente limitada se o tamanho da instrução não for aumentado.
Instruções
• O principal ponto a ser entendido desta forma de instrução é que os
primeiros 5 bits dizem ao micro (microprocessador) o que fazer. Os
últimos 3 bits dizem ao micro onde buscar o dado.
• Exemplo: instrução MOVE do 8051
Op code = 1 1 1 0 1 endereço do registrador = 0 1 1
O op code significa mova um byte de dado para A (o acumulador) a
partir do registrador. Os últimos 3 bits especificam que o byte de dado
deve ser movido a partir do registrador 3 (0112).
Este código binário de instrução representa uma única operação.
Ao invés de usar código binário pode-se usar código hexadecimal (EBH)
• Esta instrução pode ser armazenada na memória do microcomputador
juntamente com outras instruções de forma a constituir um programa.
• Num determinado instante, o micro busca a instrução na memória e a
decodifica.
Instruções Multibyte
• Computadores com palavras de instruções grandes podem trabalhar no
modo mencionado anteriormente, entretanto, para micros de 8 bits
deve-se trabalhar com outros formatos de instruções: um byte, dois
byte, e três bytes como mostrado abaixo:
Instruções Multibyte
• Exemplos:
1. Instrução de um byte: limpar (zerar) o acumulador (CLR A);
2. Instrução de dois bytes: o primeiro byte contém o op code e o segundo
byte (operando) especifica um valor que será usado na operação.
Existem vários métodos de especificar este dado. Estes métodos são
chamados de modos de endereçamento. Os dois modos de
endereçamento mais utilizados são:
• endereçamento direto  o operando representa um endereço que direciona
o computador para o local onde o dado está armazenado;
• Endereçamento imediato  inclui o valor do dado como parte da instrução.
Neste modo o operando é o valor do dado ao invés de um endereço.
3. Instrução de três bytes: necessária quando o operando deve ser um
número de 16 bits. Os bytes devem ser armazenados sucessivamente na
memória. Um exemplo é uma instrução que faz o computador saltar de
volta a primeira instrução e reiniciar o programa novamente (ver página
seguinte).
Instruções Multibyte
Linguagem de Máquina
• As instruções descritas anteriormente são chamadas de linguagem de
máquina porque ela é composta de 1s e 0s, a única linguagem que a
máquina (micro) entende.
• Diversas outras linguagens podem ser utilizadas para programar um
computador. Estas linguagens de alto nível são projetadas para facilitar
a escrita de um programa.
• Programas escritos em tais linguagens devem ser convertidos para a
linguagem de máquina e inseridos na mémoria interna do computador
antes que o computador possa as executar. Para isto são utilizados
programas chamados de compiladores.
• Cada instrução em linguagem de máquina, geralmente também é
descrita por um mnemônico ou abreviação para facilitar sua
interpretação ou memorização pelo programador.
• O conjunto completo de mnemônicos de um micro é chamado de
linguagem assembly ou linguagem de montagem. Programas que
combinam tais instruções são chamados de assembler (montador).
Linguagem de Máquina
Linguagem de Máquina

• Exemplo de programa em linguagem de máquina:


– Requisitos:
1. Iniciar no endereço 0000H
2. Saltar para o endereço correto para iniciar o progrma;
3. Verifique se o valor no acumulador é 0;
4. Se A ≠ 0, mostre o conteúdo do acumulador colocando-o na porta 1;
5. Espere 1 segundo;
6. Decremente o valor no acumulador de 1;
7. Repita a partir do passo 4 até que o valor no acumulador seja 0.
Linguagem de Máquina
Linguagem de Máquina
• Uma aplicação típica de microprocessador embarcado é a de um
sistema de controle de um forno de micro-ondas.
• O programa anterior é uma parte do programa do forno. O número no
acumulador representa o número em segundos que o forno deve assar
um alimento.
Execução do programa
• A seguir é mostrado como o computador executa um programa.
• O computador sempre está em um de seus dois ciclos de operação:
– Ciclo de busca (fetch)  busca a instrução (op code e endereço do
operando) na mémoria;
– Ciclo de execução  a unidade de controle executa a operação
indicada pelo op code.
• A operação inicia quando o operador aciona o pino RESET ao ligar
a alimentação. O contador de programa (PC) inicia a contagem em
0000.
1. A unidade de controle busca o primeiro byte no endereço 0000
como determinado pelo PC. O valor do byte é 02H, que é o op code
da primeira instrução. Os circuitos dentro da unidade de controle
determinam que este op code pede um salto (LJMP), e os dois
próximos bytes indicam para onde saltar. A unidade de controle
busca então a metade alta do destino e depois a metade baixa do
endereço de destino
Execução do programa
2. Para executar a instrução, os 16 bits do endereço de destino (0100H)
é carregado no contador de programa (PC). A próxima instrução que
será buscada será no endereço 0100H.
3. O op code 60H é buscado em 0100H e é decodificado como um
salto condicional (JZ). A unidade de controle também sabe que esta
é uma instrução de dois bytes, e ela busca o operando (08H). Isto
diz a unidade de controle quão longe saltar se a condição for
verdadeira. O salto irá ocorrer apenas se o acumulador for 0. A
seção de controle examina o acumulador, e se Acc = 0, ela avança o
contador de programa para o endereço 010AH. Se Acc ≠ 0, a
unidade de controle irá buscar o próximo op code que ela achar na
memória, neste caso a partir de 0102H.
4. A execução da instrução JZ simplesmente avança o PC para 0102H
uma vez que Acc ≠ 0.
Execução do programa
5. O op code é buscado no endereço 0102H. A instrução F5 diz a
seção de controle para transferir o valor no acumulador. Para saber
para onde transferir o valor, o próximo byte deve ser buscado na
memória. Neste caso o endereço 90H significa que o valor deve ser
escrito na porta #1.
6. A execução desta instrução copia o conteúdo do acumulador para o
registrador da porta de saída. Este valor é escrito na porta de saída,
que está conectada aos circuitos para mostrar o número para o
usuário ver.
7. O PC é incrementado para 0104H, e o próximo op code é buscado.
Esta instrução (12H) é uma chamada subrotina. Isto significa que o
micro deixa esta parte do programa e vai executar algumas
instruções que estão armazenadas em algum lugar da memória. Os
próximos dois bytes (28H, 55H) dizem a CPU onde a subrotina está
localizada.
Execução do programa
8. Para executar a instrução de chamada (call), a CPU deve lembrar o
lugar do programa ao qual ela deverá retornar após a execução da
subrotina (endereço 0107H), e então carregar o PC com o valor
2855H. Nesse endereço ela encontrará a primeira instrução do
programa que gera um atraso de 1 segundo. A última instrução na
subrotina deve ser a instrução RET, a qual retorno o PC para o
endereço 0107H um segundo mais tarde.
9. O op code no endereço 0107H é buscado e decodificado como um
comando para decrementar o acumulador. É uma instrução de um
byte, de forma que não é necessário um operando. A execução
ocorre dentro da CPU, e o número armazenado em A deve ser
decrementado de 1. O PC automaticamente avança para a próxima
instrução no endereço O108H.
10. No endereço 0108H o op code da próxima instrução (70H) é
buscado. Ela reconhece o op code como um JNZ (saltar se não for
zero), e ela sabe que deve tomar uma decisão baseado no número
contido no acumulador.
Execução do programa
11. Se o valor no acumulador atingir 00H, então o alimento está pronto,
e a CPU deve continuar com o restante do programa buscando uma
instrução em 010AH.
12. Se o valor em A continuar maior do que 00H, o loop deve ser
repetido e o contador de segundos decrementado até atingir 00H.
Isto significa que ele deve saltar para trás para o endereço 0102H.
De forma a saber quanto deve saltar para trás, ela deve buscar o
operando que está armazenado no endereço 0109H. Este valor é
combinado o conteúdo corrente no PC para modificar o PC para
manter o endereço 0102H.

• Apesar do computador executar uma instrução por vez, ele o faz de


modo extremamente rápido. Cada instrução leva de 1 a 2
microsegundos num microcontrolador típico.
Estrutura típica de um µC
Estrutura típica de um µC
• Sistema de barramentos  transporta todas as informações e sinais
envolvidos na operação do sistema. Quando a CPU está enviando
informação para outro elemento do computador ela está executando
uma operação de escrita. Quando está recebendo a operação é de
leitura.
• Tipos de barramentos:
– Barramento de endereços  barramento unidirecional (informação flui
em apenas uma direção  da CPU para as memórios os elementos de
E/S).
– Barramento de dados  barramento bidirecional (depende se a CPU está
executando uma operação de escrita ou de leitura).
– Barramento de controle  conjunto de sinais que é usado para sincronizar
atividades de elementos separados do µC. Alguns desses sinais como
ALE, PSEN, RD, e WR, são enviados pela CPU para outros elementos
para dizer a eles que tipo de operação está em progresso.
Estrutura típica de um µC
• Portas de E/S
– Durante a execução de um programa, a CPU está constantemente lendo ou
escrevendo na memória. Cada elemento de E/S é normalmente conectado
ao sistema de barramento do µC através de algum tipo de circuito de
interface. A função da interface é fazer o µC compatível com o
dispositivo de forma que os dados possam circular livremente.
– Embora os dispositivos de E/S sejam tratados como locações de memória,
eles diferem significativamente das memórias. Uma grande diferença é
que os dispositivos de E/S tem a capacidade de interromper a CPU
enquanto ela está executando um programa. A CPU irá suspender a
execução do programa e executará uma operação apropriada com o
dispositivo de E/S que a interrompeu. RAM e ROM normalmente não tem
está capacidade.
• Temporização
– Em geral um µC contém um circuito oscilador no próprio chip que gera os
sinais de clock básicos para operação do sistema.
Estrutura típica de um µC

– Em geral um cristal externo é ligado ao chip para gerar uma freqüência de


clock estável.
– Se está freqüência é conhecida pode-se prever a quantidade de tempo que
cada instrução leva para ser executada.
– Todas as operações do sistema, tais como a busca e execução de
instruções, leitura de dados, e escrita de dados, cabem exatamente em
períodos de tempo chamados de ciclos de máquina.
– Se cada ciclo que máquina for composto de 12 ciclos de clock, então uma
máquina trabalhando a 12MHz terá um ciclo de máquina de 1
microsegundo. Em geral uma máquina requer de 1 a 2 ciclos de máquina
para executar a maioria de suas instruções.
Estrutura típica de um µC
– Apesar de que a execução da maioria das instruções envolvem operações
internas a CPU, tais como movimentação de dados entre registradores,
soma de números, dentre outras, há três tipos distintos de ciclos de
barramento:

– Como as luzes de um semáforo numa interseção de ruas comandam quem


tem o direito de passar, pode-se observar os sinais ALE, PSEN, RD e WR
e saber qual tipo de ciclo de barramento está sendo executado.
– O diagrama de temporização a seguir mostra duas instruções sendo
buscadas e executadas
Estrutura típica de um µC

Você também pode gostar