Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação C para PIC Guilherme Luiz Moritz1 1 DAELT - Universidade Tecnológica Federal do Paraná 7 de maio de 2014 Moritz, G.L. Programação C para PIC Motivação Porque programar microcontroladores em C? Moritz, G.L. Programação C para PIC Vantagens do C Linguagem estruturada→ modularização Muito próxima da máquina→ nível médio Manipulação direta de recursos do microprocessador Moritz, G.L. Programação C para PIC Programando um Microcontrolador Moritz, G.L. Programação C para PIC Compiladores C para PIC C18→ www.microchip.com.br HI-TECH→ www.htsoft.com CCS→ www.ccsinfo.com IAR→ www.iar.com MikroC→ www.mikroe.com Moritz, G.L. Programação C para PIC Revisão Revisão de C com foco em Microcontroladores Moritz, G.L. Programação C para PIC Etapas de um programa em C Moritz, G.L. Programação C para PIC Estrutura de um programa em C As palavras reservadas do MikroC são case insensitive, enquanto o C é case sensitive Moritz, G.L. Programação C para PIC Representações numéricas em C int contador; contador = 123; //decimal contador = 0b1111011; //binário contador = 0x7B; //hexadecimal contador = 0173; //octal unsigned char texto[18] = "Guilherme - ET76H"; //string char chr = ’G’; //modo char Moritz, G.L. Programação C para PIC Tipos de Dados Atentar para o fato de cada arquitetura apresentar tamanhos diferentes! Moritz, G.L. Programação C para PIC Operadores em C Moritz, G.L. Programação C para PIC Controle de Fluxo char valor = PORTA; //a variável valor recebe o valor de PORTA if(valor == 0xAA) //Se o valor lido for 0xAA { PORTB.B0 = 1; //Executa se Verdadeiro } else { PORTB.B0 = 0; // Executa se Falso } Moritz, G.L. Programação C para PIC Controle de Fluxo char chr = PORTA; switch(chr) { case ’A’: { PORTB.B0 = 1; break; } case ’B’: { PORTB.B1 = 1; break; } default: { PORTB.B2 = 1; } } Moritz, G.L. Programação C para PIC Controle de Fluxo while(1) //loop infinito { PORTB.B1 = 1; //RB.1 aceso delay_ms(1000); //aguarda 1s PORTB.B1 = 0; //RB.1 apagado } do { PORTB.B1 = 1; //RB.1 aceso delay_ms(1000); //aguarda 1s PORTB.B1 = 0; //RB.1 apagado }(while PORTB.P0 == 0); //loop condicional Moritz, G.L. Programação C para PIC Controle de Fluxo char fonte[8] = "bolotas"; char destino[8]; for(int i=0;i<8;i++) { PORTB = fonte[i]; while(PORTA.B0==1); } Moritz, G.L. Programação C para PIC Matrizes, Arrays e Funções char calendar[12] = {31, 28, 31, 30,31,30,31,30,31,31,30,31,30,31}; int valores[12]; int matriz[3][2]; char msg[]="Microcontroladores - UTFPR"; char in[255]; Funções: tipo_de_retorno nome_da_funcao (tipo argumento1, tipo argumento2,...) { (comandos) return ...; } Moritz, G.L. Programação C para PIC Assembly inline Porque usar assembly inline? char valor = 100; asm { LOOP bsf PORTB,0 //set pino RB0, ou seja = 1 nop bcf PORTB,0 //reset pino RB0, ou seja = 0 ... } Moritz, G.L. Programação C para PIC Libraries do MikroC http://www.mikroe.com/mikroc/pic/libraries/ Moritz, G.L. Programação C para PIC Programação C Introdução ao C Revisão de C com foco em Microcontroladores
Compartilhar