Buscar

Apostila_Sistema_EmbarcadosVF

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

I 
 
 II 
Sumário 
 
1. SISTEMAS EMBARCADOS ....................................................................................................................... 1 
1.1 Tipos de aplicações de sistemas embarcados ........................................................................... 2 
1.2 Modos de funcionamento de sistemas embarcados ................................................................ 3 
1.3 O que é desejável em um sistema embarcado? ....................................................................... 4 
1.4 Exemplos de aplicações embarcadas ........................................................................................ 5 
1.5 Aplicações embarcadas em chips .............................................................................................. 6 
2 HISTÓRICO DOS SISTEMAS EMBARCADOS .................................................................................................. 9 
3. ORGANIZAÇÃO DE UM SISTEMA COMPUTACIONAL BÁSICO ........................................................................ 12 
3.1 Unidade Central de Processamento (CPU) .............................................................................. 14 
3.2. Sistema de Clock ..................................................................................................................... 21 
3.3. Tipos de Memória .................................................................................................................. 21 
3.4. Sinais de Entrada .................................................................................................................... 23 
3.5. Sinais de Saída ........................................................................................................................ 23 
3.6. Códigos de operação (opcodes) ............................................................................................. 23 
3.7. Mnemônicos das instruções e assembler .............................................................................. 24 
3.8. Interrupções ........................................................................................................................... 24 
3.9 Pipeline .................................................................................................................................... 25 
3.10. CISC × RISC ............................................................................................................................ 25 
3.11 Interfaces ............................................................................................................................... 26 
3.12 Comunicação Serial ............................................................................................................... 26 
4. MICROCONTROLADORES X MICROPROCESSADORES ................................................................................. 28 
4.1 Firmware ................................................................................................................................. 29 
4.2 Montadores e Compiladores ................................................................................................... 30 
4.3 Periféricos Internos dos Microcontroladores ......................................................................... 31 
 III 
4.3.1 Portas de I/O ..................................................................................................................... 31 
4.3.2 Timer / Counter (Temporizador / Contador) .................................................................... 32 
4.3.3 Watchdog Timer (WDT) .................................................................................................. 32 
4.3.4 Módulo PWM ................................................................................................................... 33 
4.3.5 EEPROM Interna ............................................................................................................. 33 
4.3.6 Interfaces Seriais USART, SPI e I
2
C ............................................................................... 33 
4.3.7 Controlador de LCD ......................................................................................................... 34 
4.3.8 Conversor Analógico para Digital (ADC) ........................................................................ 34 
5. ARDUINO .......................................................................................................................................... 35 
5.1 Instalação do Software ............................................................................................................ 36 
5.2 Primeiro projeto ...................................................................................................................... 37 
5.3. PRIMEIRO PROJETO ................................................................................................................ 38 
5.4 Alimentação do circuito .......................................................................................................... 40 
5.5 Bibliotecas e Shields ................................................................................................................ 41 
5.6 Integração com o PC ............................................................................................................... 42 
5.7 Portas analógicas e digitais ..................................................................................................... 43 
5.7.1 Portas digitais ................................................................................................................... 43 
5.7.1 Portas analógicas .............................................................................................................. 46 
 
 
 IV 
Índice de Figuras 
 
Figura 1. Vários sistemas embarcados em um automóvel, se comunicando por barramento CAN. ... 5 
Figura 2. Diagrama em blocos do μC MC68HC908RF2, da Freescale. ............................................ 6 
Figura 3. Diagrama de bloco de um sistema ..................................................................................... 12 
Figura 4. Interação da CPU e outros componentes computacionais. ................................................ 14 
Figura 5. Principais componentes de um sistema microprocessado. ................................................. 16 
Figura 6. Componentes da CPU08. ................................................................................................... 17 
Figura 7. Registrador A. .................................................................................................................... 18 
Figura 8. Registrador H:X. ................................................................................................................ 18 
Figura 9. Registrador CCR. ............................................................................................................... 19 
Figura 10. Registrador Stack Point. .................................................................................................. 20 
Figura 11. Microcontroladores permitem criar equipamentos menores e mais baratos. ................... 29 
Figura 12. Foto do hardware de um Arduino Duemilanove. ............................................................. 35 
Figura 13. Arduino IDE versão 18 rodando no Ubuntu GNU/Linux 10.10. ..................................... 38 
Figura 14. (a) LED apagado (b) LED aceso. ..................................................... 39 
Figura 15. Utilizando um LED externo para o exemplo Blink. ......................................................... 40 
Figura 16. Arduino alimentado por uma bateria de 9V. .................................................................... 41 
Figura 17. Arduino Duemilanove com shield Ethernet. .................................................................... 42 
Figura 18. Portas digitais do Arduino, de 13 a 0. ..............................................................................44 
Figura 19. Esquema elétrico ligando um botão ao Arduino. ............................................................. 45 
Figura 20. Portas analógicas do Arduino, de 0 a 5. ........................................................................... 46 
Figura 21. Circuito com LDR e LED. ............................................................................................... 47 
 
 
 1 
1. SISTEMAS EMBARCADOS 
 
Alguma vez você já se deu conta que o microondas de sua casa tem uma capacidade 
computacional maior do que tinha o projeto Apolo, que levou o homem a lua? Uma 
tendência que se observa é que cada vez mais inteligência será adicionada aos 
equipamentos do dia-a-dia. E ao contrário do que alguns filmes de ficção científica 
previam, como em “2001 – Uma odisséia no espaço” e seu supercomputador Hall, o 
controle, as decisões e o gerenciamento não serão concentrados em um único computador 
central, mas serão distribuídos entre todos os elementos de um ambiente. Embarcar 
inteligência em equipamentos é a tendência futura. 
Um sistema embarcado (ou sistema embutido) é um sistema microprocessado no 
qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema 
que ele controla. Diferentemente de computadores de propósito geral, como o computador 
pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente 
com requisitos específicos. Já que o sistema é dedicado a tarefas específicas, através 
de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e 
custo do produto. 
Em geral tais sistemas não podem ter sua funcionalidade alterada durante o uso. 
Caso queira-se modificar o propósito é necessário reprogramar todo o sistema. O usuário 
final não terá acesso ao programa que foi embutido no dispositivo, mas poderá interagir 
com o equipamento através de interfaces como teclados, displays, etc. desde que o sistema 
tenha sido projetado para tanto. 
 Voltando ao exemplo do forno de microondas, ao pressionar uma tecla como 
PIPOCA, um sistema interno deve saber ajustar a potência correta, selecionar e medir o 
tempo em que o forno deve ficar acionado e emitir um sinal quando a tarefa for concluída. 
Para executar esta simples operação, o “cérebro” do forno deve receber sinais de 
sensores como o da porta, para saber se a mesma foi realmente fechada, fazer acionamento 
do equipamento de potência, calcular o tempo da operação, acionar o motor que fará a 
rotação do prato, permitir que o usuário interrompa a operação a qualquer tempo, atualizar 
o display, medir quanto tempo se passou desde o início da operação e assim por diante. 
http://pt.wikipedia.org/wiki/Microprocessador
http://pt.wikipedia.org/wiki/Computador
http://pt.wikipedia.org/wiki/Computador_pessoal
http://pt.wikipedia.org/wiki/Computador_pessoal
http://pt.wikipedia.org/wiki/Engenharia
 2 
 Diferente dos computadores, que rodam sistemas operacionais como base para que 
outros aplicativos diversos sejam instalados e utilizados (cada um para uma aplicação 
diferente), os sistemas embarcados são construídos para executar apenas uma tarefa pré-
determinada. 
Muitas vezes não tem flexibilidade (de software e de hardware) que os permita fazer 
outra tarefa qualquer que não sejam aquelas para qual foram desenhados e desenvolvidos. 
A única flexibilidade permitida e desejada é no caso de um upgrade de novas 
versões, fazendo com que o sistema possa ser reprogramado, geralmente com correções ou 
novas funções que o tornam melhores. Mas isto sempre é feito pelos fabricantes e quase 
nunca pelos usuários finais. 
Há então a necessidade de um “cérebro” que gerencie todo o funcionamento deste 
sistema. Um microprocessador ou microcontrolador é a opção ideal para esta função, já que 
ambos têm capacidade de fazer a leitura de sinais externos, executar programas com as 
tarefas a serem feitas, processar os sinais e enviar para atuadores os resultados esperados. 
Quem programa e desenvolve sistemas embarcados costuma pensar neles como 
entradas, saídas, processamento, memórias, ambiente onde será utilizado, etc. Já o usuário 
final se preocupa apenas em como utilizar este sistema e o que ele agrega de valor a um 
produto, em termos de redução de custos, aumento de funcionalidade, aumento de 
desempenho e assim por diante. 
As principais características de um sistema embarcado estão relacionados com a sua 
capacidade computacional e na sua independência de operação. Outros aspectos relevantes 
são referentes aos tipos de sistemas, modos de funcionamento e itens desejados em 
aplicações embarcadas, que serão abordados nas próximas subseções. 
1.1 Tipos de aplicações de sistemas embarcados 
De modo geral, podem ser divididos os tipos de aplicações de sistemas embarcados 
em quatro grandes grupos: 
 Propósito geral: são as aplicações mais parecidas com os computadores de mesa, 
mas em embalagens embarcadas. Nelas costuma haver grande interação entre os usuários e 
o sistema, geralmente através de terminais de vídeo ou monitores. Como exemplo tem-se os 
videogames, os conversores de TV a cabo, caixas de bancos, entre outros. 
 3 
 Sistemas de controle: controles em malha fechada com realimentação em tempo 
