resumo linguagem c para microcontroladores pic usando mikroc
DESCRIPTION
Breve resumo sobre linguagem C com foco no compilador mikro CTRANSCRIPT
Linguagem CResumo 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 microcontroladoresvoid 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 doublevalores 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 MikroCTipos 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 MikroCTipo 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 casode 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 verdadeiracomandoaA2; ...comandoAn;
}else{comandoB1; //bloco de código para a condição falsacomandoB2; ...comandoBn;
}
switch
• É utilizado para a realização de comparações sucessivas de uma forma elegante, clara eeficiente.
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 umacondiçã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);