Você está na página 1de 15

Introdução a programação de

micro controladores PIC

“Olá mundo”
Programação em C utilizando
o Mplab C18 e PIC´s da
família 18F
Luis Rafael 2010
http://www.lingtronic.com
1
•Facilidade de Aquisição
•Baixo consumo
•Entradas e Saídas
•Conversor ADC
•Fácil Interligação com outros dispositivos
•Interrupções externas e internas

Microchip Technology

Luis Rafael 2010


http://www.lingtronic.com 2
•8 bits , 16 bits, mais recentemente 32
•Extensa variedade de modelos e periféricos internos
• Programação por Memória flash
•Podem ser programados em assembler, Pascal C Basic
•Compiladores geram um código em formato hexadecimal
•Gravados na memória de programa desses microcontroladores.
•Para tal procedimento, utiliza-se um hardware especial (gravador)
acoplado a um PC.
•PICs com memória FLASH são altamente flexíveis na fase de
desenvolvimento pois permitem uma rápida alteração do código de
programa.
•Como ferramentas de desenvolvimento, encontram-se disponíveis:
gravadores, depuradores, emuladores, placas de protótipos, etc.

Luis Rafael 2010


http://www.lingtronic.com 3
Microcontrolador – PIC

 Programar em C

#include <p18cxxx.h>

void main(void)
{
/* Coloca os registos a O e define o port B como saidas */
LATB = 0x00;
TRISB = 0x00;

/* Ligar um led B0 */
LATBbits.LATB0 = 1;
/* PORTDbits.RB0 =1 teria funcionado mas não é a maneira
correcta*/

while(1);
}
Luis Rafael 2010
http://www.lingtronic.com 4
Microcontrolador – PIC

 Programar em C
.
.
.
int i; ...
while(1)
{
LATBbits.LATB0 = 1;
/* Liga LED, B0 */
for ( i = 0; i < 32768; i++);
LATBbits.LATB0 = 1;
nop;
LATBbits.LATB0 = 1;
/* Desliga LED, B0 */
for ( i = 0; i < 32768; i++);
LATBbits.LATB0 = 0;
nop;
}

Luis Rafael 2010


http://www.lingtronic.com 5
Microcontrolador – PICc

 Tempos e Delays

Supondo a utilização de 10 MHz clock com 250


nanossegundos tempo de ciclo de instrucao.

São presisas 2,000,000 ciclos de intrusões para


ter um atraso de 500 milissegundos

Pode ser conseguido com a utilização da seguinte instrução


Delay10KTCYx 200;
Luis Rafael 2010
http://www.lingtronic.com 6
#include <p18cxxx.h>
#include <delays.h> /* Para utilizar as funcoes
de delay */

void main(void)
{
/* Config PORT D como saidas digitais */
LATD = 0x00;
TRISD = 0x00;

while(1)
{
/* Turn on LED, D1 */
LATDbits.LATD0 = 1;
/* Delay de 500 milissegundos */
Delay10KTCYx(200);
/* Turn off LED, D1 */
LATDbits.LATD0 = 0;
/* Delay de 500 milissegundos */
Delay10KTCYx(200);
Luis Rafael 2010
}
http://www.lingtronic.com } 7
Microcontrolador – Delays.h
Example Delay in
Function Functionality Provided Parameters
Usage Example

Delay one instruction Delay1TCY();


1 Instruction
Delay1TCY None
cycle. Same as Nop(). Cycle

100
Delay10TC Delay in multiples of 10 unsigned char Delay10TCYx(10); Instruction
Yx instruction cycles. (8 bit value)
Cycles
1,000
Delay100T Delay in multiples of 100 unsigned char Delay100TCYx(10); Instruction
CYx instruction cycles. (8 bit value)
Cycles
10,000
Delay1KTC Delay in multiples of unsigned char Delay1KTCYx(10); Instruction
Yx 1,000 instruction cycles. (8 bit value)
Cycles
Delay in multiples of 100,000
Delay10KT unsigned char Delay10TCYx(10);
10,000 instruction Instruction
CYx (8 bit value)
cycles. Cycles

Luis Rafael 2010


http://www.lingtronic.com 8
 #define LED0 LATDbits.LAT0
 #define ON 1
 #define OFF 0
#include <p18cxxx.h>
#include <delays.h> /* This is needed for the delay functions */

/* Define LED0 as LATDbits.LAT0 */


#define LED0 LATDbits.LAT0

void main(void)
{
/* Set PORT D as digital outputs */
LATD = 0x00;
TRISD = 0x00;

/* Loop forever */
while(1)
{
/* Turn on LED, D1 */
LED0 = 1;
Luis Rafael 2010
http://www.lingtronic.com 9
MPLAB

Luis Rafael 2010


http://www.lingtronic.com 10
MPLAB

Luis Rafael 2010


http://www.lingtronic.com 11
MPLAB

Luis Rafael 2010


http://www.lingtronic.com 12
MPLAB

Ficheiros a Adicionar
•Ficheiro com o código fonte
na pasta source files
•Ficheiro de configuração e
outras bibliotecas na pasta
header files
•Ficheiro .Lib do
microcontrolador a utilizar
na pasta Library Files
•Ficheiro *.lkr do
microcontrolador a utilizar
Luis Rafael 2010
http://www.lingtronic.com 13
Configuration Bits

#pragma config OSC = HS /* Sets the oscillator mode to HS */


#pragma config WDT = OFF /* Turns the watchdog timer off */
#pragma config LVP = OFF /* Turns low voltage programming off */
#pragma config DEBUG = OFF /* Compiles without extra debug code */
Luis Rafael 2010
http://www.lingtronic.com 14
Fim

Luis Rafael 2010

http://www.lingtronic.com
15

Você também pode gostar