real. Geralmente são as aplicações mais robustas, com placas dedicadas e múltiplos 
sensores de entrada e saída. Muitas vezes fornecem pouca interação com o usuário, 
mostrando sinalizações através de LEDs. Usados nos motores de automóveis, processos 
químicos, controle de voo, usinas nucleares, entre outros. 
 Processamento de sinais: onde envolve um grande volume de informação a ser 
processada em curto espaço de tempo. Os sinais a serem tratados são digitalizados através 
de conversores Analógico/Digital, processados, e novamente convertidos em sinais 
analógicos por conversores Digital/Analógico. Caso de tratamento de áudio, filtros, 
modens, compressão de vídeo, radares e sonares, entre outros. 
 Comunicações e redes: chaveamento e distribuição de informações. Sistemas de 
telefonia e telecomunicações e internet. 
1.2 Modos de funcionamento de sistemas embarcados 
Os dois modos de funcionamento dos sistemas embarcados, apresentados abaixo, 
são determinantes para saber como programar o dispositivo e como será seu funcionamento 
e comportamento na aplicação para o qual foi desenhado. 
 Reativo: o funcionamento se dá como resposta a eventos externos, que podem ser 
periódicos (caso de sistemas rotacionais ou de controles de laço (loop)) ou assíncronos 
(pressionamento de um botão por parte do usuário). Há, então, uma necessidade de entrada 
de dados para que aconteçam as ações de funcionamento. Geralmente não há limite de 
tempo para que os sinais de entrada sejam acionados, pois dependem da interação com o 
usuário ou com o processo ao qual é destinado. Porém, a saída, função do sinal de entrada, 
deve ser realizada exatamente após os sinais de entrada começar a atuar. 
 Controle em tempo real: existem limites de tempo para executar cada tarefa 
(leitura de sensor, emissão de sinais para um atuador, atualização de display, etc.). Por isso 
mesmo, nem sempre tempo real é igual ao modo mais rápido de executar uma tarefa. Estes 
modos de operação, por serem cíclicos, não dependem da entrada se sinais para executar as 
atividades, sendo capaz de tomar decisões referentes a ausência dos mesmo. Os sistemas de 
tempo real são classificados em: 
 4 
o Soft Real Time: As tarefas podem ser executadas em um intervalo de tempo 
específico, sem consequências graves se este limite de tempo não for cumprido. Um 
exemplo é um sistema bancário, onde apenas uma mensagem de erro aparecerá se 
determinada tarefa não for realizada dentro do tempo pré-determinado. A maior 
preocupação durante a programação dos dispositivos é relativa à repetição de 
procedimentos que podem ter seu prazo estourado e sobre as mensagens de alerta ao 
usuário. 
 o Hard RealTime: As tarefas devem ser executadas em um tempo específico, com 
consequências graves se qualquer tarefa falhar. Como exemplo pode-se pensar nos sistemas 
de controle de um avião, onde uma falha pode resultar em queda e perdas de vidas. A maior 
preocupação durante a programação dos dispositivos é relativa a ter sempre sistemas 
redundantes (duplicados) que empeçam ou alertem imediatamente caso algum processo 
falhe ou não seja executado dentro do tempo pré-determinado. 
1.3 O que é desejável em um sistema embarcado? 
As características mais desejadas em sistemas embarcados são: 
 Tamanho e peso: sempre os menores possíveis. Com a crescente miniaturização 
dos equipamentos eletroeletrônicos, os itens tamanho e peso são fatores decisivos na 
competitividade de um produto. Sem contar os custos envolvidos no envio de equipamentos 
grandes e pesados, já que um usuário pode adquirir um sistema embarcado em qualquer 
parte do mundo. 
 Consumo de energia: quanto maior for a autonomia do sistema e menor for sua 
necessidade de recarga ou troca de sistema de alimentação, mais competitivo será o 
produto, sem contar que as atuais legislações referentes ao consumo de energia preveem a 
necessidade cada vez maior de eficiência energética. 
 Robustez do equipamento: muitos sistemas embarcados são projetados para 
trabalhar em ambientes com condições adversas (vibrações, calor, poeira, variações na 
tensão de alimentação, interferências eletromagnéticas, raios, umidade, corrosão, etc). É 
necessário resistir bravamente a todas estas interferências e sobreviver. 
 
 5 
1.4 Exemplos de aplicações embarcadas 
Os sistemas embarcados estão a nossa volta e estamos de certo modo tão envolvidos 
por eles que nem nos damos conta de que determinado dispositivo trata-se de um sistema 
embarcado. Existe uma área da ciência da computação especializada em estudar estes 
conceitos chamados de computação ubíqua. Alguns exemplos que podem ser citados, com 
suas respectivas características são: 
 Aplicações embarcadas no setor automotivo - Um veículo top de linha é um 
excelente exemplo de um complexo sistema literalmente “embarcado”. Centenas de 
sensores fornecem informações sobre todo o funcionamento do veículo. Várias unidades de 
processamento independentes atuam em regiões diferentes e se comunicam entre si, 
captando os sinais destes sensores e fazendo com que as ações referentes a cada caso sejam 
tomadas. 
 Esta comunicação geralmente se dá através de redes cujo protocolo CAN tem se 
tornado o padrão. Isto acontece desde a central que memoriza a posição dos bancos, 
espelhos, volante, etc. para cada usuário do veículo até a central que gerencia o 
funcionamento do motor. 
Esta rede de comunicação, além de permitir total interação entre as diferentes áreas 
internas do veículo, faz com que haja uma grande diminuição da fiação interna, já que 
todos os elementos se conectam a rede por apenas dois fios, que constituem um barramento 
de comunicação. A Figura 1 ilustra esta situação. 
 
Figura 1. Vários sistemas embarcados em um automóvel, se comunicando por barramento 
CAN. 
 6 
 
 1.5 Aplicações embarcadas em chips 
Está se tornando cada vez mais comum o surgimento de chips que são um sistema 
inteiro em uma única pastilha, também conhecidos como SoC (Systems on Chip). É o caso 
de microcontroladores que já tem embutidos sensores (temperatura, pressão, etc.), 
transmissores (RF), interfaces gráficas para displays, etc. 
Como exemplo é mostrado na Figura 2 o diagrama em blocos do microcontrolador 
MC68HC908RF2, da Freescale, que já tem uma unidade transmissora e receptora de RF. 
Isto permite montar um sistema embarcado que se comunique sem fios com outros 
elementos, criando uma rede wireless. 
 
Figura 2. Diagrama em blocos do μC MC68HC908RF2, da Freescale. 
 7 
O mercado de microcontroladores apresenta-se em franca expansão, ampliando seu 
alcance principalmente em aplicações residenciais, industriais, automotivas e de 
telecomunicações. Segundo dados da National Semiconductor, uma residência típica 
americana possuía 35 produtos baseados em microcontrolador em 2005. Estima-se que, em 
2015, em média uma pessoa interagirá com 350 dispositivos com microcontroladores 
diariamente. 
Em um passado recente, o alto custo dos dispositivos eletrônicos limitou o uso dos 
microcontroladores apenas aos produtos domésticos considerados de alta tecnologia 
(televisão, vídeo e som). Porém, com a constante queda nos preços dos circuitos integrados, 
os microcontroladores passaram a ser utilizados em produtos menos sofisticados do ponto 
de vista da tecnologia, como máquinas de lavar, microondas, fogões e refrigeradores. 
Assim, a introdução do microcontrolador nestes produtos cria uma diferenciação e permite 
a inclusão de melhorias de segurança e novas funcionalidades. Alguns mercados chegaram 
ao ponto de tornar obrigatório o uso de microcontroladores em determinados tipos de 
equipamentos, impondo um pré-requisito tecnológico. 
Muitos produtos que temos disponíveis hoje em dia, simplesmente não existiriam, 
ou não teriam as mesmas funcionalidades sem um microcontrolador. É o caso, por 
exemplo, de vários instrumentos biomédicos, instrumentos de navegação por satélites, 
detectores de radar, equipamentos de áudio e vídeo, eletrodomésticos, entre outros. 
Entretanto, o alcance dos microcontroladores vai além de oferecer algumas 
facilidades. Uma aplicação crucial, onde os microcontroladores são utilizados, é na redução 
de consumo de recursos naturais. Existem sistemas de aquecimento modernos que captam a 
luz solar e, de acordo com a demanda dos usuários, controlam a temperatura de forma a 
minimizar perdas. Um outro exemplo, de maior impacto, é o uso de microcontroladores na 
redução do consumo de energia em motores elétricos, que são responsáveis pelo consumo 
de aproximadamente 50% de toda eletricidade produzida no planeta. Portanto, o alcance 
dessa tecnologia tem influência muito mais importante em nossas vidas, do que se possa 
imaginar. 
O universo de aplicações dos microcontroladores, como já mencionado, está em 
grande expansão, sendo que a maior parcela dessas aplicações é em sistemas embarcados. 
A expressão “sistema embarcado” (do inglês embedded system) se refere ao fato do 
 8 
microcontrolador ser inserido nas aplicações (produtos) e usado de forma exclusiva por 
elas. Como a complexidade desses sistemas cresce vertiginosamente, o software tem sido 
fundamental para oferecer as respostas às necessidades desse mercado. Tanto é, que o 
software para microcontroladores representa uma fatia considerável do mercado de 
software mundial. Segundo Edward Yourdon (consultor na área de computação, pioneiro 
nas metodologias de engenharia do software e programação estruturada) a proliferação dos 
sistemas embarcados, juntamente com o advento da Microsoft, são os responsáveis pela 
retomada do crescimento da indústria de software nos Estados Unidos da América. 
 
 9 
