Escolar Documentos
Profissional Documentos
Cultura Documentos
Passos
SEMANA 2
Wlamir Passos
Processador AVR ‐ Atmel
Atmega32U4
Wlamir Passos
Diagrama de blocos
Wlamir Passos
ATmega8 / ATmega32U4
Wlamir Passos
Portas de I/O
Wlamir Passos
Revisão de “C”
• #include <arquivo.ext>
– Inclui neste ponto o arquivo definido que está no diretório do compilador
• #include “arquivo.ext”
– Inclui neste ponto o arquivo definido que está no diretório atual ou
especificado (“c:\teste\arquivo.ext”)
• #define APELIDO texto a ser colocado
– Define que onde for escrito APELIDO o compilador deve ententer o texto que
está colocado a seguir.
• int funcao_teste (char a; char b);
– Declaração do prototipo da funcao_teste, a funcao pode estar em qualquer
lugar no arquivo.
• extern int....
– Define que a função ou variavel definida a seguir pode estar em um outro
arquivo.
Wlamir Passos
Estrutura de um programa em C
Wlamir Passos
Revisão de Lógica Booleana
• Operação And • Operação Or
– X * 1 = X – X + 1 = 1
– X * 0 = 0 – X + 0 = X
• A operação and “zera” onde é • A operação or “seta” onde é
colocado bits em “0” e colocado bits em “1” e
mantem o valor original nos mantem o valor original nos
bits em “1”. bits em “0”.
• Em C • Em C
– result = valor & const – result = valor | const
– valor &= const – valor |= const
Wlamir Passos
Operações com bits em “C”
• Valor = (1<<5);
– Valor terá em binario o valor 1 deslocado para esquerda 5 casas, assim em 8
bits seria 00100000. Ou seja, é colocado 1 no bit 5.
• Valor = (1<<5) | (1<<3);
– Teriamos uma operação or entre 00100000 e 00001000 que será 00101000.
Ou seja 1 nos bits 5 e 3.
• Valor = Valor | (1<<5) | (1<<3);
– Teriamos uma operação or entre 00100000 , 00001000 e o conteudo do byte
Valor, que será xx1x1xxx. Ou seja 1 nos bits 5 e 3 mantendo os outros bits
como estavam.
• Conclusão:
– A operação Or pode servir para ligar Ligar bits em uma variavel
Wlamir Passos
Operações com bits em “C”
• Valor = ~(1<<5);
– Valor terá em binario o NOT do valor 1 deslocado para esquerda 5 casas,
assim em 8 bits seria 11011111. Ou seja, é colocado 0 no bit 5. e 1 nos demais
bits
• Valor = ~(1<<5) & ~(1<<3);
– Teriamos uma operação And entre 11011111 e 11110111 que será 11010111.
Ou seja 0 nos bits 5 e 3.
• Valor = Valor & ~(1<<5) & ~(1<<3);
– Teriamos uma operação And entre 11011111 , 11110111 e o conteudo do byte
Valor, que será xx0x0xxx. Ou seja 0 nos bits 5 e 3 mantendo os outros bits
como estavam.
• Valor = Valor & (1<<5)
– Teriamos uma operação and entre 00100000 e o conteudo do byte Valor, que
será 00X00000. Ou seja 0 em todos os bits e mantendo o valor do bit 5.
• Conclusão:
– A operação And pode servir para ligar zerar bits em uma variavel
– A operação And pode servir para testar bits de uma variavel
Wlamir Passos
bit 7 6 5 4 3 2 1 0 bit 7 6 5 4 3 2 1 0
Valor X X X X X X X X Valor X X X X X X X X
(1<<4) 0 0 0 1 0 0 0 0 ~(1<<4) 1 1 1 0 1 1 1 1
(1<<6) 0 1 0 0 0 0 0 0 ~(1<<6) 1 0 1 1 1 1 1 1
OR X 1 X 1 X X X X AND X 0 X 0 X X X X
Resultado: Seta o bit 4 e 6 do valor Resultado: Reseta o bit 4 e 6 do valor
PORTB = PORTB | (1<<6) | (1<<4); PORTB = PORTB & ~(1<<6) & ~(1<<4);
PORTB |= (1<<4); // Seta bit 4 PORTB &= ~(1<<4); // Reseta bit 4
#define LED 4 #define LED 4
PORTB |= (1<<LED); // Acende led PORTB &= ~(1<<LED); // Apaga led
#define Liga_led PORTB |= (1<<4) #define Apaga_led PORTB &= ~(1<<4)
Liga_led; Apaga_led;
Wlamir Passos
SEMANA 3
Wlamir Passos
Revisão linguagem C
Wlamir Passos
Estruturas do C
Repetição Repetição
Teste (if) (while) (do while)
in in in
out out
se (condição){
bloco A verdadeiro
} se não { Enquanto (condição){ Faça{
bloco B falso bloco a executar bloco a executar
} } } Enquanto(condição)
Estruturas do C
Repetição
(for)
Casos (case)
in
in
Inicia contador
1 2 3 Outros
A B C D
Bloco
out
Muda contador
conforme (expressão){ switch ( valor) {
caso 1: case 1:
teste True
bloco A Acende_led1();
?
caso 2: break;
False
bloco B case 2:
out caso 3: Acende_led2();
Para( cnt =0; enquanto cnt<100; cnt=cnt+1){ bloco C break
bloco a executar outros: case 3:
} bloco D Acende_led3();
} break
for ( x=0; x<100; x++ ){ default:
pisca_led(); Apaga_leds();
} break
}