Buscar

Apostila_Aulas_de_Microprocessadores

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 32 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 32 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 32 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

ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
1. LOGICA DE PROGRAMAÇÃO 
O que é um computador? 
✓ É uma máquina que, a partir de uma entrada, realiza um número muito grande de cálculos 
matemáticos e lógicos, gerando uma saída. 
✓ Os primeiros “computadores” eram humanos que calculavam tabelas de logaritmos ou 
trajetórias para canhões, seguindo procedimentos bem definidos. 
Hardware e dispositivos 
✓ A linguagem nativa do computador é codificada numericamente, de forma binária: 
➢ Bit → Pode assumir valores 0 ou 1. 
➢ Byte → Agrupamento de 8 bits em uma palavra. 
➢ Letras e símbolos são representados por números. 
Introdução à Lógica de Programação 
✓ Lógica é a técnica de encadear pensamentos para atingir determinado objetivo; Sequência Lógica: são 
passos executados até atingir um objetivo ou solução de um problema. 
✓ Instruções é um conjunto de regras ou normas definidas para a realização ou emprego de algo e que 
indica a um computador uma ação elementar a executar. 
✓ Sequência de passos, precisos e bem definidos, para a realização de uma tarefa. Não pode ser 
redundante, nem subjetivos e não ambíguo; 
✓ Algoritmos podem ser especificados de várias formas, inclusive em português. 
Exercícios: 
1. Crie uma sequência lógica para tomar banho. 
2. Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número. 
3. Descreva com detalhes a sequência lógica para trocar um pneu de um carro. 
4. Faça um algoritmo para trocar uma lâmpada. 
Algoritmos - Pseudocódigo 
✓ São independentes das linguagens de programação; 
✓ Devem ser fáceis de interpretar e de codificar; 
✓ Devem ser o intermediário entre a linguagem falada e a linguagem de programação. 
✓ Regras para construção: 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
➢ Usar somente um verbo por frase; 
➢ Imaginar que está desenvolvendo para pessoas que não trabalham com informática; 
➢ Usar frases curtas e simples; 
➢ Objetivo; 
Algoritmos - Diagrama de Blocos ou Fluxograma 
✓ É uma forma padronizada e eficaz para 
representar os passos lógicos de um 
determinado processamento; 
✓ Pode-se definir uma sequência de símbolos, 
com significado bem definido; 
✓ Principal função é facilitar a visualização dos 
passos de um processamento. 
 
Exemplo: Calcular a média aritmética dos alunos. Os alunos realizarão quatro provas: 
P1, P2, P3 e P4. 
✓ Quais são os dados de entrada? Qual será o processamento a ser utilizado? 
Quais serão os dados de saída? 
Algoritmo: 
1. Receba a nota da prova 1 
2. Receba a nota da prova 2 
3. Receba a nota da prova 3 
4. Receba a nota da prova 4 
5. Some todas as notas e dívida o resultado por 4 
6. Mostre o resultado da divisão 
 
Exercícios: 
1. Construa um algoritmo para pagamento de comissão de vendedores de peças, levando-se em 
consideração que sua comissão será de 5% do total da venda e que você tem os seguintes dados, crie 
uma sequência lógica para tomar banho. 
 
 
 
Início
Receber Nota 1
Receber Nota 2
Receber Nota 3
Receber Nota 4
Calcular Média
Escrever Média
Fim
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Primeiro programa em C 
✓ Um programa em C é um arquivo texto, contendo declarações e operações da linguagem. Isto é 
chamado de código fonte. 
 
 
✓ Para executar um programa a partir do seu código fonte necessário compilá-lo, gerando código binário 
ou executável. Este pode ser executado como qualquer outro programa de aplicação. 
 
O que são erros de compilação? 
✓ Caso o programa não esteja de acordo com as regras da linguagem, erros de compilação ocorrerão. 
Ler e entender estes erros é muito importante. 
 
✓ Acontecem quando o comportamento do programa diverge do esperado e podem acontecer 
mesmo quando o programa compila corretamente. 
 
Um exemplo mais complexo 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Declarar, Ler e Escrever uma Variável 
 
 
 
Estruturas de Decisão 
 
 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Estruturas de Repetição 
 
Vetores e Matrizes 
 
 
 
 
 
 
 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Ponteiros 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Criar e Chamar Função 
 
 
2. FUNÇÕES LÓGICAS, PORTAS LÓGICAS E ÁLGEBRA BOOLEANA 
Sistemas Digitais: Em meados do século XIX o matemático inglês George Boole desenvolveu um 
sistema matemático de análise lógica. Em meados do século XX, o americano Claude Elwood sugeriu 
que a Álgebra Booleana poderia ser usada para análise e projeto de circuitos de comutação. 
 
Hardware (Portas Lógicas) 
✓ Construção dos microprocessadores (unidades internas) 
✓ Construção dos circuitos dos computadores (decodificadores, memória etc.) 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Software (Operações Lógicas a Nível de Bits) 
✓ Operações lógicas dos programas; 
 
