pic18f ola mundo
-
Upload
luis-rafael -
Category
Documents
-
view
518 -
download
5
description
Transcript of pic18f ola mundo
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
1
Luis Rafael 2010
http://www.lingtronic.com
•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
2
Luis Rafael 2010
http://www.lingtronic.com
•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.
3
Luis Rafael 2010
http://www.lingtronic.com
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);
}
Microcontrolador – PIC
4
Luis Rafael 2010
http://www.lingtronic.com
Programar em C
.
.
.
while(1)
{
/* Liga LED, B0 */
LATBbits.LATB0 = 1;
/* Desliga LED, B0 */
LATBbits.LATB0 = 0;
}
int i; ...
LATBbits.LATB0 = 1;
for ( i = 0; i < 32768; i++);
nop;
LATBbits.LATB0 = 1;
for ( i = 0; i < 32768; i++);
nop;
Microcontrolador – PIC
5
Luis Rafael 2010
http://www.lingtronic.com
Tempos e Delays
Supondo a utilização de 10 MHz clock com 250
nanossegundos tempo de ciclo de instrucao.
Pode ser conseguido com a utilização da seguinte instrução
Delay10KTCYx 200;
São presisas 2,000,000 ciclos de intrusões para
ter um atraso de 500 milissegundos
Microcontrolador – PICc
6
Luis Rafael 2010
http://www.lingtronic.com
#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);
}
} 7
Luis Rafael 2010
http://www.lingtronic.com
Function Functionality Provided Parameters Example
Usage
Delay in
Example
Delay1TCY Delay one instruction
cycle. Same as Nop(). None Delay1TCY();
1 Instruction
Cycle
Delay10TC
Yx
Delay in multiples of 10
instruction cycles.
unsigned char
(8 bit value) Delay10TCYx(10);
100
Instruction
Cycles
Delay100T
CYx
Delay in multiples of 100
instruction cycles.
unsigned char
(8 bit value) Delay100TCYx(10);
1,000
Instruction
Cycles
Delay1KTC
Yx
Delay in multiples of
1,000 instruction cycles.
unsigned char
(8 bit value) Delay1KTCYx(10);
10,000
Instruction
Cycles
Delay10KT
CYx
Delay in multiples of
10,000 instruction
cycles.
unsigned char
(8 bit value) Delay10TCYx(10);
100,000
Instruction
Cycles
Microcontrolador – Delays.h
8
Luis Rafael 2010
http://www.lingtronic.com
#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;
9
Luis Rafael 2010
http://www.lingtronic.com
MPLAB
10
Luis Rafael 2010
http://www.lingtronic.com
MPLAB
11
Luis Rafael 2010
http://www.lingtronic.com
MPLAB
12
Luis Rafael 2010
http://www.lingtronic.com
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
13
Luis Rafael 2010
http://www.lingtronic.com
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 */
14
Luis Rafael 2010
http://www.lingtronic.com
Fim
15
Luis Rafael 2010
http://www.lingtronic.com