2 HISTÓRICO DOS SISTEMAS EMBARCADOS 
 
Nos primeiros anos dos computadores digitais na década de 1940, os computadores 
eram por vezes dedicados a uma única tarefa. Eram, entretanto, muito grandes para serem 
considerados embarcados. O conceito de controlador programável foi desenvolvido algum 
tempo depois. 
O primeiro sistema embarcado reconhecido foi o Apollo Guidance Computer, 
desenvolvido por Charles Stark Draper no MIT. O computador de guia, que operava em 
tempo real, era considerado o item mais arriscado do projeto Apollo. O uso de circuitos 
integrados monolíticos para reduzir o tamanho e peso do equipamento aumentou tal risco. 
O primeiro sistema embarcado de produção em massa foi o computador guia do 
míssil nuclear LGM-30 Míssil Minuteman, lançado em 1961. Ele possuía um disco rígido 
para a memória principal. Quando a segunda versão do míssil entrou em produção em 
1966, o computador guia foi substituído porum novo, que constituiu o primeiro uso em 
grande volume de circuitos integrados. A tecnologia desse projeto reduziu o preço de 
circuitos integrados como o NAND de mil para três dólares americanos cada, permitindo 
seu uso em sistemas comerciais. 
Desde suas primeiras aplicações na década de 1960, os sistemas embarcados vêm 
reduzindo seu preço. Também tem havido um aumento no poder de processamento e 
funcionalidade. Em 1978 foi lançada pela National Engineering Manufacturers Association 
a norma para microcontroladores programáveis. 
Em meados da década de 1980, vários componentes externos foram integrados no 
mesmo chip do processador, o que resultou em circuitos integrados chamados 
microcontroladores e na difusão dos sistemas embarcados. 
Com o custo de microcontroladores menor que um dólar americano, tornou-se 
viável substituir componentes analógicos caros como potenciômetros e capacitores por 
eletrônica digital controlada por pequenos microcontroladores. No final da década de 1980, 
os sistemas embarcados já eram a norma ao invés da exceção em dispositivos eletrônicos. 
Não é exagero dizer que o microprocessador e o microcomputador revolucionaram a 
indústria eletrônica e tiveram um enorme impacto em diversos aspectos de nossas vidas. O 
http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1940
http://pt.wikipedia.org/wiki/Apollo_Guidance_Computer
http://pt.wikipedia.org/wiki/Charles_Stark_Draper
http://pt.wikipedia.org/wiki/MIT
http://pt.wikipedia.org/wiki/Tempo_real
http://pt.wikipedia.org/wiki/Projeto_Apollo
http://pt.wikipedia.org/wiki/Circuito_integrado
http://pt.wikipedia.org/wiki/Circuito_integrado
http://pt.wikipedia.org/wiki/Produ%C3%A7%C3%A3o_em_massa
http://pt.wikipedia.org/wiki/LGM-30_M%C3%ADssil_Minuteman
http://pt.wikipedia.org/wiki/1961
http://pt.wikipedia.org/wiki/Disco_r%C3%ADgido
http://pt.wikipedia.org/wiki/1966
http://pt.wikipedia.org/wiki/NAND
http://pt.wikipedia.org/wiki/USD
http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1960
http://pt.wikipedia.org/wiki/1978
http://pt.wikipedia.org/w/index.php?title=National_Engineering_Manufacturers_Association&action=edit&redlink=1
http://pt.wikipedia.org/wiki/D%C3%A9cada_de_1980
http://pt.wikipedia.org/wiki/Chip
http://pt.wikipedia.org/wiki/Microcontrolador
http://pt.wikipedia.org/wiki/Potenci%C3%B4metro
http://pt.wikipedia.org/wiki/Capacitor
 10 
desenvolvimento de Circuitos Integrados (CI’s) de altíssima densidade reduziu tão 
drasticamente o tamanho e o custo dos microcomputadores que os projetistas 
rotineiramente consideram utilizar suas capacidades e versatilidade em uma grande 
variedade de produtos e aplicações. 
Apesar de focarmos nos microcontroladores, a maioria dos conceitos e ideias se 
aplica aos computadores de todos os portes. Para ilustrar o aspecto operacional diverso dos 
microcontroladores, utilizaremos como exemplo um bastante conhecido: o Intel 8051. 
A família 8051 representa na verdade uma ramificação da árvore da família dos 
microprocessadores. Conforme a tecnologia de microprocessadores e microcomputadores 
evoluiu, desde os 4 bits (Intel 4004) no início dos anos 1970 para os processadores de 8 bits 
(8008, 8080, 8085, 6800, 6502, Z80 etc.), no final dessa mesma década as aplicações se 
dividiram em ramos distintos. 
Um destes ramos foi a infância dos computadores pessoais. Estes computadores, 
baseados em microprocessadores, pretendiam ser ferramentas versáteis que poderiam 
carregar e executar vários programas, tais como processadores de texto, planilhas, banco de 
dados e jogos. Eles poderiam ser facilmente programados pelo usuário para realizar o que 
ele imaginasse. Os descendentes de 16 e 32 bits (8086, as séries 80x86 e 680x0) 
simplesmente evoluíram a partir daí. A arquitetura básica do microprocessador não mudou 
substancialmente desde os primeiros sistemas, embora a velocidade e a quantidade de 
memória endereçada diretamente tenham aumentado significativamente. 
O segundo ramo que se desenvolveu a partir de 1970 foi à utilização dos 
computadores baseados em microprocessadores como unidade de controle embutida num 
produto comercial. Este tipo de microcomputador é construído com os mesmos 
elementos de um computador pessoal, mas é programado apenas uma vez pelo 
fabricante. Deste modo, ele passa sua “vida” realizando tarefas específicas das 
funcionalidades do produto o qual ele faz parte, tais como esperar que teclas sejam 
pressionadas ou ligar e desligar dispositivos tais como luzes, motores, campainhas, 
dentre outros. 
A família 8051 se enquadra nesta categoria, geralmente conhecida como 
microcontroladores dedicados. Esta família de dispositivos foi desenvolvida no início 
dos anos 1980 juntamente com o 68HC11, mas as aplicações desses dispositivos de 8 
 11 
bits orientados para controle se tornaram tão difundidas que eles ainda são utilizados 
nos dias atuais. Muitas versões diferentes do 8051 original foram desenvolvidas com 
características especiais, mas elas ainda utilizam o mesmo conjunto básico de 
instruções e a arquitetura do original. Muitos outros microcontroladores, mais 
complexos e de maior poder de processamento, foram desenvolvidos para aplicações 
que exigem mais do que a capacidade de um computador de oito bits, a exemplo, em 
aplicações para processamento de algoritmos e realização de cálculos complexos em 
alta velocidade e em tempo real como modens, controle e acionamento de motores, 
dentre outros. Para estas aplicações, foram desenvolvidos os DSCs (acrônimo inglês 
para “Controladores Digitais de Sinais”) e os DSPs (acrônimo inglês para 
“Processadores Digitais de Sinais”). 
 
 12 
3. ORGANIZAÇÃO DE UM SISTEMA COMPUTACIONAL 
BÁSICO 
 
Um microcontrolador é um sistema computacional completo, no qual estão 
incluídos uma CPU (Central Processor Unit – Unidade Central de Processamento), 
memória de dados e programa, um sistema de clock, portas de I/O (Input/Output – 
Entrada/Saída), além de outros possíveis periféricos, tais como, módulos de temporização e 
conversores A/D (Analógico/Digital) entre outros, integrados em um mesmo componente. 
 
Figura 3. Diagrama de bloco de um sistema 
As partes integrantes de qualquer computador, e que também estão presentes, em 
menor escala, nos microcontroladores são: 
 Unidade Central de Processamento (CPU). 
 Sistema de clock para dar sequência às atividades da CPU. 
 Memória para armazenamento de instruções e para manipulação de dados. 
 Entradas para interiorizar na CPU informações do mundo externo. 
 Saídas para exteriorizar informações processadas pela CPU para o mundo externo. 
 Programa (Firmware) para definir um objetivo ao sistema. 
 13 
Além do Microprocessador, o sistema básico mostrado na Figura 3 possui os 
seguintes elementos: 
 Interrupções: são sinais de entrada oriundos do meio externo que fazem com que o 
processamento corrente seja interrompido e em seu lugar seja executada uma sub-rotina 
específica para o tratamento da interrupção, denominada ISR (Interrupt Service Routine). 
Ao finalizar a ISR o processamento retorna para o ponto onde havia sido interrompido. 
 Gerador de Reset: responsável por inicializar o sistema (inicializar os estados 
iniciais dos I/Os, variáveis, periféricos, registradores, etc.). O reset pode ocorrer ao ligar, 
quando da queda ou flutuações no sinal de alimentação, pelo programa sendo executado no 
microcontrolador, ou intencionalmente pelo próprio usuário (por meio de um pino ou botão 
de reset). 
 Gerador de Clock: é um circuito eletrônico constituído de um oscilador 
encarregado de gerar os pulsos digitais necessários à execução e ao sincronismo do sistema. 
Um sistema computacional é um sistema digital combinacional e sequencial (síncrono e 
assíncrono), daí a necessidade do gerador de clock (relógio). Memória de Programa: memória onde o microprocessador busca as próximas 
instruções a serem executadas. O ciclo de busca de instruções pelo hardware do 
microprocessador é denominado fetch cycle. Em sistemas dedicados, costuma-se utilizar 
memórias ROM, embora em alguns casos memórias RAM também sejam utilizadas (ambas 
as memórias serão abordadas com mais detalhes a seguir). 
 Memória de Dados: memória onde o microprocessador lê e escreve dados 
