Beruflich Dokumente
Kultur Dokumente
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.
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.
4
O que é um microcontrolador ?
5
É claro que necessitaríamos;
• de um processador,
6
• de uma porta serial para fazermos as configurações e rodarmos os
diagnósticos,
• 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)?
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.
14
Arquitetura de um
microcontrolador
15
Área de atuação do
Microcontrolador e do Microprocessador
16
Área de atuação do
Microcontrolador e do Microprocessador
17
Os Microcontroladores na
atualidade
18
Os Microcontroladores na atualidade
19
Exemplo prático de utilização de um
microcontrolador
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.
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:
27
28
Instruções
29
Instruções Aritméticas
30
ADD
31
ADDC
32
SUBB
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
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;
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.
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
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
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:
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.
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.
51
Exemplo 1 :
52
Fluxogram
a
53
Esquema Elétrico
54
Exemplo 2
Há, também, dois botões com a função de determinar o sentido de rotação dos leds
como segue abaixo.
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
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