Você está na página 1de 47

Microcontroladores

Aplicações Avançadas de
Microprocessadores
(AAM)
AULA2

Profa. Ana T. Y. Watanabe


atywata@gmail.com.br
Microcontroladores

“O temor do SENHOR é o princípio do


conhecimento; os loucos desprezam
a sabedoria e a instrução.”
Provérbios 1:7
NHOR é odesprezam a sabedoria e a
Tópicos

• Introdução à linguagem de programação

• Algoritmos x programas

• Exemplo de algoritmo, fluxograma e programa

• Linguagem de máquina

• Linguagem C
Linguagem de Programação

 Os microcontroladores são máquinas


digitais que funcionam com dígitos
binários (0100101011...).

 Isso significa que essas máquinas


somente entendem os códigos de
máquina gerados pelo compilador.
Linguagem de Programação

 Os seres humanos são capazes de pensar


diversas coisas simultaneamente, e fora de
ordem. Nosso cérebro é capaz de organizar
as ideias e transformar os estímulos
externos e internos em um resultado.
Linguagem de Programação

 Como fazer a ponte entre uma máquina tão


poderosa quanto o cérebro humano e uma
máquina tão limitada quanto um
computador?
Linguagem de Programação

A resposta é a ORGANIZAÇÃO

 Um programa de computador deve ser


organizado de tal forma que a máquina
realize as operações de forma correta.

 O SER HUMANO TEM QUE PENSAR


PELAS MÁQUINAS!
Linguagem de Programação

 O fundamental na linguagem de programação é


ter todo o trabalho organizado e padronizado.

 As máquinas não precisam nos entender e nem


têm como fazê-lo.

 Nós é que devemos nos fazer entender.

 As máquinas sempre executarão o que foram


programadas para fazer. Se esquecermos algo
ou colocarmos na ordem errada, o programa
ficará errado.
Linguagem de Programação

• As linguagens de programação compreendem


uma sintaxe e uma semântica.

• A sintaxe é o padrão usado para escrever o


programa, pois as máquinas só entendem as
informações escritas na forma específica da
linguagem;

• A semântica é a lógica geral do programa.


ALGORITMOS

• O algoritmo é uma sequência de


instruções bem definida.

• O algoritmo é como uma receita de


bolo, onde todos os passos estão
listados em ordem clara e objetiva.

• Algoritmos ruins podem causar


falhas inesperadas.
ESTRUTURAS DOS ALGORITMOS:

• FAÇA ... ENQUANTO


(do {...} while)

Estrutura de repetição: Ação é realizada


uma vez e depois a condição é
verificada.
ESTRUTURAS DOS ALGORITMOS:

