Sie sind auf Seite 1von 62

Módulo 5

Arquitetura de um Microcontrolador

1
O que é um Microcontrolador?
• Um microprocessador é um elemento eletrónico, desenvolvido para executar
tarefas específicas, com linguagem de comando específica.

• Utiliza-se de uma Memória de Programa (ROM) para ler as instruções que


deve executar

• Utiliza-se de uma Memória de Dados (RAM) para armazenar temporariamente


informações de uso próprio das instruções
2
Arquitetura / Conceitos
Todo microcontrolador possui em sua arquitetura as partes descritas a seguir:

• Memória de programa: Nesta fica as instruções que um microcontrolador


deve executar (ROM).
• Memória de dados: Onde o programa escreve ou ler um determinado dado
sempre que necessário (RAM).
• ULA: Unidade Lógica Aritmética, esta parte do microcontrolador é
responsável por todos os cálculos e a lógica matemática para tomada de
decisão das tarefas a serem realizadas.

3
• CPU: Unidade Central de Processamento esta parte do
microcontrolador é responsável por todo processamento de dados da
unidade. É ela que interpreta os comandos e ativa os dispositivos de
entrada e saída.
• Periféricos - São circuitos que realizam funções específicas auxiliando
a CPU a realizar o controle e interface dos dispositivos externos.

• Exemplos de periféricos: Portas de I/O, conversor analógico/digital,


timers,………

4
O que é um microcontrolador ?

• Um ponto que precisamos deixar bem claro é a diferença entre


microcontrolador e microprocessador. Para esclarecer esse conceito,
começamos por perguntar como seria o projeto de um sistema de
controle, por exemplo para um elevador, usando um
microprocessador ?

5
É claro que necessitaríamos;

• de um processador,

• de memória ROM para o programa,

• de memória RAM para os dados,

• de uma porta paralela para dar saída aos acionamentos,

• de uma outra porta para receber os sinais digitais dos sensores,

6
• de uma porta serial para fazermos as configurações e rodarmos os
diagnósticos,

• de um conversor AD para ler o sensor de carga que informa o peso total


das pessoas que entraram no elevador,

• de um temporizador para medir o tempo que a porta deve ficar aberta,

• entre outros
7
Com essa extensa lista, chegamos a um circuito cujo diagrama de
blocos mostrado na figura 1.

8
Um sistema dessa envergadura necessitaria de uma placa controladora de
tamanho razoável e povoada por uma grande quantidade de circuitos
integrados.
Neste projeto, precisaríamos despender recursos para fabricar a placa de
circuito impresso, sendo que a confiabilidade, devido à quantidade de
componentes, não seria das melhores.

Aí surge a pergunta: será que não poderíamos colocar tudo isso dentro de um
único CI ( circuito Integrado)?

Essa é a ideia básica do microcontrolador: construir um processador, com uma


grande quantidade de recursos voltados para o controle.
9
Com isso, o sistema fica muito mais simples e utiliza poucos componentes. Dessa forma,
a fase de projeto é reduzida e a confiabilidade aumenta, pois estamos a usar uma menor
quantidade de sistemas integrados e, é claro, a manutenção é também facilitada.

Vemos assim uma grande quantidade de vantagens da integração, junto da CPU, dos
circuitos necessários aos sistemas de controle. Como não será feito processamento
sofisticado, o CPU não precisa de ter uma grande capacidade de processamento, mas
deve oferecer um conjunto de instruções simples, que gere programas pequenos e de
rápida execução, ou seja, as instruções devem ser pequenas e velozes.

10
Além disso, é interessante que a CPU possa efetuar expressões
"booleanas", pois isso vai facilitar a lógica de controle. É preciso ainda
oferecer uma forma simples de se “interfacear” com outros periféricos
que venham a ser adicionados.

11
Levando em conta tudo que foi dito, chegamos ao diagrama em blocos da
figura 2, onde se apresenta a típica arquitetura de um microcontrolador.
É claro que, de acordo com a finalidade do microcontrolador, é possível
integrar mais recursos e tal possibilidade foi representada pelos blocos
rotulados com "etc".

12
Diferenças entre
Microcontrolador e
Microprocessador
• O microprocessador precisa de outros periféricos para poder funcionar, como
memória RAM, Timers e etc.
• Já o microcontrolador consegue integrar todos estes recursos em um único chip.

• O microcontrolador possui vários periféricos na mesma pastilha de CI:


- Memória de Dados;
- Memória de Programa;
- Portas de Entrada e Saída (I/O);
- Temporizadores (Timers);
- USB.
13
Arquitetura de um
Microprocessador (CPU)

