pic - programaÇÃoeducatec.eng.br/engenharia/eletiva i - microprocessadores e... · pic -...

43
PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR [email protected] UBERABA – MG 1º SEMESTRE – 2009

Upload: lamque

Post on 06-Feb-2018

238 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

PIC - PROGRAMAÇÃOLINGUAGEM C

AUTOR: ENG. ANTONIO CARLOS LEMOS JÚ[email protected]

UBERABA – MG1º SEMESTRE – 2009

Page 2: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FLUXOGRAMAS

Page 3: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FLUXOGRAMAS

Fluxograma para somar dois números e guardar em uma terceira variável

Page 4: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FLUXOGRAMASFluxograma para contar de 0 a 10

Page 5: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

VARIÁVEIS E DADOS

Variáveis são classificadas segundo tipo de conteúdo em: numéricas, caractere, alfanuméricas e lógicas.

Numéricas: inteiras, reais ou ponto flutuante.

Caracteres: são utilizadas para representar um caractere, utilizando para isso um código especial (ASCII). Ex.: Frases ou textos.

Page 6: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

VARIÁVEIS E DADOS

Alfanuméricas: utilizadas para armazenar tanto caracteres quanto valores numéricos. Um de cada vez.

Lógicos: capazes de armazenar um estado lógico: verdadeiro ou falso.

Page 7: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORES

Matemáticos: adição, subtração, etc.

Relacionais: maior, menor, igual.

Lógicos: função E, função OU, função Não

Lógicos bit a bit: função E, função OU, função Não

Memória: atribuição =, & e *.

Page 8: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

INTRODUÇÃO À LINGUAGEM C#include <16f628.h>#use delay(clock=4000000)#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOLVP,NOMCLR

void main(){

while (TRUE){int tempo;tempo=100;output_high(PIN_B0);delay_ms(tempo);output_low(PIN_B0);delay_ms(tempo);}

}

Page 9: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

PALAVRAS RESERVADAS

Page 10: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

IDENTIFICADORES

Page 11: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

VARIÁVEIS E TIPOS DE DADOS

Page 12: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

MODIFICADORES DE TIPO

Um tipo de dados signed int:-128 a +127

Um tipo de dados unsigned int:0 à 255

Um variável do tipo short int:Apenas um bit

Page 13: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

MODIFICADORES DE TIPOUm tipo de dados long int:

Terá 16 bits: 65536

Page 14: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÃO DE VARIÁVEIS#include <16f877.h>#use delay(clock=4000000)#fuses

HS,NOWDT,PUT,NOBROWNOUT,NOMCLR,NOLVP#use rs232(baud=19200, xmit=PIN_B2,rcv=PIN_B1)int somatorio; // variável global

