Linguagem C
Linguagem C
Linguagem C
08/12/16
Hardware
Código
Estruturas básicas
Programa executa em sequência as instruções, funções
e procedimentos:
procedimento1;
variável = função;
procedimento2;
Comentários
Linha única: //
Multi-linha: /* .... */
Código
Estruturas básicas
Teste condicional
if (expressão) {
.... Este bloco de código será executado
.... se o que estiver dentro do parênteses
.... for verdadeiro
....
}
Obs.: para a linguagem C, “falso” = 0 e “verdadeiro” é
qualquer número diferente de zero.
Obs.: em testes e estruturas de repetição normalmente não
utilizamos o ponto-e-vírgula, pois isso faria com que o teste
fosse “finalizado” antes de iniciar o bloco de código.
Código
Desvio condicional
If (condição) {
//Código que será executado se a condição for verdadeira
}
else {
//Código que será executado se a condição for falsa
(opcional)
}
Código
Estruturas básicas
void setup() {
//Bloco de código que será executado uma única vez
}
void loop() {
//Bloco de código que será executado indefinidamente
}
Código
Funções – entrada / saída digital
pinMode(pino,tipo); //Configura o pino com o tipo
selecionado
Tipo: INPUT (entrada), INPUT_PULLUP (entrada com pull-up
interno – veremos depois) e OUTPUT (saída)
digitalWrite(pino,estado); //Escreve um estado em um
pino
Estado: HIGH ou 1 (ligado), LOW ou 0 (Desligado)
digitalRead(pino); //Retorna o valor de um pino digital
Código
Resistor de pull-up externo
Exercício
Escrever o primeiro programa que irá fazer um LED
ligado ao pino 9 piscar uma vez, por um tempo de
1s, se um botão ligado ao pino 6 for pressionado.
Variáveis
Declaração
Variável única:
tipo variável = valor inicial;
Ex.: int var1 = 0;
Várias variáveis:
tipo variável1 = valor inicial, variável2 = valor inicial, ..., variável
3=valor inicial;
Ex.: char var1, var2, var3;
Variáveis
Inteiras (8 bits)
byte (sem sinal – 0 a 255)
char (com sinal – -128 a 127) – normalmente utilizado
para representar caracteres de acordo com a tabela
ASCII
unsigned char (idem ao byte)
Especial
void (valor nulo) – somente para declaração de
procedimentos ou funções
Variáveis
Inteiras (16 bits)
int (com sinal – -32.768 a 32.767)
short (idem ao int)
unsigned int (sem sinal – 0 a 65.535)
word (idem ao unsigned int)
Aritmética
*,/,+,-, %
Ex.: var1 = 3*2; (resultado: var1 é igual a 6)
var2 = 15%2; (resultado: var2 é igual a 1)
Operadores
Comparação
== (igual a – CUIDADO!)
!= (diferente de)
< (menor que)
> (maior que)
<= (menor igual a)
>= (maior igual a)
Lógicos
&& (E lógico – ex.: if ((a!=0) && (b>10))
|| (OU lógico)
Operadores
Compostos
++ (incremento)
-- (decremento)
+= (adição composta)
-= (subtração composta)
*= (multiplicação composta)
/= (divisão composta)
for (i=0,i<4,i++) {
//Este código será executado quatro vezes!
}
Exercício
Escrever um programa que faça piscar 3 vezes um
LED ligado ao pino 8, se dois botões ligados aos
pinos 3 e 4 forem acionados simultaneamente.
Operadores
Bit a bit
& (E bit a bit)
| (OU bit a bit)
^ (XOR bit a bit)
~ (complemento bit a bit)
<< (rotação à esquerda)
>> (rotação à direita)
Ports
Registradores PORTx e DDRx
DDRx – Define o tipo do pino (entrada ou saída)
0 -> Entrada
1 -> Saída
DDRD
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 0 0 1 0 0
PORTD
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 1 1 0 0 1
Após rotação:
VAR1
B7 B6 B5 B4 B3 B2 B1 B0
0 1 0 1 1 0 0 0
Código
Diretivas
#include (utilizado para incluir determinada biblioteca)
Exemplos: <Servo.h>, <math.h>, <stdio.h>
Código
Diretivas
#define (utilizado para definir um valor que será
substituído no código)
Ex.: #define led1 13 Ao digitar led1 no código, o
mesmo substituirá por 13 durante a compilação
Código
Uso de diretivas para otimização de código
#define set_bit(X,Y) X|=(1<<Y)
#define clear_bit(X,Y) X&=~(1<<Y)
#define inv_bit(X,Y) X^=(1<<Y)
#define test_bit(X,Y) X&(1<<Y)