14
Arquitetura de um
microcontrolador

15
Área de atuação do
Microcontrolador e do Microprocessador

Os microprocessadores são utilizados em aplicações onde são


requeridos cálculos matemáticos complexos e com muita velocidade

16
Área de atuação do
Microcontrolador e do Microprocessador

• Os microcontroladores são utilizados , por exemplo em


eletrodomésticos, onde a velocidade de processamento não é tão
alta.

17
Os Microcontroladores na
atualidade

18
Os Microcontroladores na atualidade

19
Exemplo prático de utilização de um
microcontrolador

Podemos citar de início o comando de uma Televisão

20
Exemplo 2 prático de
utilização de um
microcontrolador

21
Exemplo 2 prático de
utilização de um
microcontrolador

22
Resumindo :
Um microcontrolador difere de um microprocessador em vários aspetos.
Primeiro e o mais importante, é a sua funcionalidade. Para que um
microprocessador possa ser usado, outros componentes devem-lhe ser
adicionados, tais como memória e componentes para receber e enviar dados.
Em resumo, isso significa que o microprocessador é o verdadeiro coração do
computador. Por outro lado, o microcontrolador foi projetado para ter tudo
num só.
• Nenhuns outros componentes externos são necessários nas aplicações, uma
vez que todos os periféricos necessários já estão contidos nele. Assim, nós
poupamos tempo e espaço na construção dos dispositivos.

23
Os Fabricantes de
Microcontroladores
O conceito de microcontrolador espalhou-se rapidamente e hoje em dia existe uma
grande diversidade de produtos para solucionar os mais diferentes problemas de
controle.

O primeiro microcontrolador foi lançado pela Intel em 1978 e recebeu a sigla 8048; que
depois evoluiu, dando origem à família 8051, em 1983. A Intel ainda oferece a família
8096, que trabalha em 16 bits, possibilitando maior capacidade de processamento. Hoje
em dia, uma grande quantidade de fábricas de semicondutores oferece
microcontroladores.
24
Devido à sua grande aceitação, a família do microcontrolador 8051 passou
a ser produzida por outros fabricantes e, é claro, cada um deles introduziu
inovações. Por isso, atualmente a família 8051 é a que oferece a maior
variedade de opções.

Outra vantagem desta família é o fato de não ficarmos dependentes de


um único fabricante.

25
Utilizações:
• O microcontrolador Intel 8051, pode ser encontrado em diversos circuitos
lógicos, tais como rádios, telefones, máquinas industriais, micro-ondas,
entre outros. A sua programação é feita com a linguagem de programação
Assembly, tida em dois modos de funcionamento:

• Modo Mínimo: onde são usados somente os recursos internos.

• Modo Expandido: Onde as memórias ROM e RAM são expandidas usando-


se componentes externos.
26
Pinagem do Microcontrolador 8051

27
28
Instruções

O 8051 apresenta 111 tipos de instruções, sendo 49 de um byte, 45 de


dois bytes e 17 de três bytes. Levando-se em contas as variações de
cada tipo, chega-se a 225 instruções, onde os opcodes estão

entre 00h e FFh, exceto A5.

29
Instruções Aritméticas

São as instruções usuais de um operador de 8 bits: soma (ADD), soma


com carry (ADC), subtração com borrow (SBB), incremento (INC),
decremento (DEC) e ajuste decimal (DA A). Apresenta também duas
operações que não são típicas de microprocessadores de 8 bits:
multiplicação ( MUL AB) e divisão (DIV AB)

30
ADD

• Adiciona ao acumulador uma variável de um byte. O resultado da


operação é armazenado no acumulador.

• O flag C é ativado se há um overflow no bit 7, caso contrário


permanece em 0. O flag AC é ativado se houver um "vai-um" do bit 3.

31
ADDC

• A instrução ADDC realiza a soma entre o conteúdo do acumulador, do


valor da variável de um byte e o conteúdo do flag de carry.

32
SUBB

Esta instrução subtrai do acumulador, o valor da variável de um byte e


o conteúdo do Borrow do acumulador. O resultado é armazenado no
acumulador. O flag de carry indica que houve um "empresta um"
durante a subtração, ou seja um número maior foi subtraído de um
menor. Nas demais situações, o flag de carry permanece em zero.

33
Instruções de Transferência de
Dados
• A instrução básica de transferência de dados é mover, realizada pelas
instruções MOV, MOVC e MOVX. Também estão incluídas neste grupo
as instruções PUSH e POP, referentes ao ponteiro de pilha, bem como
a instrução XCH.

34
MOV

• Esta instrução é utilizada para referenciar a memória RAM interna e o


