Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

MICROPROCESSADORES
Maikon Lucian Lenz
Fundamentos de 
microcontroladores
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Caracterizar microcontroladores e microprocessadores.
 � Identificar famílias de microcontroladores.
 � Analisar aplicações de microcontroladores.
Introdução
A eletrônica digital permitiu maiores flexibilidade e eficiência às técnicas 
de automação, controle e processamento. Surgem, com isso, os micro-
processadores, de operação programável e baixo consumo, os quais 
evoluem, tornando-se cada vez mais rápidos e poderosos. Ao mesmo 
tempo, são disponibilizados dispositivos de menor capacidade, mas inte-
grados a um conjunto de outros que permitem menor complexidade de 
desenvolvimento: os microcontroladores. Estes possuem um processador 
integrado, mas também memórias, temporizadores, circuitos de oscilação 
e outros tantos comuns a uma vasta gama de projetos, mas que teriam 
de ser inseridos e controlados diretamente pelo programador caso fosse 
utilizado um microprocessador diretamente. Ambos os dispositivos, no 
entanto, muito se assemelham na forma de programação. Os microcon-
troladores são classificados em famílias, associando componentes com 
características comuns, o que facilita o aprendizado do desenvolvedor e 
a escolha do dispositivo. As aplicações são muitas e, a cada nova geração 
de microcontroladores, a taxa de processamento e os módulos dedicados 
integrados ao dispositivo aumentam, permitindo o desenvolvimento de 
equipamentos mais eficientes e de menor custo.
Características de microcontroladores e 
microprocessadores
A programação tem início com a invenção de máquinas de tear programáveis 
que utilizavam cartões perfurados para mudar a sua operação. Esse método 
de programação foi utilizado durante muitos anos e, assim como os sistemas 
modernos, utiliza o sistema binário de dados. No caso dos cartões, cada bit 
era expresso por uma posição perfurada ou não do cartão (Figura 1). A po-
sição e a sequência com que eram lidas determinava a operação da máquina 
(PEREIRA, 2002).
Figura 1. Máquina de tear programável por meio de cartão perfurado.
Fonte: Stephen Barnes/Shutterstock.com.
As primeiras máquinas programáveis operavam de forma mecânica e, por 
isso, costumavam ser muito mais volumosas que as de função equivalente nos 
dias de hoje. Mesmo os procedimentos de programação e leitura do código 
expresso no cartão perfurado poderiam ser problemáticos. A programação 
dificilmente poderia ser alterada ou atualizada sem que fosse reescrita por 
completo. Já a execução incluía todos os problemas decorrentes de um pro-
cesso mecânico convencional, como quantidade de esforço elevado e desgaste 
Fundamentos de microcontroladores2
físico tanto da máquina quanto dos cartões que poderiam ocasionar falhas na 
operação (PEREIRA, 2002).
A eletrônica digital permite a mudança de paradigma com uso de ele-
mentos de memória, primeiramente, com válvulas termiônicas e, mais tarde, 
com componentes transistorizados. O avanço da eletrônica digital diminuiu 
consideravelmente o tamanho e a quantidade de energia utilizada nas má-
quinas programáveis de uma maneira geral. Com a redução do consumo e 
a miniaturização, o incremento na capacidade de processamento cresce de 
forma exponencial, permitindo a resolução de problemas mais complexos 
com sistemas cada vez mais acessíveis. A Figura 2, a seguir, mostra uma 
comparação da diferença de tamanho entre uma única válvula termiônica e 
um circuito integrado de um microcontrolador que possui milhares de tran-
sistores internamente.
Figura 2. Válvula termiônica comparada a um microcontrolador 
contendo milhares de transistores. Cada transistor substituiria 
uma válvula.
Fonte: realist2000/Shutterstock.com.
O primeiro microprocessador comercial, fruto da miniaturização dos 
componentes eletrônicos, foi apresentado pela Intel em 1969. Ele trabalhava 
com dados de 4 bits de tamanho e podia executar um conjunto de 46 diferentes 
instruções (PEREIRA, 2002).
3Fundamentos de microcontroladores
A função de um microprocessador é processar os dados recebidos com 
base na sequência de instruções que lhe foram atribuídas pelo programador. 
Assim, ele deve ser dinâmico o suficiente para executar diferentes tipos de 
operações e em sequências aleatórias definidas pelo programador.
O microprocessador, no entanto, requer o auxílio de outros componentes 
para armazenar dados temporários e seu próprio código, controlar o fluxo de 
dados nos barramentos, produzir o clock de operação que ditará o ritmo de 
funcionamento das instruções e outros componentes mais específicos, como 
periféricos para controle de entrada e saída de dados, temporização, geração 
e análise de sinal, entre outros (PEREIRA, 2002).
Assim, para que um microprocessador possa operar normalmente, é 
necessária a presença de outros componentes atuando em conjunto. Já um 
microcontrolador costuma ter menor poder de processamento, compensado 
pela disponibilidade integrada de elementos que o permitam funcionar sem 
a adição, em muitos casos, de outros componentes.
A estrutura do microcontrolador contém (PEREIRA, 2002): 
 � memória volátil para manipular e armazenar dados em tempo de 