temporários (resultados de operações e cálculos) durante a operação normal. Geralmente é 
do tipo volátil, embora memórias não voláteis possam ser utilizadas. 
 Seleção de Endereços e Chip Selects: lógica combinacional para escolher qual 
memória ou periférico o microprocessador irá utilizar para escrita ou leitura de dados. 
 Arquitetura de barramentos: a arquitetura de barramentos define que cada um dos 
vários módulos constituintes de um sistema deve estar conectado aos outros por meio de 
um conjunto de linhas de sinais elétricos que conduzem informações com características 
comuns, denominadas Barramento, dessa forma, recebem ao mesmo tempo os mesmos 
sinais. 
 14 
Os Barramentos estão agrupados conforme a natureza do dado que transportam. Se 
as linhas de um determinado barramento transportam dados manipuláveis, são conhecidas 
como Barramento de Dados, se transportam dados que definem a origem ou o destino da 
informação, no caso, memórias ou I/Os, são denominadas Barramento de Endereços, e se 
transportam sinais de gerenciamento do controle de acessos (leitura, escrita, habilitação de 
memórias ou I/Os), são denominados Barramento de Controle. Se um sistema possui um 
único barramento de cada tipo (um de dados, um de endereços e um de controle), ele possui 
uma arquitetura de barramento Von Neumann, e se o sistema possui mais de um 
barramento de um mesmo tipo (por exemplo, dois barramentos de dados distintos), ele 
possui uma arquitetura de barramento Harward. 
As vantagens da utilização da arquitetura de barramentos residem na redução do 
número de conexões entre os módulos de um sistema e a facilidade de inclusão de um novo 
módulo ao mesmo. 
3.1 Unidade Central de Processamento (CPU) 
A unidade central de processamento é composta por uma unidade lógica aritmética 
(ULA), por uma unidade de controle e por unidades de memória especiais conhecidas por 
registradores. A Figura 4 apresenta um diagrama de blocos com uma possível interface 
entre a CPU e os outros dispositivos. 
 
Figura 4. Interação da CPU e outros componentes computacionais. 
 15 
A unidade de memória permite armazenar grupos de dígitos binários que podem 
representar instruções que o processador irá executar ou dados que serão manipulados pelo 
processador. A unidade de entrada consiste em todos os dispositivos utilizados para obter 
informações e dados externos ao processador. A unidade de saída consiste em dispositivos 
capazes de transferir dados e informações do processador para o exterior. 
A ULA é a área de uma CPU na qual as operações lógicas e aritméticas são 
realizadas sobre os dados. O tipo de operação realizada é determinada pelos sinais da 
unidade de controle. Os dados a serem operados pela ULA podem ser oriundos de uma 
memória ou de uma unidade de entrada. Os resultados das operações realizadas na ULA 
podem ser transferidos tanto para uma memória de dados como para uma unidade de saída. 
A função da unidade de controle é comandar as operações da ULA e de todas as 
outras unidades conectadas a CPU, fornecendo sinais de controle e temporização. De certa 
maneira, a unidade de controle é como um maestro que é responsável por manter cada um 
dos membros da orquestra em sincronismo. Essa unidade contém circuitos lógicos e de 
temporização que geram os sinais apropriados necessários para executar cada instrução de 
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 palavra da instrução armazenada na 
posição de memória é transferida para um registrador conhecido por registrador de 
instruções (RI) da unidade de controle. Essa palavra de instrução, que está em código 
binário, é então decodificada pelos circuitos lógicos na unidade de controle para determinar 
a instrução que está sendo invocada. A unidade de controle usa essa informação para enviar 
os sinais apropriados para as unidades restantes a fim de executar a operação específica. 
Essa sequência de busca de um código de instrução e de execução da operação 
indicada é repetida indefinidamente pela unidade de controle. Essa sequência repetitiva de 
busca/execução continua até que a CPU seja desligada ou até que o reset seja ativado. O 
reset sempre faz a CPU buscar sua primeira instrução no programa. 
Uma CPU, também conhecida por processador, repete indefinidamente as mesmas 
operações básicas de busca e execução. Naturalmente, os diversos ciclos de execução serão 
diferentes para cada tipo de instrução à medida que a unidade de controle envia sinais 
diferentes para as outras unidades de execução de uma instrução em particular. 
 16 
Um registrador é um tipo de memória de pequena capacidade porém muito rápida, 
contida na CPU, utilizado no armazenamento temporário de dados durante o 
processamento. Os registradores estão no topo da hierarquia de memória, sendo desta forma 
o meio mais rápido e de maior custo para armazenar um dado. 
Cada registrador de um processador possui uma função especial. Um dos mais 
importantes é o contador de programa (program counter – PC), que armazena os endereços 
dos códigos das instruções à medida que são buscadas na memória. Outros registradores 
são utilizados para realizar funções como: armazenamento de códigos de instrução (RI), 
manutenção dos dados operados pela ULA (acumulador), armazenamento de endereços de 
dados a serem lidos na memória (ponteiro de dados), além de outras funções de 
armazenamento e contagem. Todos os processadores possuem um registrador em especial 
muito utilizado chamado de acumulador ou registrador “A”. Ele armazena um operando 
para quaisquer instruções, lógica ou matemática. O resultado da operação é armazenado no 
acumulador após a instrução ser executada. 
Para que exista comunicação entre as unidades que formam um processador 
devemos definir uma forma de conexão entre estas unidades. Em um processador 
tradicional com arquitetura Von Neuman este meio é o barramento de dados. A largura do 
barramento de dados em bits é o que determina o número de bits para um dado processador. 
A Figura 5 apresenta a interface dos principais dispositivos que compõem um sistema 
microprocessado através de um barramento de dados. 
 
Figura 5. Principais componentes de um sistema microprocessado. 
 17 
A CPU é o centro de todo sistema computacional, e não é diferente quando se trata 
de microcontroladores. O trabalho da CPU é executar rigorosamente as instruções de um 
programa, na sequência programada, para uma aplicação específica. Um programa 
computacional (software) instrui a CPU a ler informações de entradas, ler e escrever 
informações na memória de dados, e escrever informações nas saídas. O diagrama de 
blocos simplificado da CPU presente nos microcontroladores da família HC08, também 
denominado de CPU08, é apresentado na Figura 6. 
 
Figura 6. Componentes da CPU08. 
As principais funções de cada um dos componentes da CPU08 serão apresentadas a 
seguir: 
 Unidade Lógica/Aritmética (ULA): A ULA é utilizada para realizar operações 
lógicas e aritméticas definidas no conjunto de instruções da CPU. Vários circuitos 
implementam as operações aritméticas binárias decodificas pelas instruções e fornecem 
dados para a execução da operação na ULA. A maioria das operações aritméticas binárias 
são baseadas em algoritmos de adição e subtração (adição com o valor negativo). A 
multiplicação é realizada através de uma série de adições e deslocamentos coma ULA sob 
controle lógico da CPU. 
 Controle da CPU: O circuito de controle da CPU implementa o sequenciamento de 
elementos lógicos necessários para a ULA realizar as operações requisitadas durante a 
execução do programa. O elemento central da seção de controle da CPU é o decodificador 
de instruções. Cada opcode (código de instrução) é decodificado para determinar quantos 
 18 
operandos são necessários e qual sequência de passos será necessária para completar a 
instrução em curso. Quando uma instrução é executada completamente, o próximo opcode 
é lido e decodificado. 
 Registradores da CPU: A CPU08 contém 5 registradores como apresentado na 
Figura 6. Os registradores da CPU são memórias especiais que não fazem parte do mapa de 
memória. O conjunto de registradores da CPU é frequentemente chamado de modelo de 
programação. 
O acumulador, também chamado de registrador A, é frequentemente utilizado para 
armazenar um dos operandos ou o resultado de operações (Figura 7). 
 
Figura 7. Registrador A. 
O registrador H:X é um registrador de 16 bits de índice que possibilita ao usuário 
endereçar indiretamente o espaço de memória de 64Kbytes. O byte mais significativo do 
registrador de índice é denominado H e o byte menos significativo é denominado X (Figura 
8). Sua principal função é servir de apontador para uma área na memória onde a CPU irá 
carregar (ler) ou armazenar (escrever) informação. Quando não estiver sendo utilizado para 
apontar um endereço na memória, ele pode ser utilizado como registrador genérico. 
 
Figura 8. Registrador H:X. 
O registrador Program Counter (PC) é usado pela CPU para controlar e conduzir 
ordenadamente a busca do endereço da próxima instrução a ser executada. Quando a CPU é 
energizada ou passa por um processo de reset, o PC é carregado com o conteúdo de um par 
de endereços específicos denominados vetor de reset (reset vector). O vetor de reset 
contém o endereço da primeira instrução a ser executada pela CPU. Assim que as 
instruções são executadas, uma lógica interna a CPU incrementa o PC, de tal forma que ele 
sempre aponte para o próximo pedaço de informação que a CPU vai precisar. O número de 
 19 
bits do PC coincide exatamente com o número de linhas do barramento de endereços, que 
por sua vez determina o espaço total disponível de memória que pode ser acessada pela 
CPU. 
O registrador Condition Code (CCR) é um registrador de 8 bits que armazena os 
bits de estado (flags) que refletem o resultado de algumas operações da CPU. As instruções 
de desvio usam estes bits de estado para tomar suas decisões. A Figura 9 apresenta a 
estrutura do CCR. 
 