espaço dos registradores de função especial (SFR). Exemplos:

MOV A, 20h ;move para o acumulador o dado presente no endereço 20h.

• MOV @R1, #32h ;move para a posição endereçada indiretamente pelo


registrador R1, o valor ;32

35
Diagrama de Blocos
do Microcontrolador

36
Diagrama de Blocos do Núcleo do
Microcontrolador

37
O microcontrolador 8051 possui:
CPU de 8 bits otimizada para aplicações de controle;

32 linhas de E/S bidirecionais e individualmente endereçáveis;

4 Kbytes de memória de programa interna;

128 bytes de RAM interna, destinada a dados;

64 Kbytes endereçáveis de memória externa, de programa ou dados;


38
2 temporizadores/contadores de 16 bits cada um;

Porta serial (UART) full-duplex, para comunicação com outro


processador;

5 estruturas (fontes) de solicitação de interrupção, com 2 níveis de


prioridade;

Oscilador de clock interno;

Frequência de clock entre 1,2 MHz e 12 MHz.

39
Principais Vantagens do
Microcontrolador 8051
• Popular: prontamente disponível e amplo suporte. Gama completa de produtos de
suporte estão disponíveis de graça e comercialmente, proporcionando economia
real em termos de ferramentas de treinamento e suporte para software.

• Rápido e eficaz: a arquitetura correlaciona se de perto com o problema sendo


solucionado (sistemas de controle).
• Baixo custo: alto nível de integração do sistema num único componente. Poucos
componentes a mais são necessários para se criar um sistema que funcione.

• Compatibilidade: opcodes e código binário são os mesmos para todas as variações


do 8051, diferente de outras famílias de microcontroladores.

40
Linguagens de Programação para o
8051
As linguagens mais utilizadas na programação da família MCS-51 são C, BASIC e
Assembly. Especificamente para microcontroladores desta família, não tem surgido
muito texto de apoio sobre linguagens de programação. Todos os livros sobre
linguagem C que aparecem no mercado vêm repletos de exemplos clássicos de
processamento de dados, os quais são, na sua grande maioria, impróprios para
microcontroladores.

41
Linguagem C

C é uma linguagem que surgiu com o sistema operacional Unix. Esta linguagem está
estruturada, produz um código compato e permite atingir alguns detalhes de
controle da máquina sem recorrer ao Assembly.

42
Linguagem Assembly

A linguagem Assembly do 8051 é semelhante a outras linguagens Assembly de


microprocessadores. O conjunto de instruções dispõe de um maior número de
operações para manipular bits que os microprocessadores normais , mas o fato de ter
diferentes regiões de memória torna as coisas mais complicadas. As instruções de
movimentação de dados, lógicas e desvio de execução são geralmente similares ás da
maioria dos outros microprocessadores. Desta forma, para quem já trabalhou com
linguagem Assembly de microprocessador, o processo é o mesmo, com as suas

vantagens e desvantagens.
43
Linguagem Basic
É uma linguagem de introdução à programação. É uma linguagem muito fácil de se usar. O uso de uma
nova variável faz com que esta variável persista pelo resto do programa. Erros podem ser detetados ao
final de cada linha, ao invés de mostrá-los somente quando o programa termina.

Porém, existem duas razões pelas quais o Basic não é conveniente em sistemas dedicados.

Em primeiro lugar, é um programa interpretado interpretado, é naturalmente lento. Cada linha deve ser
convertida para o código da máquina toda vez que for executada. O processo de interpretação faz com que
seja perdido muito tempo de processamento, que deveria ser usada para a aplicação propriamente dita.
Existem versões do Basic compilado (QuickBasic, por exemplo), que evitam esse problema. Entretanto, não

há nenhuma versão do Basic compilado para o 8051 .

44
Em segundo lugar, pode-se destacar a inconveniente simplificação no uso de variáveis.
Todas as variáveis são, usualmente, implementadas como ponto-flutuante. Isto resulta
na necessidade de se executar rotinas complexas, mesmo para valores tipo inteiro. Isto
torna os programas lentos e grandes.

Pode dizer se que o Basic, no contexto de sistemas dedicados, deve ser indicado para
aplicações onde a facilidade de programação seja mais importante que a eficiência ou
velocidade.

45
Diagrama de blocos do
microcontrolador 8051

46
Fluxogramas:

Ferramenta fundamental para qualquer rotina de um programa de


microcomputador. É por essa ferramenta que se pode observar como
foi implementada a estratégia de solução elaborada por um
programador. O fluxograma representa como o fluxo de informação
será processado pelo microprocessador.

