Você está na página 1de 24

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

 

1bit

0

or 1

sbit

 

1bit

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 * 10 45

+3.4 * 10 38

double

4

byte

-1.5 * 10 45

+3.4 * 10 38

long double

4

byte

-1.5 * 10 45

+3.4 * 10 38

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;

comandoaA2;

comandoAn;

}

else

{ comandoB1;

comandoB2;

comandoBn;

}

//bloco de código para a condição verdadeira

//bloco de código para a condição falsa

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);