void soma (int valor){int conta; // variável local}void main(){int conta; // variável localsomatorio = 0;}

Page 15: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

CONSTANTES

const val1 = 10const val2 = -5const val3 = 55.12const val4 = 'a'const val5 = “teste”

Page 16: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

CONSTANTES: binárias, hexadecimais e octais

Page 17: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORESAtribuição:

x = 10;y = x;

Aritméticos:

Page 18: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORESRelacionais:

Page 19: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORESLógicas booleanos:

int x,y;x=10if (x>5 && x<20)y=x;

int teste, teste_2;teste = 0;teste_2 = 0;if (!teste) teste_2++;

Page 20: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORESLógicas bit a bit:

Page 21: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORESLógicas bit a bit:

Operador ~ (not)

Page 22: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORES

Operadores de deslocamento:

<< e >>

Valor >> número de bits a deslocar à direita Valor << número de bits a deslocar à esquerda

int x,y,z;x = 10;y = x << 2;z = x >>1;

Page 23: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORES

Memória

& Endereço do operando* Conteúdo do endereço apontado pelo operando

Operador &endereco_a = &a

Operador *a = *endereco_a

Page 24: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

OPERADORES

Operador ?

Variável = Expressão ? Expressão 2: Expressão 3

int x,y;x = 5;y = x == 7 ? 10:x+3;

Page 25: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

ASSOCIAÇÃO DE OPERADORES

Page 26: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

ASSOCIAÇÃO DE OPERADORESProcedência:

Page 27: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

Comando if, while e for:

if:

if (condição){comando A1;comando A2;}

else{comando B1;comando B2;}

Page 28: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

# cabeçalho

int x;

void main(){setup_adc_ports (no_analogs);while (TRUE)

{x=input_a();output_port_b(0);if (!x)

output_high(pin_b0);else if (x == 1)

output_high(pin_b1)}

}

Page 29: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

Switch:

switch (variável){case constante1:

comando A; break;

case constante2: comando B break;

default: comando z;}

Page 30: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

# cabeçalho

void main(){setup_adc_ports (no_analogs);while (TRUE)

{output_port_b(0);switch (input_a())

{case 0: output_high(pin_b0); break;case 1: output_high(pin_b1); break;case 2: output_high(pin_b2); break;default: output_high(pin_b4);}

}}

Page 31: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

For:

for (inicialização ; condição ; incremento){//bloco de comandos;comando 1;comando 2;}

Page 32: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

While:

while (condição){//bloco de comandos;comando 1;comando 2;}

Page 33: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

DECLARAÇÕES DE CONTROLE

Do - While:

do{//bloco de comandos;comando 1;comando 2;}while(TRUE);

Page 34: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

TIPOS E DADOS AVANÇADOS

Matrizes de dados:

tipo de dado nome_matriz [tamanho]

int nota [40];char nome [20];long outra [5];

int nota[5] = {0,0,0,0,0};int nota[5] = {4,9,2,3,7};

Page 35: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

MATRIZES MULTIDIMENSIONAIS

Matrizes de dados:

tipo de dado nome_matriz [linhas][colunas]

int tabela[2][5];

tabela[2][5]={0,0,0,0,0,0,0,0,0,0}

Page 36: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

MATRIZES MULTIDIMENSIONAIS

Strings de caracteres:

char teste [10];char teste2 [13] = {“Testando ...”};char teste3 [] = {“Outro teste”} ;char teste4 [4][15] = {“Domingo”,”Segunda”,”Terça”,”Quarta”};

Page 37: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

ESTRUTURAS DE DADOS

Uma estrutura é um agrupamento de variáveis individuais, referenciadas por um nome comum.

struct NOME{tipo VARIÁVEL;tipo VARIÁVEL;};

Page 38: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

ESTRUTURAS DE DADOS

struct tempo{int horas;int minutos;int segundos;};

struct tempo horario;

Acessando as variáveis:

horario.horas = 0;

Page 39: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FUNÇÕES

{tipo da função} nome_da_função ({parâmetros}){//bloco de comandoscomando 1;comando 2;};

int quadrado(int a) {return a*a;}

Page 40: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FUNÇÕES#include <16f628.h>#use delay(clock=4000000)#fuses INTRC_IO,NOWDT,PUT,NOBROWNOUT,NOMCLR#use rs232(baud=19200,parity=N,xmit=PIN_B2,rcv=PIN_B1)

float divide(float a, float b){if (!b)

return 0;a/=b;return a;

}

void main(){float a,b,c;a = 7;b = 3;c = divide(a,b);printf(“a = %f, b = %f, c = %f”, a,b,c);}

Page 41: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FUNÇÕES

void soma (int matriz[20], int valor){int conta;for (conta=0 ; conta<20 ; conta++)

{matriz[conta] += valor;}

}

void main(){int valores[20];soma(valores, 1);}

Page 42: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FUNÇÕES

#include <16f628.h>#use delay <clock=4000000>#fuses INTRC_IO,NOWDT,PUT,NOBROWNOUT,NOMCLR,NOLVP

void muda_pino(int pino){

output_bit(pino,!input(pino));}

void main(){

muda_pino(pin_b3);}

Page 43: PIC - PROGRAMAÇÃOeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · PIC - PROGRAMAÇÃO LINGUAGEM C AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR ... struct tempo horario;

FUNÇÕES

int soma(int a, int b){#asm

movf a,waddwf b,wmovwf _RETURN_

#endasm}

void main(){int a,b;a = 7;b = 3;a = soma(a,b);}