Anda di halaman 1dari 31

Aula 07

Reviso: Linguagem C Reviso: Linguagem C


(Parte I)
Microcontroladores Microcontroladores PIC18 PIC18
Prof. talo Jder Loiola Batista Prof. talo Jder Loiola Batista
Universidade de Fortaleza
Centro de Cincias Tecnolgicas
E-mail: italoloiola@unifor.br
Julho /2011
Aula 07
Reviso: Linguagem C - Reviso Reviso: Linguagem C - Reviso
(Parte I)
PIC18 PIC18 Programao em C Programao em C
Prof. talo Jder Loiola Batista Prof. talo Jder Loiola Batista
Universidade de Fortaleza - UNIFOR
Centro de Cincias Tecnolgicas - CCT
italoloiola@unifor.br
Julho /2011
Linguagem
Linguagem que pode ser utilizada
programao de quase todos
H microcontroladores com
programao em C;
O compilador transforma as
em assembly; em assembly;
Linguagem C
utilizada atualmente na
os microcontroladores;
instrues otimizadas para
instrues em C no cdigo
AA
Linguagem
Linguagem que pode ser utilizada
programao de quase todos
H microcontroladores com
programao em C;
O compilador transforma as
em assembly; em assembly;
Linguagem C
utilizada atualmente na
os microcontroladores;
instrues otimizadas para
instrues em C no cdigo
AA
Linguagem
Um programa em C constituido
dos seguintes elementos:
i. Variveis i. Variveis
ii. Operadores
iii. Comando de controle
iv. Funes
O comando #include uma diretiva
#include <18f4520.h> #include <18f4520.h>
Servir para informar o pr-processador
ser inserido o cdigo fonte que
arquivo denominado 18f4520.h.
Linguagem C
constituido por um ou mais
diretiva do compilador:
#include <18f4520.h> #include <18f4520.h>
processador em que deve
se encontra no
18f4520.h.
Linguagem
Arquivos como 18f4520.h
arquivos header ou cabealho
chamados de Bibliotecas e contm
definidas, utilizadas nos programas
chamados de Bibliotecas e contm
definidas, utilizadas nos programas
Outros tipos de arquivos .h:
Funes matemticas
#include <math.h>
Funes padro
#include<stdlib.h>
Funes de entrada e sada
#include <stdio.h>
Funes de texto
#include<string.h>
Funes do sistema
#include<system.h>
Funes matemticas
#include <math.h>
Linguagem C
h so chamados de
cabealho. Tambm
contm funes pr-
programas.
contm funes pr-
programas.
Funes matemticas
Funes padro
Funes de entrada e sada
Funes de texto
Funes do sistema
Funes matemticas
Linguagem
Aprimeira funo a ser executada
void main()
{
}
ela no recebe e no retorna nenhum
Comentrios: Comentrios:
// comentrio em uma
/* comentrio em mais
uma linha */
Linguagem C
executada :
nenhum parmetro
linha
mais de
AA
Linguagem
H uma biblioteca para cada
especifica os registradores especiais
Para carregar um valor em um
colocar o nome dele:
trisb = 0;
status = 0x0f;
portc = 255; portc = 255;
No necessrio especificar
Linguagem C
cada microcontrolador que
especiais (SFR)
um registrador, basta
0x0f;
255; 255;
especificar o banco do registrador!
AA
Linguagem
Para carregar um valor em um
nome do registrador e o endereo
ou o nome do bit, se for conhecido: ou o nome do bit, se for conhecido:
portb.rb0
status.c =
status.f0
Ou, pode apenas colocar o nome
termo <_bit>:
rb3_bit = rb3_bit =
c_bit =
trisb2 bit
t0ie_bit =
Linguagem C
um bit, deve-se colocar o
endereo do bit (f0, f1, f2...)
conhecido: conhecido:
= 1;
= 0;
= 0;
nome do bit, seguido do
= 1; = 1;
0;
AA
bit = 0;
= 1;
Linguagem
Representao numrica:
portb = 255; // decimal portb = 255; // decimal
portb = 0xff; // hexadecimal
portb = 0377; // octal
portb = 0b11111111; //
Linguagem C
decimal decimal
hexadecimal
octal
// binrio
AA
Linguagem
Variveis:
Tipo
char
int
float
void
Tamanhoembytes
1
2
4
0
No h distino entre variveis
mas as funes devem ser em letra
Linguagem C
Tamanhoembytes Intervalo
0 a 255
0 a 65535
-1.5E-45 a 3.4E+38
Nenhum valor
variveis com letra maiscula ou minscula,
letra minscula (void, if, while, for).
AA
Linguagem
Modificadores de tipo:
Tipo
(unsigned) char
Tamanhoembytes
1 (unsigned) char
signed char
(signed) short (int)
unsigned short (int)
(signed) int
unsigned int
(signed) long int
1
1
1
1
2
2
4
unsigned long int
float
double
4
4
4
long double
void
4
0
Linguagem C
Tamanhoembytes Intervalo
0 a 255 0 a 255
-128 a +127
-128 a +127
0 a 255
-32768 a +32767
0 a 65535
-2.15E+9 a +2.15E+9
0 a 4.3E+9
-1.5E-38 a +3.4E+38
-1.5E-38 a +3.4E+38
AA
-1.5E-38 a +3.4E+38
nenhum
Linguagem
Declarao de variveis em endereo
char absolute char i absolute
Declarao de flags:
boolean flagteste boolean flagteste
Linguagem C
endereo especfico:
absolute absolute 0x20
flagteste flagteste
AA
Linguagem
Operadores aritmticos:
Operador Ao Operador
+
-
*
/
%
++
--
Ao
Soma
Subtrao
Multiplicao
Diviso
Resto
Incremento
Decremento -- Decremento
Linguagem C
Ao Ao
Soma
Subtrao
Multiplicao
Diviso
Resto da diviso inteira
Incremento
Decremento Decremento
AA
Linguagem
Operadores bit a bit:
Operador Ao Operador
&
|
^
~
>>
<<
Ao
AND
OR
XOR
Complemento
Deslocamento
Deslocamento
Linguagem C
Ao Ao
AND
XOR
Complemento
Deslocamento direita
Deslocamento esquerda
AA
Linguagem
Operadores relacionais:
Operador Ao Operador
==
>
<
!=
>=
<=
Ao
Igual
Maior
Menor
Diferente
Maior
Menor
Linguagem C
Ao Ao
Igual a
Maior que
Menor que
Diferente de
Maior ou igual a
Menor ou igual a
AA
Linguagem
Operadores relacionais booleanos:
Operador
&&
||
!
Ao
E
OU
NOT
Linguagem C
booleanos:
Ao
OU
NOT
AA
Estrutura condicional simples
Comando if
if (condio)
comando;
if (condio) {
comando1;
comando2;
comando3;
}}
Estrutura condicional simples
if (a<menor)
menor=a;
if (a<menor) {
menor=a;
printf (menor);
}
17
em pseudo-cdigo:
se (a<menor) entao menor=a;
Estrutura condicional composta
Comando if...else
if (condio)
comando;
else
Executa o comando se a condio for
qualquer coisa diferente de zero!
else
comando;
if (condio) {
comando1;
comando2;
} else {
comando3;
if (peso= =
printf
else
printf
em pseudo
comando3;
comando4;
}
em pseudo
se (peso= =
entao
senao
Estrutura condicional composta
Executa o comando se a condio for
qualquer coisa diferente de zero!
(peso= =peso_ideal)
printf (Vc est em forma!);
else
printf (Necessrio fazer dieta!);
em pseudo-cdigo:
18
em pseudo-cdigo:
se (peso= =peso_ideal)
entao exibir Vc est em forma!
senao exibir Necessrio fazer dieta!
Estrutura condicional composta
Comando SWITCH
switch (x)
{{
case const1: comando1;
break
case const2: comando2;
break
case const3: comando3;
break
case const4: comando4;
break
defualt: break;
}
Estrutura condicional composta
case const1: comando1;
break;
case const2: comando2;
break;
case const3: comando3;
break;
19
case const4: comando4;
break;
Estrutura de repetio
Comando for
for (var=valor inicial; condio; incremento)
comando;
for (var=valor inicial; condio; incremento)
{
comando1;
comando2
comando3;
Exemplo:
for (
comando3;
}
Pseudo
Estrutura de repetio
for (var=valor inicial; condio; incremento)
for (var=valor inicial; condio; incremento)
Exemplo:
for (cont=3; cont<=11; cont++)
printf (%d;cont)
20
Pseudo-cdigo:
Para CONT = 3 at 11 repetir
Mostrar (CONT)
Estrutura de repetio
Comando while
while (condio)
comando;
while (condio) {
comando1;
comando2
comando3;
Pseudo
MAIOR = 0
N = 1
comando3;
}
N = 1
Enquanto
Mostrar MAIOR
Estrutura de repetio
Exemplo:
while (N != 0) {
Pseudo-cdigo:
MAIOR = 0
N = 1
while (N != 0) {
scanf ("%d",&N);
if (N > MAIOR) MAIOR = N;
}
21
N = 1
Enquanto (N <> 0) repetir
Ler N
Se (N > MAIOR) ento MAIOR = N
Mostrar MAIOR
Linguagem
Funes
O formato geral (ANSI) de uma funo
{tipo da funo} teste_funo ({parmetros})
{
//bloco de comandos
comando1;
comando2;
...
}
Linguagem C
funo :
({parmetros})
AA
Linguagem
Funes:
- Passagem de Parmetros:
- Por valor;
- Por Referncia.
- Retorno de Valores
- Pelo termino da execuo
- Pela execuo da declarao
Linguagem C
execuo da funo;
declarao return.
AA
Linguagem
Ponteiros:
endereco_de_teste = &teste;
-A varivel endereco_de_teste recebe
variavel teste.
*endereco_teste = 10
-O contedo da varivel teste ser
-Declarao de variveis tipo ponteiro
tipo *nome_da_varivel
Linguagem C
recebe o endereo na memria da
ser agora igual a 10.
ponteiro:
AA
Linguagem
Ponteiros:
int *endereo _de_teste;
int teste;
teste = 255;
endereco_de_teste = &teste;
*endereco_teste = 10;
Linguagem C
AA
Linguagem
Matrizes de Dados:
tipo de dado nome_da_matriz [ tamanho
int nota [40];
char nome [20];
float outra [5];
Representao Grfica:
Linguagem C
tamanho ]
AA
Linguagem
Matrizes de Dados:
Inicializao de Matrizes:
tipo de dado nome_da_matriz [ tamanho
int nota [5] = { 0,0,0,0,0};
int nota [5] = {4,9,7,3,6};
int teste[] = {6,7,8,9,4,5,6,7,8,9,2,3};
static int nota [5];
nota =1 ou x = &nota[0]; //refere
primeiro elemento da matriz.
Linguagem C
tamanho ] = {lista de valores};
[] = {6,7,8,9,4,5,6,7,8,9,2,3};
refere-se a um ponteiro para o
AA
Linguagem
Matrizes de Dados:
Matrizes multidimensionais:
tipo de dado nome_da_matriz [linhas
int tabela [2] [5];
Inicializao: Inicializao:
Linguagem C
linhas] [colunas]
AA
Linguagem
Matrizes de Dados:
Inicializao:
Por ponteiro:
Linguagem C
AA
Linguagem
Strings de Caracteres:
Linguagem C
AA
Exemplo de programa programa em C
AA