Figura 9. Registrador CCR. 
A descrição dos bits do registrador de condição é apresentada abaixo: 
V (Bit de Overflow) - A CPU leva o bit de overflow para nível lógico alto quando 
houver estouro no resultado de uma operação em complemento de 2. O bit V é utilizado 
pelas instruções de desvios condicionais. 
H (Bit de Half-carry) - A CPU leva o bit de half-carry para nível lógico alto 
quando ocorrer estouro entre os bits 3 e 4 do acumulador durante as operações de adição. 
I (Máscara de Interrupções) - Quando o bit I está em nível lógico alto, todas as 
interrupções são mascaradas (desabilitadas). As interrupções são habitadas quando o bit I é 
levado a nível lógico baixo. Quando ocorre uma interrupção, o bit que mascara as 
interrupções é automaticamente levado a nível lógico alto. Depois que os registradores da 
CPU são armazenados na pilha este bit volta ao nível lógico baixo. Se uma interrupção 
ocorrer enquanto o bit I estiver ativado, seu estado será guardado. As interrupções são 
atendidas, em ordem de prioridade, assim que o bit I for a nível lógico 0. A instrução 
retorno da interrupção (RTI) retorna os registradores da CPU da pilha, e restaura o bit I no 
seu estado de nível lógico 0. Após qualquer reset, o bit I é colocado em nível lógico alto e 
só pode ser limpo por uma instrução de software (CLI). 
N (Bit Negativo) - A CPU coloca o bit N em nível lógico alto quando uma operação 
aritmética, lógica ou de manipulação de dados produzir um resultado negativo. 
Corresponde ao 8
o
 bit do registrador que contém o resultado. 
 20 
Z (Bit Zero) - A CPU leva o bit Z para nível lógico alto quando uma operação 
aritmética, lógica ou de manipulação de dados produzir um resultado igual a 0. 
C (Bit Carry/Borrow) - A CPU coloca o bit C em nível lógico alto quando uma 
operação de adição produzir um valor superior a 8 bits ou quando uma subtração necessitar 
um empréstimo. Algumas operações lógicas e as instruções de manipulação de dados 
também podem modificar o estado do bit C. 
O Stack Pointer (SP) (Figura 10) é um registrador cuja função é apontar para a 
próxima localização disponível (endereço livre) de uma pilha (lista de endereços 
contíguos). A pilha pode ser vista como um monte de cartas empilhadas, onde cada carta 
armazena um byte de informação. A qualquer hora, a CPU pode colocar uma carta nova no 
topo da pilha ou retirar uma carta do topo da pilha. As cartas que estão no meio da pilha 
não podem ser retiradas até que todas que estejam acima dela sejam removidas primeiro. A 
CPU acompanha o efeito da pilha através do valor armazenado no SP. O SP sempre aponta 
para a localização de memória disponível para se colocar a próxima carta (byte). 
 
Figura 10. Registrador Stack Point. 
Normalmente, a CPU usa a pilha para guardar os endereços de retorno e o contexto, 
isto é, os registradores da CPU, na ocorrência de uma exceção (interrupção ou reset). 
Durante um reset, o Stack Pointer contém o endereço 0x00FF. A instrução RSP 
(Reset Stack Pointer) carrega o byte menos significativo com 0xFF e o byte mais 
significativo não é afetado. Quando a CPU insere um novo dado na pilha, automaticamente 
o SP é decrementado para o próximo endereço livre. Quando a CPU retira um dado da 
pilha, o SP é incrementado para apontar para o dado mais recente, e o valor do dado é lido 
nesta posição. Quando a CPU é energizada ou passa por um processo de reset, o SP aponta 
para um endereço específico na memória RAM (no caso dos microcontroladores HC08 e 
HCS08 = 0x00FF). 
A CPU08 possui modos de endereçamento indexado com offsets de 8 ou 16 bits do 
SP para acesso de variáveis temporárias inseridas na pilha. A CPU utiliza o conteúdo do 
registrador SP para determinar o endereço efetivo do operando. 
 21 
Embora o endereço inicial do SP seja 0x00FF, a localização da pilha é arbitrária e 
pode ser realocada pelo usuário em qualquer lugar na RAM. Movimentar o SP para fora da 
página de acesso direto (0x0000 a 0x00FF) permitirá que este espaço de memória seja 
utilizado para modos de endereçamento mais eficientes. 
3.2. Sistema de Clock 
Todo sistema computacional utiliza um clock para fornecer a CPU uma maneira de 
se mover de instrução em instrução, em uma sequência pré-determinada. Uma fonte de 
clock de alta frequência é utilizada para controlar a sequencia das instruções da CPU. O 
clock nada mais é que um sinal encarregado de oferecer a referência do sincronismo para 
todo o sistema, onde a cada intervalo de tempo fixo é gerado um pulso digital, podendo ser 
um circuito multivibrador estável, um circuito oscilador RC ou um oscilador baseado em 
um cristal de quartzo como elemento ressonante, sendo este último o mais empregado. 
O Ciclo de Instrução está diretamente relacionado ao clock do sistema. É definido 
como a quantidade “n” de pulsos de clock necessários para se executar uma instrução (a 
cada “n” clocks é efetuado uma instrução). Como resultado, a frequência de execução de 
instruções é inferior a frequência do sinal de clock. O ciclo de instrução especifica uma 
unidade de desempenho de microcontroladores muito utilizada: o MIPS (Milhões de 
Instruções por Segundo). 
3.3. Tipos de Memória 
As memórias são unidades de armazenamento que garantem a integridade de uma 
informação de forma a poderser recuperada no futuro. Podemos pensar na memória como 
sendo uma lista de endereços postais, onde o conteúdo de cada endereço é um valor fixo de 
8 bits (para CPU de 8 bits). Se um sistema computacional tem n linhas (bits) de endereços, 
ele pode endereçar 2
n
 posições de memória (p.ex.: um sistema com 14 linhas pode acessar 
21
4
 = 16.384 endereços). 
De uma forma geral, as memórias estão classificadas em duas importantes 
categorias: RAM e ROM. 
 RAM (Random Access Memory) – Memória de acesso aleatório. Pode ser lida ou 
escrita pela execução de instruções da CPU e, normalmente é utilizada para manipulação de 
dados pela CPU. O conteúdo é perdido na ausência de energia (memória volátil). As RAMs 
 22 
são memórias de alta velocidade utilizadas para registrar informações durante a execução 
de um programa. São divididas em dois grupos: as Dinâmicas, baseadas em capacitores e as 
Estáticas, baseadas em circuitos flip-flops. 
 ROM (Read-Only Memory) – Memória apenas de leitura. Pode ser lida, mas não é 
alterável. O conteúdo deve ser determinado antes que o circuito integrado seja fabricado. O 
conteúdo é mantido na ausência de energia (memória não volátil). Os tipos de memória 
ROM mais populares são: 
a) OTP (One-Time Programmable): são memórias que só podem ser programadas 
(gravadas) uma única vez. Caso seja programada (gravada) com dados incorretos, os 
mesmos não poderão ser apagados e a memória não poderá ser reprogramada, estando o 
componente inutilizado para sempre. Em contrapartida, essas memórias possuem baixo 
custo, assim, são utilizadas no produto final. 
b) EPROM (Erasable and Programmable Read-Only Memory): diferentemente do 
tipo anterior, esta permite ser apagada e reprogramada, desta forma, é ótima para ser 
utilizada no desenvolvimento de produtos. Seu custo é razoável (um pouco maior que a 
OTP), permitindo que o componente acompanhe o produto final. O procedimento para 
apagar a EPROM consiste na exposição à luz ultravioleta por 10 a 20 minutos, por isso o 
seu invólucro (encapsulamento) possui uma “janela” transparente de tamanho igual ou 
superior a pastilha de silício do chip. Uma vez gravada, a janela deverá ser coberta com um 
adesivo opaco, evitando a exposição à luz do sol, uma vez que a componente ultravioleta da 
luz poderá apagar alguns dados, corrompendo-os. 
c) EEPROM ou E2PROM (Electrically Erasable Programmable Read-Only 
Memory): esta tecnologia permite apagar os dados (bits individuais) por meio de sinais 
elétricos. Para apagar uma EEPROM coloca-se nos seus pinos uma tensão elétrica superior 
à convencional de trabalho (geralmente 5 volts). Em frações de segundo a memória estará 
apagada e pronta para nova gravação; 
d) FLASH: Esta tecnologia é muito empregada atualmente, pois com um pulso 
elétrico de curto período em determinados pinos é possível apagar a memória diretamente 
do circuito (excelente para ser utilizada na fase de desenvolvimento, já que não é necessária 
a remoção do chip), com a diferença em relação à EEPROM de se apagar uma sequência de 
bytes. Seu custo é razoavelmente favorável, podendo acompanhar o produto final. 
 23 