• ENQUANTO ... FAÇA (while(...) {...}

Estrutura de repetição: A condição


é verificada primeiro e a ação depois.
ESTRUTURAS DOS ALGORITMOS:

• PARA ... DE ... ATÉ ... FAÇA


(for(i=0 ;i<10 ;i++) {...})

Estrutura de repetição: voltada para que a ação


seja repetida um determinado
número de vezes. A condição é primeiro
verificada e somente depois a ação é
realizada.
ESTRUTURAS DOS ALGORITMOS:

• SE ... ENTÃO (SENÃO ...) ... FIM SE


(if(...){...} else {...})

Estrutura condicional: Realiza


determinadas ações se a
condição for verdadeira e outras ações
caso a condição seja falsa.
ESTRUTURAS DOS ALGORITMOS:

• FAÇA CASO (CASO ...) SENÃO ... FIM


CASO (switch(...) {case ...{...}
case... {...}...}

Estrutura condicional: Realiza ações para


cada situação.
Alguns OPERADORES
UTILIZADOS:

ATRIBUIÇÃO (=), atribui um valor a uma


variável.
ARITMÉTICOS (+, -, *, /, %), realizam as
quatro operações básicas.
RELACIONAIS (>, >=, <=, ==, !=),
utilizados para descrição de condições.
LÓGICOS (&&, ||) e BIT a BIT (&, |, ^,~),
utilizados para estabelecer uma relação
entre condições.
Exemplo de algoritmo: Encontrar
dígitos individuais de um número de 3 dígitos.
467|10
7 46 |10
6 4|10
4 0
ALGORITMOS X PROGRAMAS

• Programa é o algoritmo escrito


de tal forma que a máquina consiga
interpretá-lo e produzir o resultado
esperado.

• Quanto melhor for escrito o algoritmo,


mais confiável será o programa.
ALGORITMOS X PROGRAMAS

• O programa é o conjunto previamente


definido de instruções a serem
executadas por uma máquina capaz
de interpretá-las e executá-las.

• No nosso caso será escrito para o


microcontrolador ATmega328-P.
Fluxograma

• Fluxogramas são algoritmos gráficos


usados para representar algo que deve
ser executado.

• Os fluxogramas ajudam a perceber a


complexidade do programa e estruturar o
código.
Fluxograma

• Com o uso do fluxograma, é muito mais


rápido desenvolver um projeto e muito
mais fácil perceber as falhas do programa.

• O fluxograma organiza as ideias trazendo


um ganho em produtividade e
minimizando as horas de trabalho.
Fluxograma
Fluxograma
Em qual linguagem de
programação?

• Dentro do microcontrolador, os circuitos


eletrônicos são capazes de ler apenas dígitos
binários, armazenados na forma de níveis lógicos
de tensão.

• O microcontrolador usado ATmega328-P usa 5V


para o nível lógico alto e 0V para o nível lógico
baixo.

• Para representar estes dígitos usamos os


números 0 e 1, respectivamente para os dígitos
baixo e alto.
Linguagem de Máquina

• A programação direta em código de


máquina é muito difícil e não permite que o
programador faça projetos complexos.

• Desta forma, é impraticável a programação


em código de máquina, devido ao elevado
custo de mão de obra.
Linguagem de Máquina

• Quase nunca um sistema é programado


em linguagem de máquina, pois, quanto
mais complexo o código, maior a chance
de ter sido desenvolvido em alguma
linguagem próxima à linguagem humana,
chamada linguagem de alto nível como
linguagem C.
• Linguagem Assembly

• É a linguagem nativa que tem uma


abordagem direta ao seu núcleo.

• Muito importante conhecer mesmo com o


melhor compilador em outras linguagens,
pois possibilita desenvolver códigos
com melhor eficiência, ou seja, mais
rápido, melhor utilização dos recursos
e menor consumo de memória.
• Linguagem Assembly

• A linguagem assembly é composta


por mnemônicos que representam
diretamente os códigos de máquina.

•Apesar de não ser tão próxima da


•linguagem humana, a linguagem
•assembly facilita muito a
•programação.
Linguagem C

• Por excelência, é a linguagem da


engenharia por causa de sua
estrutura, portabilidade e reutilização
de recursos de processamento.

• Os compiladores dessa linguagem


estão cada vez mais otimizadas.
Alguns itens importantes para
programar no ambiente Arduino
ATmega328-P
• Registradores de I/O (pg. 106)

x = B, C ou D
0 => entrada e 1=> saída
PORTx do ATMEGA328-P
ATMEGA328-P – Arduino x ATMEGA328-P
Leds da placa Multi-Function shield
-QE64TWR-S08DC-QE64

TWR-S08DC-QE64
Exemplo de Fluxograma e
Linguagem C

• Para ilustrar o processo de organização


de um programa, vejamos um exemplo de
pisca led.
• Fluxograma - pisca led
• Linguagem C - pisca led

Notações importantes:

0b => para números binários


Ex.: DDRB = 0b00001011;

0x => para números hexadecimais


Ex.: DDRB = 0x0B;

Números decimais
Ex.: DDRB = 11;
• Linguagem C - pisca led

#include <avr/io.h> //definições do ATmega328P


#include <util/delay.h> //para incluir
//rotina: _delay_ms()

//Definições de macros - empregadas para o trabalho


// com os bits
#define set_bit(Y,bit_x) (Y|=(1<<bit_x))
/*ativa o bit x da variável Y (coloca em 1)*/

#define clr_bit(Y,bit_x) (Y&=~(1<<bit_x))


/*limpa o bit x da variável Y (coloca em 0)*/

#define LED PB5 //LED é o substituto de PB5


• Linguagem C - pisca led

Explicação das diretivas: #include e #define

A morfologia da diretiva include é a seguinte:

#include <nome_do_arquivo.extensão>
O pré-processador procura por um cabeçalho específico
nos diretórios de cabeçalhos e o processa, incluindo
apenas a parte que realmente foi utilizada.

#include ”nome_do_arquivo.extensão”
O pré-processador procura o cabeçalho no diretório
de trabalho atual.
• Linguagem C - pisca led

Explicação da diretiva: #define

#define set_bit(Y,bit_x) (Y|=(1<<bit_x))


/*ativa o bit x da variável Y (coloca em 1)*/

Vamos substituir a macro set_bit(Y,bit_x) por


(Y|=(1<<bit_x)), ou seja,

(Y= Y|(1<<bit_x))
• Linguagem C - pisca led

Revisão de Máscara de bits: Em C usa-se oprações lógicas


bit a bit:
• Linguagem C - pisca led

Revisão de Máscara de bits: Em C usa-se operações lógicas


bit a bit:
#define set_bit(Y,bit_x) (Y= Y|(1<<bit_x))

Por exemplo, supondo que se deseje colocar o bit 5 do


PORTD em 1 (pino PD5), a operação realizada é dada por
set_bit(PORTD,5).
• Linguagem C - pisca led

#define clr_bit(Y,bit_x) (Y&~(1<<bit_x))

Por exemplo, supondo que se deseje colocar o bit 2 do


PORTB em 0 (pino PB2), a operação realizada é dada por
clr_bit(PORTB,2).

Como é feito???
• Linguagem C - pisca led

#define clr_bit(Y,bit_x) (Y&~(1<<bit_x))

Por exemplo, supondo que se deseje colocar o bit 2 do


PORTB em 0 (pino PB2), a operação realizada é dada por
clr_bit(PORTB,2).
• Linguagem C - pisca-led

Escrevam o código do pisca-led em C utilizando


a subrotina ou função: _delay_ms().
• Linguagem C - pisca led

int main( )
{
DDRB = 0xFF; //configura todos os pinos do PORTB
//como saídas
while(1) //laço infinito
{
...
}
}
• Linguagem C - pisca led

void main(void )
{
DDRB = 0xFF; //configura todos os pinos do PORTB
//como saídas
while(1) //laço infinito
{
set_bit(PORTB,LED); //apaga LED
_delay_ms(1000);
clr_bit(PORTB,LED); //liga LED
_delay_ms(1000);
}
}

Você também pode gostar