47
Fluxograma
Simples
1- O primeiro bloco deve conter o nome do programa associado
ao seu objetivo ou função.
2- Um segundo bloco deve conter as condições iniciais dos bits, e
posições de memória que serão utilizados no programa.
3 - Um terceiro bloco faz o processamento da informação, que
pode ser a realização de movimentação de informações,
operações lógicas e aritméticas e rotação.

4- O quarto bloco determina onde será armazenada a informação


processada.

5- E o último bloco deve indicar o fim do programa


48
Fluxograma de
programa com loop

Um programa com loop deve ter o


primeiros três blocos como
mostrado no fluxograma de
programa simples devendo apenas
no segundo bloco determinar um
local na qual serão armazenadas as
informações que serão
processadas.

49
• 1- O primeiro bloco deve conter o nome do • 5- O quinto bloco processará as
programa associado ao seu objetivo ou informações que não atenderam a
função. condição de teste do bloco anterior.
• 2- Um segundo bloco deve conter as • 6-O sexto bloco fará o controle do
condições iniciais dos bits, e posições de loop, verificando se todas as
memória que serão utilizados no programa. informações foram
• 3 - Um terceiro bloco faz o processamento processadas(analisadas).
da informação, que pode ser a realização de • a) Controle pela posição inicial e
movimentação de informações, operações quantidade de elementos. Aponta-se
lógicas e aritméticas e rotação. a posição de inicio do processamento
• 4 - O bloco de teste é um bloco de tomada e o número de elementos. A cada
de decisão. Ele testará uma condição processamento diminui-se a
matemática ou lógica definida no bloco quantidade de elementos. Enquanto a
anterior. Se a condição for satisfeita, será quantidade de elementos for
definido uma caminho de processamento, diferente de zero, desvia para o
caso contrário outro caminho será seguido. processamento. Quando o número de
elementos for zero(0) o programa
passa para o próximo bloco.
50
• b) Controle pela posição inicial e final.
Aponta-se a posição inicial e compara a
cada processamento a posição seguinte do
buffer com a posição final. Enquanto o
endereço for diferente deve se voltar ao
processamento. Quando o endereço do
buffer for igual ao endereço final o
programa deve ir para o bloco seguinte.

• 7- O sétimo bloco determina onde será


armazenada a informação processada.

• 8 - E o último bloco deve indicar o fim do


programa.

51
Exemplo 1 :

Montar um circuito que consiste em acender e apagar um led


continuamente, com o tempo de 1 segundo entre acender e apagar.

É importante analisar o esquema elétrico para fazer um programa que


seja compatível com o hardware desejado

52
Fluxogram
a

53
Esquema Elétrico

54
Exemplo 2

Montar um circuito que consiste em acender sequencialmente 8 leds, com o tempo de


1 segundo entre acender e apagar cada led.

Há, também, dois botões com a função de determinar o sentido de rotação dos leds
como segue abaixo.

•Botão 1: quando acionado roda a sequência do led para a esquerda.


• Botão 2: quando acionado roda a sequência do led para a direita.

55
Esquema Elétrico:

56
Fluxograma:

57
Exercício 1 de um programa
simples: RAM Interna
Endereço Conteúdo

45h XXh
+
5Ah YYh

6Dh

58
Exercício 2 de um programa
simples:

59
Exercício de programa com loop

RAM Interna
Endereço Conteúdo

endereço inicial 60h XXh 1Bh elementos


: : a serem
: : analisados
endereço final 7Ah YYh
7Bh qte de ns < 38h

Figura 11: Desenho em forma de rascunho para ajudar no entendimento do que está sendo solicitado.
60
Fluxograma

61
Programa
; Inicio do programa que calcula a qte de elementos < #38h
MOV R0,#60h ;Endereço inicial do buffer de memória
MOV R1,#1Bh ;Quantidades de elementos do buffer de memória
MOV 7Bh,#00 ;Zera o contador que armazena a qte de num < #38h
ADR2: CLR C ;Limpa o conteúdo do carry-bit
MOV A,@R0 ;Armazena no (A) um elemento do buffer
SUBB A,#38h ;Subtrai o (A) da constante #38h e define o flag (C)
JNC ADR1 ;Se (C)=0 (A>=#38h) => (PC)=ADR1 [não soma um no (7Ah)]
INC 7Bh ;Se (C)=1 (A<#38h), soma um no (7Bh)
ADR1: INC R0 ;Aponta para a próxima posição de memória a ser analisada
DJNZ R1,ADR2 ;Se a qte de elementos a serem analisadas é  0, então salta para ADR2
END ;Termina o programa se (R1)=0.

62

Das könnte Ihnen auch gefallen