3.4. Sinais de Entrada 
Dispositivos de entrada fornecem informação para a CPU processar, vindas do 
mundo externo. A maioria das entradas que os microcontroladores processam são 
denominadas sinais de entrada digitais, e utilizam níveis de tensão compatíveis com a fonte 
de alimentação do sistema. O sinal de 0V (0 volts ) indica o nível lógico 0 e o sinal de fonte 
positiva, que tipicamente é +5V (5 volts) indica o nível lógico 1 (atualmente os 
microcontroladores começaram a reduzir a tensão para valores na faixa dos +3V. 
Naturalmente que no mundo real existem sinais puramente analógicos (com uma 
infinidade de valores) ou sinais que utilizam outros níveis de tensão. Logicamente, que é 
necessário realizar a conversa dos sinais analógicos para digitais. Alguns 
microcontroladores incluem circuitos conversores analógicos/digitais (ADC) encapsulados 
no mesmo componente. 
3.5. Sinais de Saída 
Dispositivos de saída são usados para informar ou agir no mundo exterior através do 
processamento de informações realizados pela CPU. Circuitos eletrônicos, algumas vezes 
construídos no próprio microcontrolador, podem converter sinais digitais em níveis de 
tensão analógicos. 
3.6. Códigos de operação (opcodes) 
Os programas usam códigos para fornecer instruções para a CPU. Estes códigos são 
chamados de códigos de operação ou opcodes. Cada opcode instrui a CPU a executar uma 
sequência específica para realizar sua operação. Microcontroladores de diferentes 
fabricantes usam diferentes conjuntos de opcodes porque são implementados internamente 
por hardware na lógica da CPU. O conjunto de instruções de uma CPU especifica todas as 
operações que podem ser realizadas. Opcodes são uma representação das instruções que são 
entendidas pela máquina, isto é, uma codificação em representação binária a ser utilizada 
pela CPU. Mnemônicos são outra representação para as instruções, só que agora, para 
serem entendidas pelo programador. 
 24 
3.7. Mnemônicos das instruções e assembler 
Um opcode como 0x4C é entendido pela CPU, mas não é significativo para nós 
humanos. Para resolver esse problema, um sistema de instruções mnemônicas equivalentes 
foram criadas (Linguagem Assembly). O opcode 0x4C corresponde ao mnemônico INCA, 
lê-se “incrementa o acumulador”, que é muito mais inteligível. Para realizar a tradução de 
mnemônicos em códigos de máquina (opcodes e outras informações) utilizados pela CPU é 
necessário um programa computacional chamado assembler (compilador para linguagem 
Assembly). Um programador utiliza um conjunto de instruções na forma de mnemônicos 
para desenvolver uma determinada aplicação, e posteriormente, usa um assembler para 
traduzir estas instruções para opcodes que a CPU pode entender. 
3.8. Interrupções 
Como mencionado anteriormente, interrupção é um sinal do hardware oriundo de 
um evento externo ao sistema, que provoca um desvio da execução normal do programa 
principal para um endereço da memória de programa onde se encontra uma sub-rotina 
específica para o tratamento do referido evento. As estruturas de interrupção são utilizadas 
para que a CPU tome conhecimento de eventos de alta prioridade para o programa, sem a 
necessidade de o programa principal ter de monitorá-los periodicamente e com isso não 
perder tempo com processamentos desnecessários. 
São exemplos de eventos externos que geram interrupções: (i) finalização de uma 
conversão de um sinal analógico para digital; (ii) a recepção de um byte pela porta serial; 
(iii) o estouro de contagem de um temporizador; (iv) a transição de nível de uma entrada 
digital, como o pressionamento de uma tecla; dentre outros. 
Quando ocorre um evento de interrupção, a instrução em execução é completada, o 
conteúdo do PC (ou equivalente) é armazenado na pilha e o programa é desviado para um 
endereço conhecido como vetor de interrupção. 
O vetor de interrupção pode ser fixo ou configurável, dependendo da arquitetura do 
microprocessador ou microcontrolador. No vetor de interrupção, o usuário deverá dotar o 
programa de uma instrução de desvio para uma sub-rotina denominada ISR (Interrupt 
Service Routine), escrita por ele mesmo, específica para o tratamento do evento da 
interrupção. Antes do tratamento dentro da ISR, o conteúdo de algumas variáveis de 
 25 
programa e registradores que serão alterados pela ISR mas que precisam ter o mesmo 
conteúdo após a execução da mesma, é guardado, procedimento denominado “salvamento 
de contexto”. Após o tratamento, o contexto é recuperado e posteriormente o conteúdo do 
PC na pilha. O retorno ao ponto do programa principal em que havia sido interrompido é 
então efetuado, retornando assim ao fluxo normal de execução. 
As interrupções podem ser mascaráveis (habilitadas ou desabilitadas pelo programado usuário) ou não mascaráveis, não podendo ser desabilitadas, como o caso do evento de 
Reset, sendo este também uma interrupção. As interrupções podem ter mais de um vetor de 
interrupção, podem também ter sua prioridade definida pelo hardware do microcontrolador 
ou pelo próprio usuário caso mais de uma interrupção esteja habilitada e ocorram 
simultaneamente em um dado momento. Por exemplo, os microcontroladores 8051 
possuem interrupções com estrutura nesting, onde uma interrupção pode interromper outra 
já sendo atendida, desde que tenha maior prioridade, já no PIC a prioridade pode ser 
definida pelo usuário via software. 
3.9 Pipeline 
Outro conceito importante é o Pipeline, o qual significa aproveitamento do tempo 
ocioso do processador. Nas arquiteturas sem Pipeline, o processador não executa nenhuma 
instrução enquanto está buscando a próxima na memória de programa. 
Com a utilização do Pipeline, enquanto o microcontrolador está executando uma 
instrução, um sistema interno do hardware do processador já efetua, ao mesmo tempo, a 
busca e a decodificação da próxima instrução, mantendo o processador preparado para a 
próxima. Assim, é possível reduzir a quantidade de ciclos de instruções necessárias à busca, 
decodificação e execução de instruções, aumentando a velocidade de processamento. 
A exceção ocorre no caso em que o código efetua um salto, onde o Pipeline perde o 
sincronismo e, com isso, requerendo mais de um ciclo de instrução graças a necessidade de 
uma nova busca de instruções. 
3.10. CISC × RISC 
O número de instruções que o hardware de um microcontrolador ou 
microprocessador foi projetado para decodificar e executar define sua arquitetura como 
sendo do tipo CISC ou RISC. Um microcontrolador CISC, do acrônimo inglês para 
 26 
Complex Instruction Set Computer, ou Computador com Conjunto de Instruções 
Complexo, é capaz de decodificar um grande número de instruções. Enquanto que um 
microcontrolador RISC, do acrônimo inglês para Reduced Instruction Set Computer, ou 
Computador com Conjunto de Instruções Reduzido, é capaz de decodificar um reduzido 
número de instruções. Em outras palavras a arquitetura RISC, possui a quantidade nos set 
de instruções significativamente inferiores à arquitetura CISC. 
A título de ilustração, o microcontrolador 8051 possui uma arquitetura CISC, pois 
possui um conjunto de instruções (set de instruções) de mais de 120, enquanto que os 
microcontroladores da Microchip, a família PIC, possui em torno de 35 instruções apenas, 
enquadrando-o na categoria RISC. A vantagem de arquitetura RISC reside na simplificação 
das estruturas internas no projeto do hardware do microcontrolador, aumentando sua 
velocidade e reduzindo seu custo. Em contrapartida, este benefício acaba por dificultar o 
desenvolvimento por parte dos programadores, pois estes têm um número limitado de 
instruções disponíveis para elaboração do código. Pequenas e simples operações requerem 
para serem feitas um grande número de passos, o que aumenta o tamanho do código. 
3.11 Interfaces 
Os dispositivos que fazem parte das unidades de entrada e saída são chamados de 
periféricos porque são externos ao resto do sistema. O aspecto mais importante dos 
periféricos está relacionado com a Interface. Em computadores, a Interface é definida como 
a transmissão digital de informação entre um computador e seus periféricos de modo 
compatível e sincronizado. 
Ela é constituída de circuitos eletrônicos (hardware), que compatibilizam a natureza 
dos sinais elétricos, e um programa apropriado de gerenciamento da comunicação 
(software), denominado driver de dispositivo (device driver) no caso dos computadores 
pessoais. 
3.12 Comunicação Serial 
Com a intenção de reduzir a quantidade de conexões ou fios necessários à troca de 
dados entre dois dispositivos, foi desenvolvido um método diferenciado ao tradicional 
modo paralelo. Considere a seguinte situação: necessita-se trocar um byte inteiro para um 
periférico. Seria necessário no mínimo de 8 condutores elétricos para um transporte 
 27 
paralelo. Se a distância é pequena a alternativa é viável. Quando este mecanismo é utilizado 
para uma distância significativa, além da grande quantidade de fios, alguns bits poderão 
chegar atrasados em relação aos demais, corrompendo a informação. O mesmo ocorre se a 
frequência de tráfego dos dados for alta (em torno de MHz ou GHz), pois devido ao 
acoplamento eletromagnético, os sinais de um condutor poderão interferir nos demais ou 
sofrer interferência dos mesmos, corrompendo novamente a informação. Assim, como 
alternativa para solucionar esses problemas, foi desenvolvida a comunicação serial. Nesta, 
os bits de uma palavra são conduzidos individualmente num único condutor elétrico por 
vez. 
 
 28 
4. MICROCONTROLADORES X MICROPROCESSADORES 
 
Existe uma diferença substancial entre microcontroladores e microprocessadores. O 
Microprocessador é implementado em um chip (pastilha de silício), e contem uma unidade 
lógica e aritmética (ULA), registradores internos e uma unidade de controle (UC) para a 
movimentação interna e externa dos dados. Todos os componentes trabalham em conjunto 
para o gerenciamento do hardware, popularmente atribuído ao chip o nome de CPU. 
Por possuir poucos elementos internos (ULA, UC e Registradores), um sistema 
microprocessado (computadorizado) necessita de uma série de dispositivos para operar, 
como memórias (ROM e RAM), linhas de barramento, linhas de controle, interfaces de 
I/Os (Inputs / Outputs). Estes últimos permitem a CPU se comunicar com os periféricos 
externos de entrada (teclado, mouse, etc.) e de saída (monitor, impressora e outros). 
Contrariamente, o Microcontrolador equivale a um sistema microprocessado 
completo incluído em um único invólucro (chip), desenvolvido graças ao crescimento da 
tecnologia de integração, que tornou possível fabricar um dispositivo que contivesse, além 
do microprocessador, todos os periféricos necessários integrados. Assim, um 
Microcontrolador é, de uma forma simplificada, “um microcomputador em um único chip”. 
Ele pode conter, como ressaltado anteriormente, diversos periféricos como memórias 
internas de dados e de programa, portas de acesso a dispositivos de I/O, PWM (Pulse Width 
Modulation) e até conversores de Analógico/Digital e Digital/Analógico. 
Apesar de geralmente os microcontroladores serem menos poderosos que a maioria 
dos microprocessadores (em termos de processamento, memória e velocidade), a depender 
da aplicação há uma excelente vantagem em se utilizar microcontroladores em detrimento 
dos microprocessadores. Isto se explica pelo número reduzido de componentes necessários 
para o desenvolvimento de novos equipamentos, uma vez que microcontroladores requerem 
um espaço físico na placa eletrônica muito menor, possibilitando assim a redução do custo 
(Figura 11). 
Além disso, a maioria dos microcontroladores são mais robustos que os 
microprocessadores, sendo aptos para o desenvolvimento de equipamentos e sistemas 
 29 
autônomos para o trabalho em campo, em meio a umidade, o calor, as intempéries e 
interferências eletromagnéticas. 
 
Figura 11. Microcontroladores permitem criar equipamentos menores e mais baratos. 
A Tabela 1, apresenta alguns exemplos comerciais de Microprocessadores e 
Microcontroladores. 
Microprocessador Fabricante 
Z80 Zilog 
6502 Motorola/Frescale 
8086, 80286, 80386, 80486 (PC AT), Pentium, Atlhon Intel/AMD 
Microcontroladores Fabricante 
PIC16F84, PIC16F877, PIC18F452, PIC10F200... Microchip 
MSP430F149, MSP430F123, MSP430F122, MSC1211... Texas Instruments 
68HC908AP16, 68HC08GP32A, MM908E621... Freescale 
AT89C51, AT89C2051, AT89C51SND2C... Atmel 
Tabela 1. Exemplos de Microprocessadores e Microcontroladores. 
Nas próximas subseções serão apresentados os principais conceitos que envolvem 
os Microcontroladores e Microprocessadores. 
4.1 Firmware 
Conceitualmente,Firmware é um tipo de software (programa) voltado a aplicações 
específicas. Ele é executado por microcontroladores ou microprocessadores em sistemas 
 30 
embarcados, para gerenciamento do hardware do sistema. Por exemplo, o programa sendo 
executado por um microcontrolador de um forno microondas conduz à interpretação dos 
dados da IHM (Interface Homem-Máquina) e a tradução dos sinais internos para a IHM, 
permitindo a comunicação do equipamento com o usuário e o controle do aquecimento e 
preparo do alimento. Em suma, o corpo (hardware) do forno microondas (motores, caixa, 
teclados, displays, LED’s, etc.) não é suficiente para o ele ser o que é. O Firmware para um 
forno microondas é o que o faz funcionar como tal. 
Para o desenvolvimento do Firmware são necessários montadores e compiladores e 
a carga do Firmware na memória de programa dos microcontroladores é feita pelos 
chamados gravadores. 
4.2 Montadores e Compiladores 
Montadores são programas que traduzem um código escrito por um ser humano 
(programador ou usuário), em um código binário (de máquina). No caso dos computadores 
pessoais, ele gerará um código executável. E no caso de microcontroladores, este código 
poderá ser gravado no microcontrolador. Os montadores utilizam linguagens de nível mais 
baixo, mas ainda interpretáveis pelo seres humanos, não sendo exatamente o código 
binário. O código escrito pelo usuário utiliza comandos documentados pelo próprio 
fabricante do microcontrolador utilizado, denominados Mnemônicos, que representam os 
códigos binários das instruções (movimentação de dados – MOV, soma – ADD, etc.). 
O Assembly é uma linguagem de nível mais alto que a de máquina (código binário) 
que se utiliza dos Mnemônicos na composição do chamado código fonte do programa. Este 
código fonte será transformado em código objeto (object code), sendo o Firmware gravado 
na memória de programa do Microcontrolador. O montador para linguagem Assembly é 
denominado Assembler. O cuidado para não confundir os termos deve ser tomado. 
Já os Compiladores são programas que traduzem um código escrito por um ser 
humano (programador ou usuário), em um código de nível mais baixo, para posteriormente 
efetuar a montagem, ou seja, a geração do código binário (de máquina). No caso dos 
computadores pessoais, ele gerará um código executável. E no caso de microcontroladores, 
este código poderá ser gravado no microcontrolador. O código escrito pelo usuário para 
compiladores utiliza sintaxes documentadas pelo próprio fabricante do compilador. Os 
 31 
compiladores trabalham com as chamadas linguagens de médio ou alto nível, que permitem 
um maior grau de abstração, a exemplo, as linguagens C e Java. 
O Software destinado à concepção de Firmwares para microcontroladores e 
executado em computadores pessoais (desktops ou notebooks), que possuem recursos de 
desenvolvimentos integrados, é denominado IDE (acrônimo inglês para Integrated 
Development Environment ou, em português, Ambiente Integrado de Desenvolvimento). 
Estes recursos podem ser: um editor de códigos fonte; um compilador; um montador e 
linkeditor (ligador de códigos objeto); um depurador; um simulador; e até um uploader 
(programa para dar carga de um Firmware na memória de programa do microcontrolador). 
São exemplos de IDE’s: o MPLAB IDE para microcontroladores PIC, da 
Microship; o Code Composer Studio, para DSP’s e microcontroladores MSP430 da Texas 
Instruments; o KEIL para 8051; dentre outros. 
 4.3 Periféricos Internos dos Microcontroladores 
A diferença básica entre o microprocessador e o microcontrolador é que, neste 
último, além da CPU, existem, na mesma pastilha de silício, módulos de hardware que 
constituem recursos adicionais de iteração com o meio externo, conhecidos como 
periféricos internos. Abordaremos a seguir alguns periféricos internos que podem ser 
encontrados nos microcontroladores comerciais. 
4.3.1 Portas de I/O 
Diferentemente dos sistemas com microprocessadores, nos microcontroladores os 
circuitos eletrônicos que constituem as Portas de I/O, abordadas anteriormente, já estão 
embutidas no chip, sendo um dos módulos periféricos internos. Em alguns 
microcontroladores, estas portas possuem capacidade suficiente para alimentar cargas 
consideráveis, como vários LED’s e lâmpadas, estes normalmente com consumo de 
corrente muito superiores aos Circuitos Integrados (CI’s) digitais convencionais. 
As Portas de I/O são um dos periféricos básicos dos microcontroladores, ou seja, um 
dos periféricos mínimos que com certeza pode ser encontrado nos microcontroladores 
(dificilmente seria fabricado um microcontrolador sem Portas de I/O). 
 32 
4.3.2 Timer / Counter (Temporizador / Contador) 
O Timer / Counter (Temporizador / Contador) é, juntamente com as Portas de I/O, 
outro módulo básico de um microcontrolador. Sua função é a criação de bases de tempo 
precisas para a geração de eventos periódicos com frequência fixa, ou a contagem de 
eventos externos. 
É um módulo de grande utilidade, podendo ser utilizado para, por exemplo, o 
controle de motores de passo, a “piscagem” de LEDs, a emulação de encoders para servo 
motores, a geração de frequências fixas de amostragem de sinais analógicos, dentre outras 
aplicações. 
4.3.3 Watchdog Timer (WDT) 
O Watchdog Timer (WDT) é um módulo básico de segurança normalmente presente 
na maioria dos microcontroladores, uma vez que estes podem ser utilizados no 
desenvolvimento de sistemas e equipamentos eletrônicos autônomos para operação 
contínua. Uma das suas características é o fato de possuir um clock próprio para operar de 
forma independente do resto do sistema. 
Foi concebido para evitar o congelamento (“travamento”) do processamento sendo 
executado pelo microcontrolador. Esta “trava” pode ocorrer por motivos diversos, desde 
interferências eletromagnéticas (principalmente em ambientes industriais) ou até mesmo a 
falha na execução do programa. Em microcontroladores sem este módulo, a única solução 
para o retorno ao funcionamento normal seria aplicar um Reset ao sistema, ou por um sinal 
externo ou queda na alimentação (desligar e religar o sistema). 
Seu princípio de funcionamento se baseia no reset periódico do seu valor de 
contagem. Caso não seja feito, sua contagem vai a overflow (estoura) e ele gera um sinal 
(pulso) de Reset para a CPU, reiniciando-a. Dessa forma, em diversos pontos dentro do 
programa em execução uma instrução de Reset do módulo do WDT deverá ser executada, 
reiniciando a contagem do módulo. 
Caso a CPU trave em algum ponto do programa (por exemplo, em um loop 
infinito), o reset do WDT não ocorrerá e ao estourar a contagem o WDT reiniciará a CPU 
gerando um pulso de Reset para a mesma. 
 33 
4.3.4 Módulo PWM 
PWM (Pulse Width Modulation) é uma forma de modulação em que são gerados 
pulsos digitais em uma frequência fixa onde a largura destes é variada, dessa forma, varia-
se o valor médio do sinal sobre a carga continuamente. 
Um Circuito de geração de sinais PWM é encontrado em alguns microcontroladores 
como periférico interno. Graças à existência desse módulo no microcontrolador, sem 
circuitos adicionais como um Conversor Digital para Analógico (DAC), o usuário poderá 
gerar sinais analógicos a partir de uma saída digital (por exemplo, na regulagem contínua 
do brilho de lâmpadas incandescentes). 
Outra grande aplicação comercial é o desenvolvimento de inversores para no-breaks 
ou para conversores de frequência monofásicos e trifásicos para o acionamento e controle 
de motores de indução. 
4.3.5 EEPROM Interna 
Abordada anteriormente, uma memória EEPROM pode existir como periférico 
interno em alguns microcontroladores comerciais, para utilização como memória de 
armazenamento de dados de configuração de equipamentos, sem a necessidade de um chip 
externo ao microcontrolador. Os microcontroladores Microship PIC16F877A e PIC16F84 
possuem esseperiférico. 
4.3.6 Interfaces Seriais USART, SPI e I
2
C 
É comum a presença de periféricos internos em microcontroladores que 
implementem alguns padrões de comunicação serial. Os mais encontrados são: 
 USART (Universal Synchronous / Assyncronous Receiver / Transmitter), para 
comunicação com computadores pessoais utilizando a porta serial COM RS:232; 
 SPI (Serial Peripheral Interface) para comunicação serial full-duplex (transmissão e 
recepção simultâneas) com CI’s externos, como memórias EEPROM e RTCs (Real Time 
Clock), por meio dos 4 sinais: MCLK (Marter Clock), MOSI (Master Output - SlaveInput), 
MISO (Master Input – Slave Output) e CS (Chip Select); 
 I2C, uma forma de comunicação serial half-duplex (transmissão e recepção 
sequenciais) a 2 fios constituindo um barramento para comunicar dispositivos (CI’s). Essa 
 34 
interface pode operar ou como transmissão ou recepção, a depender do dispositivo, por 
meio dos sinais Serial Data (SDA) e Serial Clock (SCL). 
4.3.7 Controlador de LCD 
Devido à utilização frequente de LCD’s (Liquid Cristal Displays, ou em português, 
Mostradores de Cristal Líquido) de 16 colunas e 2 linhas em IHM’s (como as utilizadas em 
telefones públicos), fabricantes incorporaram em alguns de seus microcontroladores 
comerciais periféricos que auxiliam a comunicação com esses dispositivos, facilitando o 
desenvolvimento do Firmware de novos equipamentos. 
4.3.8 Conversor Analógico para Digital (ADC) 
Muitos dos melhores microcontroladores atuais possuem internamente um recurso 
do módulo de conversão de sinais analógicos externos para um sinal o qual o 
microcontrolador possa interpretar, ou seja, digital. Este recurso é o Conversor Analógico 
para Digital (ADC) interno. Neste conversor, cada nível da variável analógica 
(normalmente tensão elétrica, podendo também ser uma corrente elétrica), há uma 
representação binária equivalente (digital). Ele torna-se bastante útil no desenvolvimento de 
sistemas de controle quando da necessidade de adquirir sinais de sensores, como por 
exemplo, em um sistema de controle de temperatura a entrada do ADC é utilizada como 
entrada para os sensores de temperatura. 
 
 
 35 
5. ARDUINO 
 
Arduino
1
 é um projeto que engloba software e hardware e tem como objetivo 
fornecer uma plataforma fácil para prototipação de projetos interativos, utilizando um 
microcontrolador. Ele faz parte do que chamamos de computação física: área da 
computação em que o software interage diretamente com o hardware, tornando possível 
integração fácil com sensores, motores e outros dispositivos eletrônicos. 
A parte de hardware do projeto, uma placa que cabe na palma da mão (Figura 12), é 
um computador como qualquer outro: possui microprocessador, memória RAM, memória 
cash (para guardar o software), temporizadores, contadores, dentre outras funcionalidades. 
Atualmente, o projeto está na versão Uno, apesar de muitos Arduinos encontrados hoje 
serem da versão Duemilanove (2009, em italiano), que possui um clock de 16MHz, 2kB de 
memória RAM, 32kB de memória cash, 14 portas digitais e 6 entradas analógicas. 
 
Figura 12. Foto do hardware de um Arduino Duemilanove. 
A principal diferença entre um Arduino e um computador convencional é que, além 
de ter menor porte (tanto no tamanho quanto no poder de processamento), o Arduino utiliza 
dispositivos diferentes para entrada e saída em geral. Por exemplo: em um PC utilizamos 
 
1 http://www.arduino.cc/ 
 36 
teclado e mouse como dispositivos de entrada e monitores e impressoras como dispositivos 
de saída; já em projetos com o Arduino os dispositivos de entrada e saída são circuitos 
eletricos/eletrônicos. 
Como a interface do Arduino com outros dispositivos esta mais perto do meio físico 
que a de um PC, podemos ler dados de sensores (temperatura, luz, pressão etc.) e controlar 
outros circuitos (lâmpadas, motores, eletrodomésticos, etc), dentre outras coisas que não 
são possíveis serem obtidos diretamente com um PC. A grande diferença com relação ao 
uso desses dispositivos, no caso do Arduino, e que, na maior parte das vezes, nós mesmos 
construímos os circuitos que são utilizados, ou seja, não estamos limitados apenas a 
produtos existentes no mercado: o limite é dado por nosso conhecimento e criatividade. 
O melhor de tudo nesse projeto e que seu software, hardware e documentação são 
abertos. O software é livre (GNU GPL
2
), o hardware é totalmente especificado (basta entrar 
no site e baixar os esquemas) , a documentação está disponível em Creative Commons
3
 e os 
usuários podem colaborar (seja escrevendo documentação, seja traduzindo) através da wiki. 
5.1 Instalação do Software 
Para criar um projeto com o Arduino, basta comprar uma placa que custa em torno 
de 30 dólares no exterior e por volta de R$100 no Brasil, fazer download da interface 
integrada de desenvolvimento (IDE) (Figura 13) e ligar a placa a porta USB do PC. 
Como qualquer computador, o Arduino precisa de um software para executar 
comandos. Esse software será desenvolvido na Arduino IDE em um PC, utilizando a 
linguagem C++. Após, é necessário escrever o código, compilar e então fazer o envio da 
versão compilada para a memória cash do Arduino, através da porta USB. 
A partir do momento que o software é gravado no Arduino não precisamos mais do 
PC. O Arduino, como é um computador independente, consegue sozinho executar o 
software criado, desde que seja ligado a uma fonte de energia. 
As IDEs disponíveis estão listadas a seguir: 
 Ubuntu GNU/Linux (http://www.arduino.cc/playground/Linux/Ubuntu). 
 Outras distribuição GNU/Linux (http://www.arduino.cc/playground/Learning/ 
Linux). 
 
2 http://www.gnu.org/licenses/gpl.html 
3 http://creativecommons.org/licenses/ 
 37 
 Microsoft Windows (http://www.arduino.cc/en/Guide/Windows). 
 Apple Mac OS X (http://www.arduino.cc/en/Guide/MacOSX). 
5.2 Primeiro projeto 
Quando aprendemos uma linguagem de programação nova, geralmente o primeiro 
exemplo é um hello world. Como o Arduino não possui um display padrão, nosso primeiro 
exemplo é fazer um LED piscar e assim chamaremos o programa de blink. Nosso LED 
ficará aceso durante um segundo e apagado durante outro segundo e então recomeçará o 
ciclo. O código é apresentado a seguir: 
void setup() 
{ pinMode(13, OUTPUT); 
} 
void loop() 
{ digitalWrite(13, HIGH); 
 delay(1000); 
 digitalWrite(13, LOW); 
 delay(1000); 
} 
Chamamos um código feito para Arduino de sketch e o salvamos em um arquivo 
com a extensão .pde. Com nosso sketch pronto, bastará conectar o Arduino na porta USB e 
clicar no botão upload (segundo, da direita para a esquerda destacado na Figura 13. Após o 
processo, será vista a mensagem Done uploading na IDE e será possível rodar o sketch no 
Arduino, ou seja, o LED acenderá e apagará, de 1 em 1 segundo. Veremos na próxima 
subseção a explicação do processo. 
 38 
 
Figura 13. Arduino IDE versão 18 rodando no Ubuntu GNU/Linux 10.10. 
5.3. PRIMEIRO PROJETO 
O Arduino possui 14 portas digitais, que podem ser utilizadas como entrada ou 
saída. Nesse caso, vamos utilizar a porta de número 13 como saída, dessa forma, podemos 
controlar quando a porta ficará com 5V ou quando ficará com 0V. Internamente o Arduino 
possui um LED conectado a porta 13 e desta forma é possível ver a execução do software 
descrito anteriormente. 
Para que o software funcione corretamente no Arduino, é necessário criar duas 
funções específicas: setup e loop. A função setup é executada assim que o Arduino executa 
a sua inicialização, já a função loop será executada continuamente até que o Arduino seja 
desligado. Como as portas digitais são de entrada ou saída, definimos dentro da função 
setup que a porta 13 é uma porta de saída. Isso é possível chamando a função pinMode, 
contida

Continue navegando