35
Microcontroladores Prof. Me. Filipe Antoine Khatchadourian Liguagem C

2 Liguagem C

Embed Size (px)

DESCRIPTION

Aprenda linguagem C

Citation preview

Microcontroladores

Prof. Me. Filipe Antoine Khatchadourian

� Liguagem C

2

LINGUAGENS DE PROGRAMAÇÃO

• Linguagem de programação: conjunto finito de símbolos com os quais se escrevem programas de computador.

• Exemplos de linguagem de programação: C, C++, Java, Pascal, Cobol, Basic, Assembly.

• Dependendo da linguagem de programação, os programas podem ser compilados, interpretados ou montados.

• Linguagens com compilação: C, C++, Pascal, Cobol etc.

• Linguagens com interpretação: Basic, ASP, Perl etc.

• Linguagens com compilação e interpretação: Java.

• Linguagem Assembly é uma notação legível por humanos para o código de máquina.

3

LINGUAGEM DE PROGRAMAÇÃO COM COMPILAÇÃO

• Programa descrito em uma linguagem de programação: sequência de comandos compreendida por um ser humano.

• Programa descrito em código de máquina: sequência de 0s e 1s compreendida por uma CPU.

• Compilador: conversor de programas escritos em linguagem de programação para códigos de máquina de uma CPU.

while(i < 10)

{

printf("%d", i);

i++;

}

compilador

10011101

00110001

01100111

11110101

11110001

4

COMPARAÇÃO ENTRE LINGUAGENS DE PROGRAMAÇÃO

código nível vantagens desvantagens

código de máquina

baixo

acesso a todos os

recursos do hardware

dificuldade de programação

C médio

acesso a todos os

recursos do hardware

erros de programação podem

comprometer o funcionamento do

hardware

Java alto facilidade de programação

baixo aceso aos recursos do hardware

5

CÓDIGO-FONTE E CÓDIGO-EXECUTÁVEL

• Código-fonte: contém todos os comandos de um programa, expressos em uma linguagem de programação.

• Código-executável: comandos de um programa convertidos para o código de máquina de uma CPU.

• O compilador gera o código-executável, caso não encontre erros no código-fonte.

• No sistema operacional Windows, arquivos com código-executável possuem geralmente (mas não necessariamente), as extensões .exe e .dll.

• No sistema operacional Linux (ou Unix), arquivos com código-executável possuem geralmente (mas não necessariamente), a extensão .sh, entre outras.

6

LINGUAGEM DE PROGRAMAÇÃO C

• O C é uma linguagem de propósito geral, pertencendo a uma família de linguagens cujas características são:

- acesso a recursos de baixo nível;

- geração de código eficiente;

- confiabilidade;

- simplicidade;

- muito utilizada para microprocessadores.

7

Regras gerais

• Os programas, em linguagem C, são compostos por uma oumais funções.

• As funções podem possuir argumentos e um tipo de retorno.

• Todo programa inicia-se com uma chamada à funçãomain:

main(){

comando1;

• comando2;

• ...

}

8

Regras gerais

• A linguagem C faz distinção entre maiúsculas e minúsculas.Exemplo: a variável nomealuno é diferente de nomeAluno.

• Os comandos devem ser finalizados por ponto-e-vírgula.

• O comando inicial das estruturas de decisão e de repetição nãosão finalizados por ponto-e-vírgula.

Exemplos:

if (a > b && d < e) while( a > 0 ){ {

printf(“mensagem 1”); a = a – 1;printf(“mensagem 2”); printf(“%d”, a);

} }

Sem ponto-e-vírgula! Sem ponto-e-vírgula!

Com ponto-e-vírgula! Com ponto-e-vírgula!

9

Variáveis

• A linguagem C dispõe de quatro tipos básicos de dados. As declarações de variáveis, portanto, podem usar os seguintes tipos:

Número real (ponto flutuante com precisãodupla: 15 dígitos)

8double

Número real (ponto flutuante com precisãosimples: 7 dígitos)

4float

