22
Fábio Souza 2015 Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados Resumo básico de Linguagem C

Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de Linguagem C

Embed Size (px)

Citation preview

Fábio Souza2015

Microcontroladores ARM Cortex M0+Aplicação em robôs autoguiados

Resumo básico de Linguagem C

Fábio Souza 2015

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;

Fábio Souza 2015

Estrutura básica de um programa em C para microcontroladores

void main() {

//inicializações

while(1) //loop infinito {

/*tarefas a serem executadas pelo microcontrolador duranteo funcionamento */

}}

Fábio Souza 2015

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*/

Fábio Souza 2015

Representação numérica• Decimal:

• valorDecimal = 125;

• Binário:• PORTA=0b11010011;

• Hexadecimal:• valor_hexa = 0xA4;

• Caracter:• valorCarcter = ‘A’;

Fábio Souza 2015

Tipos de Dados Tipos Inteiros - ANSI C (ISO 89)

Fábio Souza 2015

Tipos de dadosTipos inteiros - ISO C99

Fábio Souza 2015

Declaração de VariáveisUm 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;char y;

Fábio Souza 2015

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

Fábio Souza 2015

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

}

Fábio Souza 2015

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

Fábio Souza 2015

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

Fábio Souza 2015

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)

Fábio Souza 2015

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

Fábio Souza 2015

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

Fábio Souza 2015

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

Fábio Souza 2015

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) ligaRele();else desligaRele();

Fábio Souza 2015

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

Fábio Souza 2015

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

Fábio Souza 2015

forForma geral:

for( inicialização;condição;incremento) comando;Oufor( 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

Fábio Souza 2015

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;

}

Fábio Souza 2015

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