Portas Lógicas: 
✓ Componentes básicos da eletrônica digital; 
✓ Dois estados: Falso (0) ou verdadeiro (1); 
✓ Desenvolvida no século XIX pelo 
matemático inglês George Boole; 
✓ Século XX – Claude Elwood sugeriu a 
aplicação em circuitos elétricos 
✓ Analisam um conjunto de entradas 
(Estados) e produzem uma única saída; 
✓ Operações básicas: Produto(E), Soma (OU), 
Negação (Complemento). 
 
2.1 Lógicas Básicas AND, OR, NOT, NAND, NOR 
Situação Problema: Nos primórdios da eletrônica os problemas eram solucionados por meio de 
sistemas analógicos. Mas, com o avanço da tecnologia, os problemas passaram a ser solucionados pela 
eletrônica digital. Na eletrônica digital, os sistemas empregam um grupo de circuitos lógicos básicos, 
que são conhecidos como portas lógicas. As portas lógicas digitais são o alicerce básico a partir do qual 
são construídos todos os circuitos eletrônicos digitais e sistemas baseados em microprocessadores. 
Com o comportamento funcional, dado pelas suas Tabelas Verdade, as portas lógicas podem ser usadas 
para representar qualquer circuito lógico. E qual é o comportamento funcional das portas lógicas mais 
comuns? 
 
Tipos de Portas Lógicas: 
✓ AND (Saída = A.B): Produz resultado verdade se e somente se todas as entradas forem verdade e 
a expressão 𝑋 = 𝐴. 𝐵 deve ser lida como “x é igual a A e B”; 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
 
 
✓ OR (Saída = A + B): Produz resultado verdade se pelo menos uma das entradas for verdade e a 
expressão 𝑋 = 𝐴 + 𝐵 deve ser lida como “x é igual a A ou B”. 
 
 
✓ NOT ou Inversora (Saída = �̅� ): A saída é sempre oposta ao nível lógico de entrada e a expressão 
𝑋 = �̅� deve ser lida: “x é igual a “A barrado” ou “x é o complemento de A” ou “x é o inverso de A”. 
 
 
✓ NAND (𝑺𝒂í𝒅𝒂 = 𝑨. 𝑩̅̅ ̅̅ ̅): Produz o inverso da saída AND equivalente; 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
✓ NOR ( 𝑺𝒂í𝒅𝒂 = 𝑨 + 𝑩̅̅ ̅̅ ̅̅ ̅̅ ̅): Produz resultado verdade se e somente se todas as entradas forem 
falsas; 
 
 
2.2 Funções XOR E XNOR 
Situação Problema: Quando um computador realiza operações matemáticas, ele está utilizando 
milhares de portas lógicas na unidade lógica e aritmética. Mas, como essas portas lógicas são 
organizadas para realizar operações lógicas e matemáticas? Para chegarmos a esta resposta nesta 
disciplina, primeiro é preciso entender que, nos sistemas digitais, essas são operações lógicas 
booleanas. As operações e expressões booleanas são básicas para realizarmos funções matemáticas 
em sistemas digitais com a álgebra booleana. Então temos a pergunta: como as expressõese operações 
booleanas se relacionam com os circuitos lógicos? 
 
✓ XOR (𝑺𝒂í𝒅𝒂 = 𝑨 ⊕ 𝑩): Produz resultado verdade se os valores de sua entrada forem diferentes; 
 
 
✓ XNOR (𝑺𝒂í𝒅𝒂 = 𝑨 ⊕ 𝑩̅̅ ̅̅ ̅̅ ̅̅ ̅): Produz resultado verdade se os valores de sua entrada forem iguais; 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
2.3 Conversão entre Expressões Booleanas e Circuitos Lógicos 
Situação Problema: Vimos que as expressões booleanas podem ser convertidas em circuitos lógicos, e 
vice-versa. Mas, muitas vezes, a representação lógica de um sistema é mais simples e intuitiva com uso 
de tabelas verdade, já que uma tabela verdade mostra claramente a saída para cada entrada possível. 
E como chegamos ao circuito lógico partindo da tabela verdade? 
 
 
Ex: 𝑆 = (�̅�. 𝐵) . (𝐵. 𝐶̅̅ ̅̅ ̅) . (𝐵 + 𝐷̅̅ ̅̅ ̅̅ ̅̅ )̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅ 
 
 
2.4 Conversão entre Tabelas Verdade e Circuitos Lógicos 
Situação Problema: Tabelas Verdade podem ser uma opção mais intuitiva para descrever um sistema 
lógico e, quando convertida em uma expressão lógica, pode gerar um circuito lógico que a represente. 
Mas, quando a expressão lógica possui muitos termos, gerando um circuito grande. Será que não é 
possível simplificar a expressão lógica para gerar um circuito menor e economizar portas lógicas para 
implementá-lo? 
Tabela Verdade: Visão completa do comportamento da função através de 
uma representação tabular. 𝑁º 𝑑𝑒 𝑃𝑜𝑠𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 = 2𝑁º 𝐸𝑛𝑡𝑟𝑎𝑑𝑎𝑠 
Ex: 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
2.5 TEOREMAS DA ÁLGEBRA BOOLEANA 
 
3. MICROCONTROLADORES 
Origem dos Microcontroladores: 
 