processamento; 
 � memória não volátil para receber as instruções do programador e per-
mitir que o microcontrolador, uma vez programado, tenha o código à 
sua disposição a qualquer momento; 
 � gerador de clock interno (ainda que muitas versões permitam o uso de 
cristais externos para obter maior estabilidade ou níveis de frequência 
diferentes dos disponibilizados); 
 � uma série de elementos que facilitam a integração do microcontrolador 
com outros componentes, seja para comunicação, tratamento de sinal 
analógico, geração de sinal, entre outros.
Os microcontroladores ganharam mercado a partir da década de 1980, 
pois, apesar do menor nível de processamento, permitem o desenvolvimento 
de projetos de sistemas embarcados mais simples de maneira mais rápida e 
confiável. A opção se dá pela relação de custo-benefício de cada projeto, já 
que, em muitos casos, o volume de processamento de um microprocessador 
pode ser desnecessário, enquanto que muitos periféricos podem ser de grande 
serventia. O microcontrolador pode ser compreendido como um computador 
simples, enquanto o microprocessador é apenas uma parte desse computador, 
essencial a todos eles, mas insuficiente para operar sozinho.
Fundamentos de microcontroladores4
A forma como uma máquina é programada depende das características construtivas 
e da sua natureza de operação. Um computador mecânico demandará indicadores 
mecânicos para compreender a sequência de operações a serem executadas, e todo 
o processamento do código até o ajuste dos atuadores da maneira esperada será 
mecânica. É o caso da máquina de tear do cartão perfurado.
Já um computador eletrônico faz uso de sinais elétricos para acionar ou não partes 
do circuito interno que desencadearão uma sequência de operações lógicas que 
devem resultar na atuação esperada do mecanismo.
No entanto, muitos computadores, já na era da tecnologia digital, foram programa-
dos por meio de cartões perfurados. É claro que, nesse caso, um dispositivo teria de 
converter a presença física de uma perfuração ou não, em cada posição do cartão, 
para pulsos elétricos que seriam armazenados nas memórias eletrônicas.
Famílias de microcontroladores
Os primeiros microcontroladores foram desenvolvidos com base na estrutura do 
8080 da Intel, que deu origem, também, aos processadores modernos e, talvez, 
a uma das famílias mais importantes de processador até aqui. Esse processador 
tinha endereços de memória de 16 bits, o que permitia armazenar e processar 
dados com valores inteiros entre 0 e 65.535. Valores negativos ou números 
com vírgula necessitam de uma representação diferenciada, dividindo cada 
endereço de memória em sinal ou parte inteira e parte real (PEREIRA, 2002).
A quantidade de modelos diferentes desenvolvidosfoi tão grande que os 
microcontroladores passaram a ser classificados em famílias. Assim, é possível 
compreender, pelo menos parcialmente, a estrutura de um microcontrolador, 
sua capacidade e seu modo de operação simplesmente sabendo a que família 
ele pertence.
A família MCS-51, por exemplo, foi uma das mais utilizadas no passado 
e nasce com o desenvolvimento do modelo 8051, baseado nos processadores 
8080 da Intel (PEREIRA, 2002).
Outras famílias de microprocessadores famosos incluem ARM, AVR, PIC, 
dsPIC e outros. Dentro dessas, há subdivisões em famílias menores e uma 
ampla quantidade de modelos para uma delas. 
5Fundamentos de microcontroladores
O PIC é um dos mais difundidos: 
 � possui vasta documentação e referências bibliográficas; 
 � apresenta ambientes de programação simples e estrutura de operação/
