Linguagem C
Resumo da linguagem C com foco em desenvolvimento para
microcontroladores PIC baseado na IDE MikroC for PIC
Por : Fábio B. de Souza
Porque usar linguagem C?
•Características:
•Estruturada;
•Alto nível (comparada ao Assembly);
•Facilidade de acesso ao hardware;
•Portabilidade;
•Curva de aprendizagem reduzida;
•Reutilização de código;
Estrutura básica de um programa em C para
microcontroladores
void main() {
//inicializações de hardware e software
while(1) //loop infinito
{
/*tarefas a serem executadas
pelo microcontrolador durante
o funcionamento */
}
}
Comentários
São Utilizados para:
◦ Documentação do software;
◦ Exclusão de linhas durante a compilação.
Comentários de linha simples:
//este é um comentário de linha simples
Comentários de Múltiplas linhas:
/*
este é um
comentário de
múltiplas linhas
*/
Representação numérica
• Decimal:
• valorDecimal = 125;
• Binário:
• PORTA=0b11010011;
• Hexadecimal:
• valor_hexa = 0xA4;
• Octal:
• valorOctal=075;
• Caracter:
• valorCarcter = ‘A’;
Tipos de Dados
TIPO RESPRESENTA
char caracteres
int inteiros
float e double
valores com casas decimais
(ponto flutuante)
void nulos
Modificadores de tipos
Modificador modificação
signed Sinalizado
Unsigned Não sinalizado
Short Inteiro menor que o padrão
Log Inteiro maior que o padrão
Tipos de dados no MikroC
Tipos inteiros:
TIPO Tamanho Range
bit 1–bit 0 or 1
sbit 1–bit 0 or 1
(unsigned) char 1 byte 0 .. 255
signed char 1 byte - 128 .. 127
(signed) short (int) 1 byte - 128 .. 127
unsigned short (int) 1 byte 0 .. 255
(signed) int 2 byte -32768 .. 32767
unsigned (int) 2 byte 0 .. 65535
(signed) long (int) 4 byte -2147483648 .. 2147483647
unsigned long (int) 4byte 0 .. 4294967295
Tipos de dados no MikroC
Tipo de ponto flutuante:
Tipo Tamanho Range
float 4 byte -1.5 * 1045 .. +3.4 * 1038
double 4 byte -1.5 * 1045 .. +3.4 * 1038
long double 4 byte -1.5 * 1045 .. +3.4 * 1038
Declaração de Variáveis
Um variável é declarada da seguinte forma:
<qualificador> + <tipo de dado> + <nome da variável> + <valor>;
Obs.: onde o valor pode ou não ser inicializado.
Exemplos:
unsigned int valor = 12345;
int contador;
short y;
Variável local
• É declarada dentro de um bloco de instruções, é só pode se acessada
dentro deste bloco.
• Exemplo:
int delay()
{
int valor1 =5;
int valor2 =7;
return(valor1+valor2)/2;
}
Variável global
• É declarada fora de bloco de função e pode ser acessada por todas as funções e blocos de instruções.
• Exemplo:
int valor1 =5;
int valor2 =7;
int media()
{
return(valor1+valor2)/2;
}
int soma()
{
return(valor1+valor2)/
}
Operadores Aritméticos
• Realizam operações matemáticas:
OPERADOR AÇÃO
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto de divisão inteira
++ Incremento
-- Decremento
Operadores Relacionais
• Usados em testes condicionais para determinar relações entre dados.
OPERADOR AÇÃO
> Maior que
>= Maior ou igual que
< Menor que
<= Menor ou igual que
== Igual a
!= Diferente de
Operadores lógicos
• São usados para realizar testes booleanos entre elementos em um
teste condicional
OPERADOR AÇÃO
&& AND (E)
|| OR (OU)
! NOT (NÃO)
Operadores lógicos bit a bit
• São utilizados para operações lógicas entre elementos ou variáveis.
OPERADOR AÇÃO
& AND(E)
| OR(OU)
^ XOR (OU EXCLUSIVO)
~ NOT (NÃO)
>> Deslocamento à direita
<< Deslocamento à esquerda
Associação de operadores
• Abreviação entre a operação e atribuição
Forma expandida Forma reduzida
x = x + y x += y
x = x - y x -= y
x = x * y x *= y
x = x / y x /= y
x = x % y x %= y
x = x & y x &= y
x = x | y x |= y
x = x ^ y x ^= y
x = x << y x <<= y
x = x >> y x >>= y
if
• Utilizada para executar um comando ou bloco de comandos no caso
de uma determinada condição ser avaliada como verdadeira.
• Forma geral:
• if(condição) comando;
• Exemplo:
• if(temperatura < setPoint) RELE = 1;
if - else
• Utilizado quando há a necessidade de tomar uma ação caso a
condição for avaliada como falsa.
if (condição)
comandoA;
else
comandoB;
Exemplo:
if (temperatura < setpoint)
rele = 1;
else
rele = 0;
if - else
• Para executar um bloco de códigos dentro da declaração if- else:
if(condição)
{
comandoA1; //bloco de código para a condição verdadeira
comandoaA2;
...
comandoAn;
}
else
{
comandoB1; //bloco de código para a condição falsa
comandoB2;
...
comandoBn;
}
switch
• É utilizado para a realização de comparações sucessivas de uma forma elegante, clara e
eficiente.
switch(variável)
{
case constante1:
comandoA;
. . .
break;
case constante2:
comandoB;
. . .
break;
. . .
. . .
default:
comandoX;
}
for
 Forma geral:
for( inicialização;condição;incremento) comando;
Ou
for( inicialização;condição;incremento)
{
Comando1;
Comando2;
. . .
ComandoN;
}
onde:
• inicialização: essa seção conterá uma inicialização para a variável;
• condição: que interromperá o laço
• incremento: operação a cada iteração
while
• Repete um comando ou um conjunto de instruções enquanto uma
condição for avaliada como verdadeira.
• Forma geral:
while(condição)
{
comando1;
comando2;
...
comandoN;
}
do-while
• Este laço é uma variação do comando WHILE, sendo que neste caso o
comando será executado antes de testa se a condição é verdadeira.
• Forma geral:
do
{
comandoA;
comandoB;
...
comandoN;
} while (condição);

Resumo Linguagem C

  • 1.
    Linguagem C Resumo dalinguagem C com foco em desenvolvimento para microcontroladores PIC baseado na IDE MikroC for PIC Por : Fábio B. de Souza
  • 2.
    Porque usar linguagemC? •Características: •Estruturada; •Alto nível (comparada ao Assembly); •Facilidade de acesso ao hardware; •Portabilidade; •Curva de aprendizagem reduzida; •Reutilização de código;
  • 3.
    Estrutura básica deum programa em C para microcontroladores void main() { //inicializações de hardware e software while(1) //loop infinito { /*tarefas a serem executadas pelo microcontrolador durante o funcionamento */ } }
  • 4.
    Comentários São Utilizados para: ◦Documentação do software; ◦ Exclusão de linhas durante a compilação. Comentários de linha simples: //este é um comentário de linha simples Comentários de Múltiplas linhas: /* este é um comentário de múltiplas linhas */
  • 5.
    Representação numérica • Decimal: •valorDecimal = 125; • Binário: • PORTA=0b11010011; • Hexadecimal: • valor_hexa = 0xA4; • Octal: • valorOctal=075; • Caracter: • valorCarcter = ‘A’;
  • 6.
    Tipos de Dados TIPORESPRESENTA char caracteres int inteiros float e double valores com casas decimais (ponto flutuante) void nulos
  • 7.
    Modificadores de tipos Modificadormodificação signed Sinalizado Unsigned Não sinalizado Short Inteiro menor que o padrão Log Inteiro maior que o padrão
  • 8.
    Tipos de dadosno MikroC Tipos inteiros: TIPO Tamanho Range bit 1–bit 0 or 1 sbit 1–bit 0 or 1 (unsigned) char 1 byte 0 .. 255 signed char 1 byte - 128 .. 127 (signed) short (int) 1 byte - 128 .. 127 unsigned short (int) 1 byte 0 .. 255 (signed) int 2 byte -32768 .. 32767 unsigned (int) 2 byte 0 .. 65535 (signed) long (int) 4 byte -2147483648 .. 2147483647 unsigned long (int) 4byte 0 .. 4294967295
  • 9.
    Tipos de dadosno MikroC Tipo de ponto flutuante: Tipo Tamanho Range float 4 byte -1.5 * 1045 .. +3.4 * 1038 double 4 byte -1.5 * 1045 .. +3.4 * 1038 long double 4 byte -1.5 * 1045 .. +3.4 * 1038
  • 10.
    Declaração de Variáveis Umvariável é declarada da seguinte forma: <qualificador> + <tipo de dado> + <nome da variável> + <valor>; Obs.: onde o valor pode ou não ser inicializado. Exemplos: unsigned int valor = 12345; int contador; short y;
  • 11.
    Variável local • Édeclarada dentro de um bloco de instruções, é só pode se acessada dentro deste bloco. • Exemplo: int delay() { int valor1 =5; int valor2 =7; return(valor1+valor2)/2; }
  • 12.
    Variável global • Édeclarada fora de bloco de função e pode ser acessada por todas as funções e blocos de instruções. • Exemplo: int valor1 =5; int valor2 =7; int media() { return(valor1+valor2)/2; } int soma() { return(valor1+valor2)/ }
  • 13.
    Operadores Aritméticos • Realizamoperações matemáticas: OPERADOR AÇÃO + Adição - Subtração * Multiplicação / Divisão % Resto de divisão inteira ++ Incremento -- Decremento
  • 14.
    Operadores Relacionais • Usadosem testes condicionais para determinar relações entre dados. OPERADOR AÇÃO > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que == Igual a != Diferente de
  • 15.
    Operadores lógicos • Sãousados para realizar testes booleanos entre elementos em um teste condicional OPERADOR AÇÃO && AND (E) || OR (OU) ! NOT (NÃO)
  • 16.
    Operadores lógicos bita bit • São utilizados para operações lógicas entre elementos ou variáveis. OPERADOR AÇÃO & AND(E) | OR(OU) ^ XOR (OU EXCLUSIVO) ~ NOT (NÃO) >> Deslocamento à direita << Deslocamento à esquerda
  • 17.
    Associação de operadores •Abreviação entre a operação e atribuição Forma expandida Forma reduzida x = x + y x += y x = x - y x -= y x = x * y x *= y x = x / y x /= y x = x % y x %= y x = x & y x &= y x = x | y x |= y x = x ^ y x ^= y x = x << y x <<= y x = x >> y x >>= y
  • 18.
    if • Utilizada paraexecutar um comando ou bloco de comandos no caso de uma determinada condição ser avaliada como verdadeira. • Forma geral: • if(condição) comando; • Exemplo: • if(temperatura < setPoint) RELE = 1;
  • 19.
    if - else •Utilizado quando há a necessidade de tomar uma ação caso a condição for avaliada como falsa. if (condição) comandoA; else comandoB; Exemplo: if (temperatura < setpoint) rele = 1; else rele = 0;
  • 20.
    if - else •Para executar um bloco de códigos dentro da declaração if- else: if(condição) { comandoA1; //bloco de código para a condição verdadeira comandoaA2; ... comandoAn; } else { comandoB1; //bloco de código para a condição falsa comandoB2; ... comandoBn; }
  • 21.
    switch • É utilizadopara a realização de comparações sucessivas de uma forma elegante, clara e eficiente. switch(variável) { case constante1: comandoA; . . . break; case constante2: comandoB; . . . break; . . . . . . default: comandoX; }
  • 22.
    for  Forma geral: for(inicialização;condição;incremento) comando; Ou for( inicialização;condição;incremento) { Comando1; Comando2; . . . ComandoN; } onde: • inicialização: essa seção conterá uma inicialização para a variável; • condição: que interromperá o laço • incremento: operação a cada iteração
  • 23.
    while • Repete umcomando ou um conjunto de instruções enquanto uma condição for avaliada como verdadeira. • Forma geral: while(condição) { comando1; comando2; ... comandoN; }
  • 24.
    do-while • Este laçoé uma variação do comando WHILE, sendo que neste caso o comando será executado antes de testa se a condição é verdadeira. • Forma geral: do { comandoA; comandoB; ... comandoN; } while (condição);