Um microcontrolador é um dispositivo que pode ser definido como computador em um único 
chip, isto porque ele traz embutido e de forma integrada, uma unidade central de processamento 
(CPU), circuitos auxiliares (periféricos), memória ROM (Read Only Memory), memória RAM (Random 
Access Memory), interface de comunicação serial, temporizadores/contadores, portas de entrada e 
saída (I/O), circuito clock, entre outros (OKI; MANTOVANI, 2013). É programado em Assembly e possui 
um poderoso conjunto de instruções. 
São concebidos para aplicações embarcadas, em contraste com os microprocessadores utilizados 
em computadores pessoais ou outras aplicações de uso geral. 
O primeiro microprocessador foi o 4-bit Intel 4004 lançado em 1971. Com o tempo, foram criados 
microprocessadores mais eficientes. No entanto, ambos chips precisavam de componentes externos 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
para funcionar, tornando custo total do sistema elevado sendo impossível, economicamente, 
informatizar aparelhos. 
O Smithsonian Institution, com os créditos do produto para os engenheiros da Texas Instruments 
Gary Boone e Michael Cochran criaram o primeiro microcontrolador comercial em 1971. O resultado 
de seu trabalho foi a TMS 1000, que se tornou comercialmente disponível em 1974. Combinou 
memória somente para leitura, memória de leitura / gravação, processador e relógio em um único chip 
e tinha como alvo sistemas embarcados. 
 
3.1 EVOLUÇÃO DOS MICROCONTROLADORES 
Situação Problema: A arquitetura e o arranjo dos componentes internos de um microcontrolador 
geram impactos direitos no seu funcionamento, no seu desempenho e no seu custo. Um engenheiro 
foi contratado para desenvolver um projeto em que é necessário um dispositivo de baixo custo para 
controlar a irrigação de uma plantação de soja. Para isso, é necessário especificar um microcontrolador 
capaz de realizar o controle do processo, efetuando a leitura dos sensores de temperatura e umidade 
do solo, além de controlar o acionamento do sistema de bombeamento. Assim, os seguintes 
questionamentos podem surgir: Como é o a arquitetura interna de um microprocessador? Quais as 
diferenças entre um microcontrolador e um microprocessador? Qual a capacidade de memória um 
microcontrolador precisaria ter para atender este projeto? Quantas portas analógicas e digitais serão 
necessárias? 
 
Evolução Histórica (Gerações): 
1. Geração (1945 1955): Válvulas, Cabos de ligação 
2. Geração (1955 1965): Transistores, Sistemas em lote (batch) 
3. Geração (1965 1980): ICs (Circuitos Integrados) e Multiprogramação 
4. Geração (1980 até o presente): Computadores Pessoais 
 