construção padronizada, que facilita a migração do código para outros 
modelos dentro da mesma família; 
 � atende a mercados de entrada e de baixo custo com grande poder de 
processamento.
Os microcontroladores PIC utilizam arquitetura Harvard, que separa a 
memória de programa em que constam as instruções programadas da memória 
de dados, que armazena os valores utilizados por periféricos, registradores 
e variáveis.
As instruções apresentam formato padronizado com um código de operação 
(OPCODE) seguido de bits de configuração/modificação, quando existirem, 
e, por último, valores literais ou endereços de memória/registrador. A lista de 
instruções pode ser subdividida em (MICROCHIP, 2003): 
 � operações orientadas a bytes — que manipula registrador inteiros; 
 � operações orientadas a bits — sendo as mais comuns para teste ou 
modificação de bits específicos de um registrador; 
 � operações envolvendo literais — normalmente um número a ser utili-
zado em conjunto com o registrador acumulador (registrador W) e de 
controle como saltos de memória e chamadas de função. 
A quantidade e o tamanho da palavra utilizada nas instruções variam 
para cada família. Alguns microcontroladores possuem maior quantidade de 
instruções ou endereços maiores de memória e necessitam de mais bits para 
comportar isso. A família PIC16, por exemplo, utiliza um tamanho de palavra 
para as instruções de 14 bits (Figura 3) (MICROCHIP, 2003).
Fundamentos de microcontroladores6
Figura 3. Formato de instruções da família PIC16.
Fonte: Adaptada de Microchip (2003).
Operações orientadas a bytes de registradores
13 8 7 6 0
13 8 7 0
13 11 10 0
Operações orientadas a bits de registradores
Instruções CALL e GOTO especi�camente
Operações literais e de controle 
Geral
13 10 9 7 6 0
OPCODE f(registrador#)
d = 0 para registrador W como destino
b = posição de 3 bits
d = 1 para registrador f como destinor 
f = endereço do registrador de 7 bits
f = endereço do registrador com 7 bits
k = valor qualquer de 8 bits
k = valor qualquer de 11 bits
d
OPCODE f(registrador#)b (BIT #)
OPCODE K (literal)
OPCODE K (literal)
Atualmente, a Microchip, fabricante dos microcontroladores PIC, dispo-
nibiliza microcontroladores em estruturas de 8, 16 e 32 bits. Dentro dessa 
estrutura, destacam-se as famílias: PIC10, PIC12 e PIC16; PIC18, PIC24 e 
dsPIC (na maioria de 16 bits); e PIC32 (MICROCHIP, 2019a).
Os modelos são nomeados, primeiramente, segundo a família e, na se-
quência, com caracteres que individualizem suas características — algumas 
delas são referências diretas a algum tipo de estrutura presente no mesmo.
Por exemplo, o PIC16F877A difere radicalmente do PIC24HJ256GP206. 
O primeiro trabalha com dados de 8 bits, possui diversos encapsulamentos 
diferentes, mas oferece, no máximo, 44 pinos. Entre as características desta-
cadas pelo fabricante, estão (Figura 4a) (MICROCHIP, 2003): 
7Fundamentos de microcontroladores
 � clock de até 20 MHz; memória de programa de até 8 mil instruções 
(cada uma delas com 14 bits); 
 � memória RAM de 368 bytes; 
 � pinagem compatível com as famílias PIC16C e PIC16F; 
 � três temporizadores (sendo um de 16 bits); 
 � módulo gerador de PWM — pulse width modulation (modulação por 
largura de pulso); 
 � conversor de sinal analógico-digital com 8 canais com resolução de 
10 bits cada; 
 � módulos de comunicação serial síncrona do tipo SPI e também I²C; 
 � módulo de comunicação serial assíncrona do tipo USART; 
Já o PIC24HJ256GP206 trabalha com (Figura 4b) (MICROCHIP, 2009a): 
 � dados de 16 bits, com 64 pinos; 
 � clock de até 80 MHz; 
 � memória de programa 256 kb; 
 � memória RAM de 16 kb; 
 � oito módulos PWM; 
 � nove temporizadores de 16 bits e outros 4 de 32 bits; 
 � 18 canais de conversão analógica-digital com resolução de 12 bits; 
 � até oito saídas PWM simultâneas; 
 � dois módulos de comunicação SPI, USART e I²C cada.
Figura 4. (a) PIC16F877A; (b) PIC24HJ256GP202.
Fonte: (a) Microchip (2019b) e (b) Microchip (2019c).
Fundamentos de microcontroladores8
A diferença obviamente não ficará apenas pelos recursos oferecidos, mas 
também no preço e na praticidade de desenvolvimento. Todas essas característi-
cas podem ser encontradas no datasheet (documento técnico), que é equivalente 
ao manual do componente eletrônico. No caso dos microcontroladores, toda a 
estrutura física, interna e externa, é bem-detalhada, para especificar tamanho, 
condições adequadas ou limites de operação, além da forma como o elemento 
opera e pode ser programado, de como utilizar as instruções disponíveis para 
processamento e como utilizar os diversos periféricos de funções específicas 
disponíveis com o microcontrolador. Esse documento é normalmente dispo-
nibilizado no site do fabricante e é o guia de referência para seu trabalho.
Aplicações de microcontroladores
A grande vantagem de se ter um pequeno computador com acesso a suas 
funções e estruturas mais básicas é a possibilidade de se criar um produto 
ou uma solução de baixo custo, que podem ser produzidos em larga escala e 
facilmente embarcados.
Um computador moderno tem uma taxa de processamento muitas vezes 
maior que um simples microcontrolador. No entanto, o computador consome 
uma parcela significativa dos seus recursos, gerindo o sistema operacional e 
outras ferramentas que permitem a interação em alto nível para possibilitar 
que o desenvolvedor utilize os recursos disponíveis de maneira facilitada, 
enquanto o sistema operacional gerencia a maior parte do hardware (WEBER, 
2012). Por exemplo, ao mesmo tempo em que o usuário pode estar utilizando 
um aplicativo de desenho, guiando o cursor por meio da tela para colorir da 
forma como deseja aquela imagem, o sistema operacional e as estruturas mais 
básicas do processador estarão monitorando os sinais de entrada do mouse e 
do teclado, orientando a exibição de cada pixel na tela com a cor e a posição 
adequadas, enviando e recebendo dados por meio da rede, controlando a 
velocidade da ventoinha que refrigera o processador para que o nível de ruído 
e a temperatura atinjam o melhor desempenho possível, gravando e lendo 
dados da memória RAM para executar cada um desses procedimentos e, até 
mesmo, do disco rígido para salvar automaticamente ou não o estado em que 
se encontra o desenho naquele momento em um arquivo. Aliás, o simples ato 
de buscar arquivos em um computador já pode ser traduzido em uma série de 
procedimentos menores, nenhum deles visíveis ao operador da máquina, mas 
que precisam passar pelo processador (PINHEIRO, 2012).
9Fundamentos de microcontroladores
Em um microcontrolador também é possível implementar pequenos sis-
temas operacionais e desenvolver soluções mais genéricas que se utilizem do 
sistema operacional existente para reduzir a complexidade de programação, 
garantindo, mesmo assim, seu funcionamento. O mais comum, no entanto, é 
programar os microcontroladores para finalidades específicas. Nesse caso, 
cada movimentação de dados e o próprio controle dos periféricos serão de 
responsabilidade do programador. A vantagem é que todo poder de proces-
samento pode ser dedicado ao seu projeto, o que garante boa otimizaçãoe, 
principalmente, menor custo de produção, apesar da maior dificuldade de 
desenvolvimento.
Mas de que forma um microcontrolador pode ser programado? A resposta 
requer um breve conhecimento de eletrônica, em especial de eletrônica digital.
Todos os efeitos eletromagnéticos derivam das propriedades elétricas 
das cargas, essencialmente da mais básica delas: cargas opostas se atraem, e 
cargas iguais se repelem. Esses efeitos podem ser controlados por resistores, 
capacitores, indutores, diodos, transistores, cada qual com intenções e com-
portamentos diferentes quando na presença de um sinal elétrico. Um resistor, 
por exemplo, pode ser utilizado para limitar a corrente elétrica (movimento das 
cargas) e, indiretamente, para dividir a tensão elétrica (a força que impulsiona 
as cargas) entre dois ou mais elementos do circuito. Já um transistor, elemento 
de maior importância para eletrônica digital, tem como finalidade controlar a 
quantidade de corrente possível em um circuito a partir de um sinal de entrada 
em outro. Assim, ele pode ser utilizado como um amplificador de sinal ou 
como uma chave eletrônica, permitindo ou impedindo a corrente elétrica.
Uma vez que os componentes eletrônicos não são ideais ou perfeitos, os 
desgastes durante a transmissão e manipulação de sinais elétricos podem 
interferir na qualidade e intensidade deles. Em muitas aplicações, a intenção 
direta é justamente essa, porém, no processamento e na transmissão de in-
formações, a exatidão das informações, representadas por pulsos elétricos, é 
de fundamental importância. Assim, por mais que seja possível a construção 
de computadores analógicos, eles dificilmente serão tão precisos quanto os 
modelos digitais que restringem os níveis elétricos a dois valores apenas: 
aqueles mais próximos do valor máximo de tensão, dito nível lógico alto; ou 
aqueles mais próximos do valor mínimo, dito nível lógico baixo.
A grande vantagem de se interpretar a informação de forma rígida (0 ou 
1; mínimo ou máximo; falso ou verdadeiro) é que a precisão é facilmente 
controlada. Ou seja, por mais que uma determinada combinação de pulsos 
elétricos passe por um meio ruidoso e cheio de interferências externas, ou que 
a queda de tensão na linha seja grande devido à distância elevada entre os dois 
Fundamentos de microcontroladores10
componentes que se comunicam, dentro de determinados limites, nenhuma 
diferença será notada na informação. Adotando uma tensão abaixo de 2 V 
como sendo nível lógico baixo e acima de 3 V como sendo nível lógico, não há 
só grande margem para falhas, interferências e desgastes, mas também uma 
região (entre 2 e 3 V) de segurança para evitar confusões. Perde-se muito em 
resolução, mas se ganha em exatidão e precisão, o que é primordial quando se 
trabalha com números e dados exatos. Do contrário, qual seria a relevância de 
se criar uma calculadora em que nem sempre o resultado da soma de 2 mais 
2 fosse 4? Teria pouca ou nenhuma serventia.
Logo, a menor unidade de informação em um sistema de eletrônica digi-
tal é o bit (do sistema binário de numeração), que compreende apenas duas 
possibilidades: 0 ou 1. Como já foi dito anteriormente, 0 é apenas um símbolo 
para o nível lógico baixo, independentemente do valor exato de tensão dele. 
Isso vale para o 1, apenas um símbolo para o nível lógico alto.
Números e informações maiores podem ser expressos utilizando o sistema 
binário da mesma forma que o sistema decimal: adicionando mais dígitos 
toda vez em que forem necessários valores maiores, tendo cada dígito um 
peso maior que seu predecessor. Assim, o número 172 pode ser expresso pelo 
seu equivalente binário de 8 bits: 1010 11002. Qual a conexão disso com os 
transistores na eletrônica? Cada transistor pode estar em condução ou não, 
permitindo ou bloqueando o pulso elétrico e, sob determinadas circunstâncias, 
funcionar como uma memória, ainda que, na prática, o mais adequado seja 
utilizar elementos mais complexos, compostos de vários transistores, resistores 
e diodos para armazenar um único bit, como as portas lógicas que permitirão 
uma estabilidade maior de trabalho (TOCCI; WIDMER; MOSS, 2011).
Programar, nesse caso, nada mais é que escrever a sequência correta de 0 
s e 1 s nos endereços corretos de memória. A função do processador é varrer 
esses endereços, organizar sua estrutura interna para processar os dados que 
possam se fazer presentes na mesma memória de programa, na memória RAM, 
ou em demais periféricos, e, até mesmo, em outros pinos do microcontrolador. 
Mas tudo se resume à manipulação de 0 s e 1 s (WEBER, 2012).
A combinação de portas lógicas fundamentais pode criar funções lógicas 
mais complexas e, até mesmo, produzir operações aritméticas de soma e 
subtração que, por sua vez, podem ser associadas para criar contadores que, 
alimentados com um circuito oscilador estável, servirão de elemento de tem-
porização, e assim sucessivamente (TOKHEIM, 2013).
Saber programar é saber fornecer as instruções corretas e na ordem correta 
para que o dispositivo de processamento seja capaz de executar aquilo que 
você espera do equipamento.
11Fundamentos de microcontroladores
No datasheet dos microcontroladores PIC, sempre se faz presente a tabela 
com instruções disponíveis. Nela, você encontra o nome dado à função e como 
ele pode ser expresso no ambiente de desenvolvimento fornecido pelo fabri-
cante, mas também de que forma o ambiente de desenvolvimento traduzirá a 
palavra utilizada pelo programador para uma sequência binária a ser gravada 
na memória do microcontrolador. Esse processo é conhecido por compilação 
e busca traduzir a linguagem de programação utilizada pelo usuário para a 
compreendida pela máquina. Ele ainda pode passar por vários níveis, mas, 
em última instância, quando se está programando um microcontrolador dire-
tamente, o resultado será sempre uma sequência de 0 s e 1 s, adequadamente 
posicionados na memória do microcontrolador pelo compilador, para que o 
componente opere da maneira ordenada.
Perceba, ainda, que não há qualquer avaliação qualitativa por parte do am-
biente de desenvolvimento. O que estiver redigido, desde que utilizando termos 
e sintaxe adequados para aquele compilador, será traduzido para linguagem 
de máquina (WEBER, 2012) e gravado por meio de uma comunicação entre 
sua máquina e um equipamento de gravação, normalmente conectado pela 
USB do computador utilizado pelo programador e ligado nos pinos detalhados 
no datasheet do microcontrolador como pinos de programação (Figura 5) 
(MICROCHIP, 2009b).
Figura 5. Exemplo de uso do gravador modelo PICKit3 conectado pela USB ao 
computador e com os pinos de saída (1 a 6) no microcontrolador PIC18F45K20 
embutido em um kit de depuração.
Fonte: Adaptada de Microchip (2009b).
Fundamentos de microcontroladores12
Na lista de instruções dos microcontroladores, uma tabela discrimina a 
sequência binária que ordena determinado processamento. Junto dela, está 
o nome pelo qual o comando pode ser referenciado no ambiente de desen-
volvimento, conhecido por “mnemônico” e visa a facilitar a leitura e escrita 
pelo programador, visto que escrever apenas em termos de 0s e 1s é pouco 
compreensível. No Quadro 1, a seguir, constam alguns exemplos de instruções 
existentes no PIC16F877A, com a forma de escrita mnemônica, seguidos 
de modificações do comando, como endereços de memória/registradores 
envolvidos, posição binária da operação ou configuração do comando, além 
do equivalente binário que será gerado após a tradução do compilador.
Fonte: Adaptado de Microchip (2003).
Mnemônico Descrição Compilação
ADDWF f, d Soma os valores do registrador W com o 
registrador f. O resultado é armazenado 
no registrador W se d = 0, 
ou no registrador f se d = 1.
00 0111 dfff 
ffff
BTFSC f, b Testa se o valor do bit da posição 
b do registrador f é 0. Em caso 
verdadeiro, pula uma linha de 
instrução na execução do programa.
01 10bb bfff 
ffff
GOTO k Muda o endereço atual de memória 
de programa em execuçãopara o 
endereço especificado por k.
10 1kkk 
kkkk kkkk
Quadro 1. Exemplos de Instruções do PIC16F877A
Ao concluir a programação, o usuário pode ordenar a gravação do código 
no microcontrolador. Nesse momento, o ambiente de desenvolvimento ordena 
que um segundo programa execute a compilação desse código, que consiste 
em avaliar se a sintaxe está correta e traduzir a sequência de mnemônicos e 
demais dados para a sequência binária a ser gravada na memória de programa 
do microcontrolador. Essa linguagem direta, que traduz um mnemônico di-
retamente para a sequência binária, é normalmente conhecida por linguagem 
de máquina.
13Fundamentos de microcontroladores
No datasheet do primeiro microprocessador comercial, o Intel i4004, constam 46 instruções. 
Para realizar a operação de soma aritmética entre dois valores de diferentes endereços de 
memória, pode-se utilizar a função de mnemônico ADD. Apesar de operar com apenas 4 
bits, o i4004 demanda instruções de 8 bits e, para tanto, que sejam divididas em duas etapas.
O mnemônico ADD, segundo o datasheet, é traduzido para a sequência 1000 XXXX2, 
em que XXXX corresponde ao endereço de memória de um dos números a ser somado, 
enquanto o outro número corresponde ao já armazenado no registrador conhecido 
por acumulador.
Assim, antes que se possa somar dois endereços de memória, é necessário que um 
deles seja enviado ao registrador acumulador primeiramente. Nesse caso, deve-se 
utilizar outra instrução antes da soma em si: a instrução LD, traduzida para 1010 XXXX2, 
em que XXXX novamente corresponde ao endereço de memória do dado, agora, a 
ser carregado da memória para o acumulador.
Utilizando um ambiente de desenvolvimento capaz de compilar para o i4004, a 
soma dos valores dos endereços de memória 1 e 2 ficaria assim:
LD 1
ADD 2
Repare que, além do mnemônico, foram adicionados os valores de memória, já que 
o compilador necessita saber de que forma completar a tradução do mnemônico para 
a segunda metade que é variável em ambos os casos.
O código compilado resultaria em:
1010 0001
1000 0010
Ao processar isso, o microcontrolador carregaria o valor do endereço 1 de memória 
para o acumulador, somaria o valor do endereço 2 de memória com o valor do acu-
mulador e armazenaria o resultado no próprio acumulador.
É comum referir-se diretamente ao código de máquina como ASSEMBLY. Entretanto, 
apesar de ser a linguagem padrão de programação de baixo nível, na maioria dos casos, 
e de existir forte correlação entre eles, o ASSEMBLY é uma linguagem de programação 
padronizada e indiferente ao modelo ou dispositivo a ser programado. Deve, portanto, 
ser utilizado por um ambiente de desenvolvimento que seja capaz de efetuar o processo 
de compilação para traduzir do ASSEMBLY para cada linguagem de máquina específica.
Fundamentos de microcontroladores14
MICROCHIP. [Site]. 2019a. Disponível em: https://www.microchip.com/wwwproducts/
en/PIC16F877A. Acesso em: 01 jul. 2019.
MICROCHIP. PIC16F877A. 2019b. Disponível em: https://www.microchip.com/wwwpro-
ducts/en/PIC16F877A. Acesso em: 01 jul. 2019.
MICROCHIP. PIC16F87XA data sheet. 2003. Disponível em: http://ww1.microchip.com/
downloads/en/DeviceDoc/39582b.pdf. Acesso em: 01 jul. 2019.
MICROCHIP. PIC24HJ256GP206. 2019c. Disponível em: https://www.microchip.com/
wwwproducts/en/PIC24HJ256GP206. Acesso em: 01 jul. 2019.
MICROCHIP. PIC24HJXXXGPX06/X08/X10 data sheet. 2009a. Disponível em: http://ww1.
microchip.com/downloads/en/DeviceDoc/70175H.pdf. Acesso em: 01 jul. 2019.
MICROCHIP. PICkitTM 3 programmer/debugger user’s guide. 2009b. Disponível em: http://
ww1.microchip.com/downloads/en/DeviceDoc/PICkit_3_User_Guide_51795A.pdf. 
Acesso em: 01 jul. 2019.
PEREIRA, F. Microcontroladores PIC: técnicas avançadas. São Paulo: Érica, 2002.
PINHEIRO, F. A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed. 
São Paulo: Pearson, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre: 
AMGH, 2013. (Série Tekne, v. 2)..
WEBER, R. F. Fundamentos de arquitetura de computadores. 4. ed. Porto Alegre: Bookman, 
2012. (Livros Didáticos Informática UFRGS).
Leituras recomendadas
PEREIRA, F. Microcontroladores PIC 18 detalhado: hardware e software. São Paulo: Érica, 
2010.
SOUZA, D. J. Desbravando o PIC. 6. ed. São Paulo: Érica, 2003.
15Fundamentos de microcontroladores

Mais conteúdos dessa disciplina