Número inteiro (ANSI: de -32768 a 32767

(atualmente: de -2147483648 a 2147483647)

2 (padrão ANSI)

4 (atualmente)

int

Um caractere (ou, reciprocamente, um inteiro de -128 a 127)

1char

ValorTamanho (bytes)Tipo

10

Modificadores de tamanho e sinal

Um modificador de tipo altera o significado dos tipos basee produz um novo tipo. Existem quatro tipos demodificadores, dois para o tamanho (long e short) e doispara sinal (unsigned e signed). Um tipo declarado com omodificador long pode ter tamanho MAIOR ou IGUALao tipo original. Um tipo declarado como short deve tertamanho MENOR ou IGUAL ao tipo original. A decisão cabeao compilador utilizado.Os tipos declarados como signed possuem um bitreservado para o sinal, deste o valor máximo que podematingir é menor. Os tipos declarados como unsigned nãopodem assumir valores negativos, em compensaçãopodem atingir o dobro do valor de um tipo signed.

11

Modificadores de tamanho e sinal

12

Palavras reservadas da linguagem C

Palavras reservadas pelo padrão ANSI Algumas outras palavras reservadas

asmcdeclinterruptnearfarhuge

Observação importante: palavras reservadas não podem ser usadas como nomes de variáveis.

auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

13

Bloco de comandos

14

Estrutura de decisão

15

Estrutura de repetição com teste no começo

16

Estrutura de repetição com teste no final

17

Estrutura de repetição com variável de controle

18

Comando “break”

19

Comando continue

20

Função printf

Sintaxe: printf ( "expressão de controle", argumentos )

• A função printf permite escrever mensagens no dispositivo padrãode saída (tela).

• A expressão de controle contém caracteres que serão exibidos natela e pode conter códigos de formatação que indicam o formato emque os argumentos devem ser impressos.

• Cada argumento deve ser separado por vírgula.

• Exemplos:

printf(“\n\nEste eh o numero dois: %d", 2);

printf("Aluno: %s \t Nota: %f", "Pedro", 7.5);

Expressão de controle argumento

21

Função printf

- Caracteres de formatação:

%f número em ponto flutuante (float ou double)

%d número em formato decimal

%o número em formato octal

%x número em formato hexadecimal

%c caractere simples

%s cadeia de caracteres

\n nova linha (pula uma linha)

\t tab (insere espaços de uma tabulação)

\" aspas (usado quando se quer imprimir aspas)

\\ barra (usado quando se quer imprimir uma barra)

22

Função scanf

Sintaxe: scanf("expressão de controle", argumentos)

• A função scanf permite ler dados formatados da entrada padrão(teclado) e gravar no(s) endereço(s) de variável(eis).

• A lista de argumentos contém o(s) endereço(s) de variável(eis).

• O operador de endereço em C é referenciado pelo símbolo &, queretorna o endereço de uma variável ou dispositivo físico.

• Exemplo:

int num;

printf("Digite um numero: ");

scanf("%d", &num);

printf(“Numero digitado: %d", num);

%d é substituído pelo valor da variável num

A variável num recebe o número digitado, utilizando o operador &

23

Comentários no Código

• É sempre aconselhável inserir comentários no código para explicaro funcionamento do programa, tornando-o mais legível.

• Na linguagem C, os comentários são colocados dentro dos marcadores /* e */ em uma ou mais linhas.

• As últimas padronizações da linguagem C permitem também oscomentários de uma linha, utilizando o marcador // .

Exemplos:

int a;

// Esta linha é um comentário e não tem influência no código

a = 0;

/* Estas duas linhas também são comentários

e serão descartadas no momento da compilação */

DIRETIVAS DE COMPILAÇÃO

� As diretivas de compilação são instruções que são dadas aocompilador. Elas não serão executadas.

� Todas as diretivas de compilação começam com um sinal #,conhecido como jogo da velha ou hash.

ARQUIVOS .C E .H

� Na programação em linguagem C utilizamos dois tipos dearquivos com funções distintas. Toda implementação decódigo é feita no arquivo com extensão “.c” (code). É neleque criamos as funções, definimos as variáveis e realizamosa programação do código. Se existem dois arquivos “.c” noprojeto e queremos que um deles possa usar as funções dooutro arquivo, é necessário realizar um #include.

#INCLUDE

� A diretiva de compilação #include é a responsável por permitir que oprogramador utilize no seu código funções que foram implementadas emoutros arquivos, seja por ele próprio ou por outras pessoas. Não énecessário possuir o código fonte das funções que se deseja utilizar. Énecessário apenas de um arquivo que indique os protótipos das funções(como elas devem ser chamadas) e possuir a função disponível em suaforma compilada.

� Em geral um arquivo que possui apenas protótipos de funções édenominado de “Header” e possui a extensão “.h”.

#DEFINE

� Outra diretiva muito conhecida é a #define. Geralmente é utilizada paradefinir uma constante, mas pode ser utilizada para que o código fonteseja modificado antes de ser compilado.

Exemplo:

#define CONST 15

void main ( void)

{

printf ( "%d" , CONST * 3) ;

}

OPERAÇÕES ARITMÉTICAS

� Um cuidado a se tomar, na programação em C para sistemasembarcados, é o resultado de operações aritméticas. Por padrão nalinguagem C o resultado de uma operação aritmética possui tamanhoigual ao maior operando.

� Uma variável char somada a um int gera como resultado um int (maioroperando). Não é possível armazenar esse resultado num char, haveráperda de informação:

� A soma de dois char pode gerar um problema se ambos forem muitopróximo do valor limite. Por exemplo: 100 + 100 = 200, que não cabenum char, já que este só permite armazenar valores de -128 à 127.

� O resultado da conta de um número inteiro com um ponto flutuante é umponto flutuante. Armazenar esse valor num outro número inteiro geraperda de informação.

OPERAÇÕES ARITMÉTICAS

� Existem cinco operadores aritméticos em C. Cada operador aritméticosestá relacionado ao uma operação aritmética elementar: adição,subtração, multiplicação e divisão. Existe ainda um operador (%)chamado operador de módulo cujo significado é o resto da divisãointeira. Os símbolos dos operadores aritméticos são:

OPERAÇÕES ARITMÉTICAS

A sintaxe de uma expressão aritmética é:

operando operador operando

onde operador é um dos caracteres mostrados acima e operando é uma constante ou um identificador de variável.

Exemplo: Algumas expressões aritméticas:

1+2 a-4.0 b*c valor_1/taxa num%2

OPERAÇÕES COM BITS

� NOT

� A operação NOT lógica retorna um se o valor for zero e 0 se o valor forum.

OPERAÇÕES COM BITS

� AND

� A operação AND lógica (operador &&) retorna 0 se algum dos valores for zero, e 1 se os dois valores forem diferentes de zero.

OPERAÇÕES COM BITS

� OR

� A operação OR lógica (operador ||) retorna 1 se algum dos valores for diferente de zero, e 0 se os dois valores forem zero.

FUNÇÃO MAIN()

� Todo sistema necessita de iniciar em algum lugar. Em geral, osmicrocontroladores, assim que ligados, procuram por suas instruções noprimeiro ou último endereço de memória, dependendo da arquiteturautilizada.

� A maneira de indicar o ponto de início de um programa depende docompilador. Em geral os compiladores alocam a função main() em algumlugar da memória onde haja espaço disponível. Depois disso dispõem deuma instrução de pulo para o primeiro endereço de memória, onde foialocada a função main.

� Outra coisa interessante é que para sistemas embarcados a funçãoprincipal não recebe nem retorna nada. Como ela é a primeira a serchamada não há como enviar algum valor por parâmetro. Ela tambémnão retorna nada pois ao término desta o sistema não está maisoperativo.

FUNÇÃO MAIN()

� Em geral sistemas embarcados são projetados para começarem afuncionar assim que ligados e apenas parar sua tarefa quandodesligados. Como todas as funcionalidades são chamadas dentro dafunção main() espera-se que o programa continue executando asinstruções dentro dela até ser desligado ou receber um comando paradesligar. Este comportamento pode ser obtido através de um loop infinito.Abaixo estão as duas alternativas mais utilizadas.