3.2 COMPONENTES BÁSICOS DE MICROCONTROLADORES 
Conceitos de processamento de dados: 
✓ Sistema Operacional: Conjunto de programas que permite a interação entre o usuário e o 
computador. 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
✓ Processador: Responsável pela execução de operações definidas por uma instrução de máquina. 
Também é chamado de UCP (Unidade Central de Processamento) ou CPU (Central Processing Unit). 
É constituído de milhões de componentes eletrônicos (cujas funções básicas são ler, interpretar 
instruções e realizar operações matemáticas; 
✓ Memória: Sistema de armazenamento e recuperação de dados. Cada dispositivo de memória 
possui características diferentes. A memória principal é dividida em partes endereçáveis (onde as 
informações estão armazenadas e de onde podem ser recuperadas. 
A memória de programa é onde fica armazenado o programa gravado no PIC e que será 
executado tão logo seja ligado na alimentação. Na memória de dados, armazena-se as variáveis do 
programa, ou até 128 bytes de dados na memória EEPROM, que serão mantidos mesmo que o 
circuito seja desligado da alimentação 
✓ Registradores (SFR – Special Function Regiters): São posições da memória que recebem nomes 
específicos e têm função bem definida: guardar a configuração e o estado de funcionamento atual 
do Microcontrolador. Normalmente, cada bit do registrador tem uma função específica. Assim, 
temos um registrador para definir se as portas são de entrada ou de saída, ativar e desativar 
interrupções, apresentar o estado da CPU etc. 
✓ Barramento: Conjunto de fios que conduz sinais elétricos entre os componentes. Um barramento 
pode ser composto por um ou mais fios, em função da quantidade de bits que irá transportar. 
Existem barramentos para propósitos distintos endereços, dados e controle. 
✓ Dispositivos de Entrada/Saída: Permite a comunicação entre o sistema de computação e o meio 
exterior convertendo a linguagem utilizada pelo sistema em linguagem do mundo exterior e vice-
versa. Os seres humanos entendem símbolos enquanto os computadores entendem sinais 
elétricos. 
 
 
 
 
 
 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Arquitetura Harvard x Von Neuman: 
✓ Von Neuman: São também conhecidos como “Microcontroladores CISC”. Quando um sistema de 
processamento de dados possui uma única área de memória na qual ficam armazenados os dados 
e o programa a ser executado (software). Instruções demoram mais de um ciclo de máquina para 
execução; 
Ex: 4004; 8080; 8051; 8085; Z80. 
 
✓ Harvard: São também conhecidos como “Microcontroladores RISC”. Os dados ficam armazenados 
em uma área de memória e o programa a ser executado fica armazenado em outra área de 
memória. Instruções executadas em apenas 1 ciclo de máquina; 
 
Ex: Intel 8086, 8088; Microchip PIC; AVR; 
 
3.3 MICROCONTROLADORES X MICROPROCESSADORES 
Microprocessadores: 
1. É um circuito complexo, em forma de circuito integrado (CI); 
2. Contém milhares de transistores. 
3. Estes transistores internos constituem os mais diversos circuitos lógicos: como contadores, 
registradores, decodificadores, e centenas de outros. 
4. Estes circuitos lógicos são dispostos de maneira complexa, dando ao microprocessador a 
capacidade de executar operações lógicas, aritméticas, e de controle. 
5. Para utilizarmos um microprocessador outros componentescomo a memória tem que ser 
conectados ao chip, por meio de circuitos externos; 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Microcontroladores: 
1. São considerados computadores em um único chip; 
2. São normalmente utilizados para aplicações específicas; 
3. Não exige circuitos externos para funcionar, dentro dele se encontram todos os periféricos 
necessários para o seu correto funcionamento. Além da unidade de processamento, estes 
podem ser compostos por: 
✓ Memória de leitura e escrita para armazenamento de dados 
✓ Memória somente de leitura para armazenamento de programas 
✓ EEPROM para armazenamento permanente de dados 
✓ Dispositivos periféricos como conversores analógico/digitais (ADC), conversores 
digitais/analógicos (DAC), portas de Entrada e Saída. 
 
Microcontroladores x Microprocessadores: 
 
 
3.4 FAMÍLIAS E TIPOS DE MICROCONTROLADORES 
Situação Problema: Um estudante de engenharia pretende estudar o funcionamento de 
microcontroladores a fim de se especializar na área de projetos de sistemas embarcados. Para isso, ele 
pretende adquirir uma plataforma de desenvolvimento para aplicar seus estudos. Dentre as opções de 
kits de desenvolvimento encontradas, o jovem se deparou com kits que utilizam duas famílias muito 
populares atualmente. A primeira opção utiliza um microcontrolador PIC16F628A e a segunda utiliza 
um microcontrolador da família Atmega328. Com isso, algumas dúvidas podem surgir: Quais as 
diferenças técnicas entre esses dois microcontroladores? Quais são suas vantagens e desvantagens? 
Microprocessadores
• Necessita de periféricos externos para Funcionar
• utilizados em aplicações onde são requeridos velocidade e cálculos matemáticos complexos;
• ULA (Unidade Lógica e Aritmética)
• Expansível
• Versatilidade
• Uso geral
Microcontroladores
• Não necessita de periféricos externos para Funcionar
• ULA (Unidade Lógica e Aritmética)
• Para aplicações De baixo custo, 
• ULA possui todos os recursos para seu funcionamento
• Uso específico
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Quais as linguagens disponíveis para programação desses microcontroladores? Qual a diferença de 
custo entre esses microcontroladores? 
 
Microcontroladores PIC : 
✓ Microcontroladores fabricados pela Microchip Technology; 
✓ Arquitetura Harvard e conjunto de instruções RISC; 
✓ Processam dados de 8 bits (foi lançada uma família de 16 bits com prefixo 24F); 
✓ Recursos de programação por memória FLASH, EEPROM e OTP; 
✓ Famílias de 12 bits, 14 bits e 16 bits de núcleo de processamento; 
✓ Possuem interrupções Externas e Internas; 
✓ Alimentação de 2 a 6V; 
✓ Encapsulamento de 6 a 100 pinos; 
 
Peripheral Interface Controller (PIC) é fornecido pela Microchip Technology a partir de 
1993. Esses microcontroladores foram extremamente bem-sucedidos dentre os de 8 bits. A 
principal causa por trás disso é que a Microchip tem atualizado constantemente a arquitetura do 
dispositivo e incluído muitos periféricos para atender às necessidades dos desenvolvedores. 
Plataforma Arduino (Microcontroladores AVR): 
A plataforma permite um rápido desenvolvimento e alterações de projetos e possui um 
ambiente de programação, IDE (Integrated Development Environment). 
A Figura mostra o exemplo de uma placa Arduíno, que tem como padrão possuir um chip 
microcontrolador ATmega, uma conexão USB para programação, entrada para fonte de alimentação 
externa, pinos de I/O digitais e de PWM, assim como pinos analógicos, GND e VCC (ARDUINO, 2017). 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
A função 𝒔𝒆𝒕𝒖𝒑(), será executada apenas uma vez e é utilizada para inicializar as variáveis, o 
tipo dos pinos, declarar o uso de bibliotecas. Após criar a função, 𝒔𝒆𝒕𝒖𝒑(), é criada a função, 𝒍𝒐𝒐𝒑(), 
que executa sempre o mesmo bloco de código permitindo ao seu programa fazer mudanças e 
responder. 
 
4. COMPILADORES E SIMULADORES 
4.1 IMPORTÂNCIA DA LINGUAGEM C EM SISTEMAS EMBARCADOS 
Situação Problema: Um estudante de engenharia foi desafiado pelo professor a desenvolver um programa em 
C++ que simule uma calculadora simples. Para compilar os resultados, o programa deve realizar a leitura de dois 
números reais e um caractere, os quais serão fornecidos pelo usuário. Se o caractere for o “+”, e´ realizada a 
soma; se for o “–”, e´ realizada a subtração; se for o “*”, é realizado o produto; e se for o “/”, e´ realizado o 
quociente. Durante o desenvolvimento deste programa, algumas dúvidas podem surgir: Como declarar as 
variáveis de entrada? Quais operadores de entrada e saída de dados serão utilizados? Quais instruções devem 
ser empregadas neste programa para realizar devidamente as operações? 
 
4.2 FERRAMENTAS DE DESENVOLVIMENTO 
✓ IDE Arduino 
✓ PicSimlab 
✓ Mplabx 
✓ Avrstudio 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
4.3 PLATAFORMA ARDUÍNO E CIRCUITOS ELETRÔNICOS NO TINKERCAD 
Situação Problema: 
 
4.4 FERRAMENTAS PICSIMLAB E MPLABX PARA MICROCONTROLADORES PIC 
Situação Problema: 
 
5. PERIFÉRICOS INTEGRADOS 
5.1 ENTRADA E SAÍDA DOS MICROCONTROLADORES 
Portas de Input/Output (I/O): Como um computador, oferece interações de E/S, através de seus 
pinos digitais (entrada e saída) e analógicos (entradas); 
✓ Digital: 1/0, ON/OFF; 
✓ Analógico: Variação de Valores; 
 
5.2 CONVERSORES ANALÓGICO-DIGITAIS(A/D) 
Conversor Analógico-Digital (A/D): Efetua a conversão de um sinal analógico para a sua representação 
digital de 10 bits. A saída do circuito de amostragem e retenção é ligado à entrada do conversor A/D 
de 10 bits. O conversor A/D gera um resultado binário através de um processo de aproximação 
sucessiva e armazena o resultado em um registrador de 10 bits. A tensão de referência utilizada pelo 
conversor pode ser selecionada por software, entre a tensão de alimentação ou a tensão aplicada ao 
pino “𝑉𝑅𝑒𝑓”. 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
5.3 TEMPORIZADORES E COMPARADORES 
Temporizadores: Têm ampla aplicação, pois permitem a marcação precisa de intervalos de tempo. 
✓ Timer 0 conta de 0 a 255 (8 bits); 
✓ Timer 1 conta de 0 a 65535 (16 bits). 
Sempre que o timer atingir sua contagem máxima e nós adicionarmos mais uma unidade, ele 
retornará a zero; quando isso acontece, falamos que houve um estouro ou transbordamento do timer. 
Neste momento, a interrupção associada ao timer é acionada, caso esteja habilitada. Como cada 
incremento do timer gasta, exatamente, um ciclo de máquina, é possível inicializar o timer com o valor 
adequado a fim de produzir a contagem de tempo que se deseja. Por exemplo, se desejarmos contar 
100µs, podemos inicializar o timer 0 com 156 (256 - 100) para um ciclo de máquina de 1µs. Quando o 
timer 0 atingir 255 e tentar passar para 256, ele retornará a zero e terá se passado exatamente 100 
incrementos de 1µs, totalizando 100µs. 
 
Comparadores: Consiste em um circuito de comparador analógico que pode ter suas entradas e sua 
saída acessada pelos pinos do Microcontrolador. É controlado pelo registrador CMCON que permite 
desligar ou ligar os pinos do comparador aos pinos externos. 
A saída do comparador vai ao nível alto sempre que o valor da entrada não inversora for maior 
que o valor da entrada inversora. Através do registrador VRCON podemos ajustar o nível de tensão de 
referência a ser aplicada à entrada inversora do comparador. 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
5.4 MODULAÇÃO POR LARGURA DE PULSO (PWM) 
PWM (Pulse-Width Modulation – Modulação por Largura de Pulso): Consiste em um oscilador de 
onda retangular onde se fixa a frequência e se alterna o ciclo ativo (duty cycle). Através do PWM 
podemos gerar um sinal contínuo (por meioda filtragem ou da integração) a partir de um sinal digital 
pulsado. 
Até agora, todos os projetos lidaram somente com valores digitais, 0V (falso) e 5V (verdadeiro), 
porém em várias aplicações precisamos trabalhar com um intervalo maior de possiveis valores, para 
isso precisamos trabalhar com Sinais Analógicos, a imagem abaixo mostra a diferença entre os sinais. 
 
Observe que o sinal digital (azul) só admite dois valores, enquanto o sinal analógico (vermelho) 
permite um número muito maior de valores. 
Na Plataforma Arduíno as saídas possuem uma precisão de 8 bits [0,255], enquanto as entradas 
possuem uma precisão de 10 bits [0,1023]. 
Os PICs possuem o PWM com ajuste da largura de pulso de 10 bits (210 = 1.023), ou seja, 
podemos ajustar o nível alto, desde zero (saída desligada) até 1.023 que representa o máximo do sinal 
(saída ligada continuamente). 
O valor médio de saída vale: 
𝑉𝑆𝑎í𝑑𝑎 = 𝑉𝑀á𝑥𝑖𝑚𝑎 𝑑𝑒 𝑆𝑎𝑖𝑑𝑎 ∗
𝑇𝐻𝑖𝑔ℎ
𝑇
 
 
Onde: 
𝑉𝑆𝑎í𝑑𝑎 → Tensão de saída 
𝑉𝑀á𝑥𝑖𝑚𝑎 𝑑𝑒 𝑆𝑎𝑖𝑑𝑎 → Tensão máxima de saída 
𝑇𝐻𝑖𝑔ℎ → Tempo de nível alto (Duty Cycle) – (Variável) 
𝑇 → 𝑃𝑒𝑟í𝑜𝑑𝑜 𝑑𝑜 𝑆𝑖𝑛𝑎𝑙 (𝐹𝑖𝑥𝑜) 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
O PWM é muito utilizado para o controle de velocidade de motores de cor- rente contínua. 
 
Ex: 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
6. PERIFÉRICOS EXTERNOS 
6.1 PROTOCOLOS DE TRANSMISSÃO DE DADOS 
USART (Universal Synchronous Asynchronous Receiver Transmitter – Transmissor/Receptor 
Universal Síncrono e Assíncrono): Utilizado para a comunicação serial. Esse módulo implementa todo 
o protocolo lógico de comunicação pela porta serial RS-232 com o microcomputador. Para o protocolo 
físico devemos utilizar um conversor de níveis (como o MAX232), uma vez que o Microcontrolador 
fornecerá níveis de tensão de 0 V a 5 V e a RS-232 trabalha com níveis de +15 V a -15 V.. 
 
 
6.2 COMPONENTES ELETRÔNICOS 
Protoboard: É uma placa com vários furos para conexões entre componentes de um circuito elétrico, 
sendo, normalmente, usada para fazer testes com circuitos pequenos devido à grande facilidade de 
manuseio. Um exemplo pode ser visualizado na imagem abaixo. 
 
A placa é espelhada e tem duas partes: a central, para conexões entre os componentes 
elétricos, e a periférica, geralmente usada para conectar a alimentação e a terra. Na parte central os 
furos das colunas são conectados entre si, mas não se conectam com outras linhas. Já na parte 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
periférica os furos das linhas são conectados entre si e não se conectam com os furos das colunas. 
Como pode ser visto na imagem abaixo. 
 
Resistor: É um componente formado por carbono e outros elementos resistentes usados para limitar 
a corrente elétrica em um circuito. Por seu tamanho muito reduzido, é inviável imprimir nos 
resistores as suas respectivas resistências. Optou-se então pelo código de cores, que consiste em 
faixas coloridas no corpo do resistor indicadas como a, b, c e % de tolerância. 
As primeiras três faixas servem para indicar o valor nominal de sua resistência e a última faixa, 
a porcentagem na qual a resistência pode variar seu valor nominal, conforme a seguinte equação: 
𝑅 = (10𝑎 + 𝑏) ∗ 10𝑐 ± % 𝑡𝑜𝑙𝑒𝑟â𝑛𝑐𝑖𝑎 
 
Ex: Um resistor de 2.700.000Ω (2,7MΩ), com uma tolerância de ±10% seria representado pela figura. 
1ª cifra: vermelho (2) 
2ª cifra: violeta (7) 
Multiplicador: verde (105) 
Tolerância: prata ( ±10% ) 
 
 
 
 
 
 
 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
6.3 SENSORES E ATUADORES 
Servomotores: 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
 
Entradas Analógicas e Sensores: 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Escrevendo no LCD 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
6.4 INTERFACES COM O USUÁRIO 
A interface serial UART (Universal Asynchronous Receiver Transmitter) do Arduino é responsável por enviar e 
receber dados para e do microcontrolador. Para isso são utilizados os pinos nomeados como Tx (transmissão) 
e Rx (recepção). No Arduino Uno esses pinos são, respectivamente, D0 e D1 e também são utilizados pelo USB 
para o upload dos programas (sketches) para o microcontrolador. Em outras placas o número de portas seriais 
chega a 4, como mostra a Tabela 
 
Para realizar uma comunicação serial é necessário que seja definida previamente a taxa de transmissão de dados 
que será utilizada tanto pelo transmissor como pelo receptor. Esta taxa é conhecida como (baud rate) e pode 
assumir os valores de 300, 1200, 4800, 9600, 14400, 19200, 28800, 38400, 57600 e 115200, sendo a taxa default 
do Arduino 9600 bauds. 
𝑺𝒆𝒓𝒊𝒂𝒍. 𝒃𝒆𝒈𝒊𝒏(𝒃𝒂𝒖𝒅_𝒓𝒂𝒕𝒆): É utilizado para iniciar uma comunicação serial. O parâmetro de entrada 
baud_rate é utilizado para definir a taxa de transmissão que será utilizada. Normalmente este comando é 
colocado na função setup 
𝑺𝒆𝒓𝒊𝒂𝒍. 𝒂𝒗𝒂𝒊𝒍𝒂𝒃𝒍𝒆(): Utilizada para verificar se existem bytes a serem lidos na porta serial. Caso existam ela 
retorna o número de bytes. Caso contrário é retornado o valor 0, que equivale a um valor lógico falso em 
linguagem C. Este comando deve ser inserido na função loop. 
𝑺𝒆𝒓𝒊𝒂𝒍. 𝒓𝒆𝒂𝒅(): Lê a porta serial e retorna o primeiro byte disponível. Caso não haja informação na porta o 
retorno é igual a -1. 
𝑺𝒆𝒓𝒊𝒂𝒍. 𝒘𝒓𝒊𝒕𝒆(): É utilizada para escrever dados na porta serial. Os dados podem ser enviados como bytes ou 
conjuntos de bytes. 
 
6.5 IMPORTÂNCIA DE INTERRUPÇÕES PARA O RECEBIMENTO DE DADOS 
O método mais utilizado para a verificação do estado de um pino de entrada é a leitura frequente do 
nível nele presente (técnica de polling – sondagem) por ser o método de fácil implementação. 
No entanto, a despeito desta simplicidade, esse método não se mostra adequado em situações 
em que é preciso uma resposta imediata do processador assim que houver uma mudança no nível de 
um pino. 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
Em tais casos, é recomendado que seja utilizado uma interrupção, ou seja, a chamada de uma 
função auxiliar que só é executada se houver ocorrido um evento externo específico, como a mudança 
do estado de um pino. Como o próprio nome indica, uma interrupção serve para interromper a 
execução normal do programa principal e, imediatamente, tratar do evento que a gerou. Nesse caso, 
após a chamada da função auxiliar, o fluxo original do programa principal só será retomado quando a 
interrupção for concluída. 
✓ Timer: Ocorre sempre que o contador do timer estoura, isto é, quando atinge o valor máximo e é 
incrementado de uma unidade. Por exemplo, o timer 0 (endereço 01H) é um temporizador de 8 
bits (conta de 0 a 255). Quando o contador atingir 255, no próximo incremento ele estourará 
(tentará passar para 256), retornando a zero e disparando a interrupção de timer 0. 
Para que essa interrupção funcione, o registrador responsável pela interrupção deve-se 
receber 1, como por exemplo no PIC o registrador INTCON.GIE = 1 (liga chave geral); INTCON.T0IE 
= 1 (liga timer 0). Sempre que ocorrer o estouro do contador, o bit INTCON.T0IF estará em 1 e a 
rotina de tratamento dessa interrupção será acionada. 
A interrupção de timer é muito útil quando desejamos medir intervalos de tempo de forma 
precisa. Por exemplo, considerando um clock interno de 1 MHz, obteremos um ciclo de máquina 
de 1 µs. Carregando o timer 0 com o valor 250, após 5 ciclos de máquina (5 µs) teremos a 
ocorrência da interrupção de timer, a qual poderá ser utilizada paraincrementar um contador que 
contará de forma precisa, de 5 µs em 5 µs. 
✓ Externa: Permite a detecção exata do instante em que os eventos externos acontecem, tais como: 
quando algum objeto passou em frente a um sensor de presença, quando um eixo que gira 
completou uma volta, quando a tensão da rede passou por zero etc. 
Essa interrupção pode ser disparada pela borda de subida ou pela borda de descida do sinal. 
Tal seleção é feita no registrador. Antes de sair da rotina de interrupção, essa flag deverá ser 
colocado em zero. 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
7. PROJETOS COM MICROCONTROLADORES 
7.1 ESCOLHA DAS PLATAFORMAS 
7.2 DEFINIÇÃO DE LIMITAÇÕES PARA PROJETOS DE ALTO DESEMPENHO 
7.3 COMANDOS BÁSICOS DA PROGRAMAÇÃO UTILIZANDO ARDUINO 
pinMode (pino, CONFIG): Este comando serve para configurar o pino digital a ser utilizado. Como 
parâmetros, deve-se colocar qual pino estamos tratando e sua respectiva configuração (INPUT para 
entrada de dados e OUTPUT para saída). Caso não utilize este comando para os pinos do Arduino 
utilizados, o sketch não saberá se trata de uma porta de entrada ou saída de dados. 
Ex: Para configurar o pino 3 como Saída, utilizamos o comando: pinMode (3, OUTPUT); 
Ex: Para configurar o pino 3 como Entrada, utilizamos o comando: pinMode (3, INPUT); 
 
digitalWrite (pino, ESTADO): Este comando serve para enviar um estado lógico para um determinado 
pino. Como parâmetros, deve-se colocar qual pino estamos tratando e qual o seu estado lógico (LOW 
para 0V e HIGH para 5V). Para uso deste comando, anteriormente o pino deve ter sido configurado 
como saída através de pinMode. 
Ex: Enviar sinal de 5V para o LED no pino 3, utilizamos o comando: digitalWrite (3, HIGH); 
Ex: Enviar sinal de 0V para o LED no pino 3, utilizamos o comando: digitalWrite (3, LOW); 
 
digitalRead (pino): Este comando serve para receber um sinal lógico de um determinado pino. Seu 
único parâmetro é indicar qual pino deve ser lido. O sinal lido pode ser LOW (0V) ou HIGH (5V). Mesmo 
que o sinal esteja entre estes dois valores (0 e 5V), o pino do Arduino vai associar com o valor mais 
próximo. É desejável que o sinal lido seja armazenado em uma variável para verificação de condições 
dentre outros. Para uso deste comando, anteriormente o pino deve ter sido configurado como entrada 
através de pinMode. 
Ex: Para leitura de um sensor de presença no Pino 8, utilizamos o comando: digitalRead (8); 
 
analogRead (pino): Este comando serve para receber um sinal analógico de um determinado pino. 
Diferente de um pino digital, o analógico identifica a variação entre 0V e 5V, considerando 1024 
possibilidades de valores. Para uso deste comando, é necessário verificar se os pinos possuem 
indicação A (A0 até A5). Não é necessário utilizar o comando pinMode para configuração. Da mesma 
forma que digitalRead, é desejável associar o valor de leitura a uma variável. 
Ex: Para leitura de um potenciômetro no Pino A2, utilizamos o comando: analogRead (A2); 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
analogWrite (pino, valor): Este comando serve para enviar um sinal PWM (pulsação por largura de 
pulso) a um determinado pino. A maioria dos Arduinos não possui saída analógica, mas possuem pinos 
de PWM para “simular” este tipo de saída. Trata-se de uma onda quadrada que oscila, mantendo-se 
em nível alto dado um período. Esta média da onda faz com que haja uma saída com variação entre 0 
e 5V, com 256 possibilidades de valores. 
Para uso deste comando, é necessário verificar se os pinos possuem indicação ~ (no Arduino Uno são 
3, 5, 6, 9, 10 e 11). Não é necessário utilizar o comando pinMode para configuração. 
Ex: Para definir a velocidade de um motor DC no pino 9 com metade de sua capacidade (0V desligado 
e 5V capacidade máxima), utilizamos o comando: analogWrite (9, 127); 
 
delay (tempo): Este comando serve para definir intervalos de tempo entre comandos. A velocidade de 
execução de um comando no Arduino é muito rápida, na casa dos microssegundos até nanossegundos. 
Para “vermos” alguns comandos no mundo físico, precisamos de intervalos maiores. O delay utiliza 
intervalos em milissegundos, mais visíveis aos nossos olhos. 
Ex: para um intervalo de um segundo, utilizamos o comando: delay(1000); 
 
Declarar Variável ou Pino: Deve ser realizado antes do Void Setup; 
 
 
7.4 DEFINIÇÃO DOS MICROCONTROLADORES PARA COMUNICAÇÃO 
WIRELESS E INTERNET DAS COISAS (IOT) 
 
 
 
 
 ARA0108 - MICROPROCESSADORES 
Prof. Ms. Pedro Gabriel Calíope Dantas Pinheiro 
 
 
 
8. Referências 
✓ PEREIRA, Fábio. Microcontroladores PIC18 Detalhado: Hardware e Software.. 1ª Ed.. São Paulo: Érica, 2010. Disponível 
em: https://integrada.minhabiblioteca.com.br/#/books/9788536519890/ 
✓ PEREIRA, Fábio. Microcontroladores PIC Programação em C.. 7ª Ed.. São Paulo: Érica, 2007. Disponível em: 
https://integrada.minhabiblioteca.com.br/#/books/9788536519937/ 
✓ ZANCO, Wagner da Silva. Microcontroladores PIC18 com linguagem C: Uma Abordagem Prática e Objetiva Com Base 
no PIC18F4520. 1ª Ed.. São Paulo: Érica, 2010. Disponível em: 
https://integrada.minhabiblioteca.com.br/#/books/9788536519982/ 
✓ BAER, Jean-loup. Arquitetura de Microprocessadores: do simples pipeline ao multiprocessador em chip.. 1ª Ed.. Rio 
de Janeiro: LTC, 2013. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/978-85-216-2677-0/ 
✓ LENZ, Maikon Lucian; TORRES, Fernando Esquírio. MICROPROCESSADORES. 1ª Ed. Porto Alegre: SAGAH, 2019. 
Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595029736/ 
✓ SOUSA, Daniel Rodrigues de; SOUZA, David José de. Desbravando o Microcontrolador PIC18: Ensino didático.. 1ª Ed.. 
São Paulo: Érica, 2012. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536518329/ 
✓ SOUSA, Daniel Rodrigues de; SOUZA, David José de. Desbravando o Microcontrolador PIC24: Conheça os 
Microcontroladores de 16 Bits.. 1ª Ed.. São Paulo: Érica, 2008. Disponível em: 
https://integrada.minhabiblioteca.com.br/#/books/9788536518336/ 
 SOUZA, David José de. PIC Ampliado e Atualizado para PIC16F628A.. 12ª Ed.. São Paulo: Érica, 2008. Disponível em: 
https://integrada.minhabiblioteca.com.br/#/books/9788536518312/ 
 
 
https://integrada.minhabiblioteca.com.br/#/books/9788536519890/
https://integrada.minhabiblioteca.com.br/#/books/9788536519937/
https://integrada.minhabiblioteca.com.br/#/books/9788536519982/
https://integrada.minhabiblioteca.com.br/#/books/978­85­216­2677­0/
https://integrada.minhabiblioteca.com.br/#/books/9788595029736/
https://integrada.minhabiblioteca.com.br/#/books/9788536518329/
https://integrada.minhabiblioteca.com.br/#/books/9788536518336/
https://integrada.minhabiblioteca.com.br/#/books/9788536518312/

Outros materiais