Apresentação curso pic básico fbs eletrônica

165
Linguagem C Aplicações baseadas no KIT PIC Básico 28P

Transcript of Apresentação curso pic básico fbs eletrônica

Page 1: Apresentação   curso pic básico fbs eletrônica

Linguagem C

Aplicações baseadas no KIT PIC Básico 28P

Page 2: Apresentação   curso pic básico fbs eletrônica

Estrutura básica de um microcontrolador; O PIC16F883; MPLAB IDE; Linguagem C; Manipulação de I/O; Timers; Interrupções; Conversor A/D; Comunicação Serial; Manipulação de memória EEPROM; Projeto.

Page 3: Apresentação   curso pic básico fbs eletrônica

Sistema Decimal◦ Composto por algarismos de 0 a 9 (base 10)

Para representar uma quantidade por exemplo:

764d = 7*102 + 6*101+ 4*100

= 700 + 60+ 4

= 764

Page 4: Apresentação   curso pic básico fbs eletrônica

Sistema Binário◦ Composto pelo algarismos 0 e 1(base 2).

Para representar uma quantidade utiliza estes dois algarismos, por exemplo:

10101011b = 1*27 + 0*26 +1*25 +0*24 +1*23+0*22 + 1*21 + 1*20

= 128 + 0 + 32 + 0 +8 + 0 + 2 + 1

= 171(base 10)

Page 5: Apresentação   curso pic básico fbs eletrônica

Sistema Hexadecimal◦ Composto por 16 algarismos (base 16) de 0 a F, ou

seja:

◦ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

Para representar uma quantidade em hexadecimal:

5DCh = 5*162 + D*161 +C*160 0

= 5*256+ 13*16 +12

= 1500 (base 10)

Page 6: Apresentação   curso pic básico fbs eletrônica
Page 7: Apresentação   curso pic básico fbs eletrônica

Bit: 0 ou 1;

Nibble: 4bits;

Byte : 8 bits;

Word: 16 bits.

Page 8: Apresentação   curso pic básico fbs eletrônica

AND ou ‘E’:

Page 9: Apresentação   curso pic básico fbs eletrônica

OR ou ‘OU’:

Page 10: Apresentação   curso pic básico fbs eletrônica

NOT ou ‘Não’:

Page 11: Apresentação   curso pic básico fbs eletrônica

XOR ou ‘OU-EXCLUSIVO’:

Page 12: Apresentação   curso pic básico fbs eletrônica

Basicamente, um microcontrolador é constituído de quatro partes:

◦ Memória de programa;

◦ Memória de dados;

◦ Unidade lógica Aritmética (ULA);

◦ Portas de I/O (Entrada e Saída);

Page 13: Apresentação   curso pic básico fbs eletrônica
Page 14: Apresentação   curso pic básico fbs eletrônica

Von-Neumann

Page 15: Apresentação   curso pic básico fbs eletrônica

Harvard

Page 16: Apresentação   curso pic básico fbs eletrônica
Page 17: Apresentação   curso pic básico fbs eletrônica

O PIC16F883 apresenta a seguintes características:

• 28 pinos sendo 24 para I/O;• Freqüência máxima de operação: 20 MHz;• Memória de programa: 4 Kwords;• Memória de dados: 256 bytes;• Memória EEPROM: 256 bytes;• Numero de Interrupções: 15;• 3 Timers (2 X 8 bits, 1 X 16 bits);• Comunicação serial: I2C, SPI, EUSART;• 11 canais analógicos de 10 bits;• 2 comparadores analógicos;• 2 módulos CCP(capture, compare e PWM);• 35 instruções.

Page 18: Apresentação   curso pic básico fbs eletrônica
Page 19: Apresentação   curso pic básico fbs eletrônica
Page 20: Apresentação   curso pic básico fbs eletrônica
Page 21: Apresentação   curso pic básico fbs eletrônica
Page 22: Apresentação   curso pic básico fbs eletrônica

Freqüência do oscilador principal dividida por 4;

Exemplo:fosc = 4MHz

ciclo de máquina = fosc /4 = 4Mhz / 4 = 1Mhz

tciclo = 1/1Mhz = 1µs

Page 23: Apresentação   curso pic básico fbs eletrônica
Page 24: Apresentação   curso pic básico fbs eletrônica

Os microcontroladores PIC possuem alguns modos de osciladores disponíveis para operação.

Tipos de osciladores:RC - RC externo;INTOSC - RC interno;EC - fonte clock externa;HS - cristal/ressonador de alta frequência (acima de 4MHZ);XT - cristal/ressonador de média frequência;LP - cristal/ressonador de baixa frequência(32 KHz)

Page 25: Apresentação   curso pic básico fbs eletrônica

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

CEXT

REXT

Page 26: Apresentação   curso pic básico fbs eletrônica

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

XTAL

C1

C2

Page 27: Apresentação   curso pic básico fbs eletrônica

São divididas em 3 tipos:

ROM –> Memória de Programa

RAM -> Memória de Dados

EEPROM -> Memória de Armazenamento

Page 28: Apresentação   curso pic básico fbs eletrônica

Memória do tipo FLASH;

Dividida em duas páginas;

Vetor de reset;

Vetor de interrupção;

Page 29: Apresentação   curso pic básico fbs eletrônica
Page 30: Apresentação   curso pic básico fbs eletrônica

Memória do tipo RAM;

Classificada em registradores de uso geral e de uso específico;

Dividida em bancos;

Page 31: Apresentação   curso pic básico fbs eletrônica
Page 32: Apresentação   curso pic básico fbs eletrônica
Page 33: Apresentação   curso pic básico fbs eletrônica

Memória não volátil;

Usada para armazenar valores que não podem ser perdidos;

Escrita e apagada eletricamente;

256 bytes;

Page 34: Apresentação   curso pic básico fbs eletrônica

Reset externo;

Quando aplicado nível baixo ocorre o reinicio do programa;

Pino 1 – RE3/MCLR

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

R110K

Page 35: Apresentação   curso pic básico fbs eletrônica

Cão de guarda;

Contador de 8 bits;

Utilizado para verificar se o programa travou;

Reinicia(RESET) o microcontrolador quando ocorreoverflow da contagem;

Seu valor deve ser reiniciado durando o fluxo doprograma;

Page 36: Apresentação   curso pic básico fbs eletrônica

Detecta baixa tensão de alimentação;

Tensões configuráveis : 4 V ou 2.1 V;

Caso tensão caia abaixo do valor configurado, ocorrerá um reset no software;

Page 37: Apresentação   curso pic básico fbs eletrônica

Circuito interno que retarda o inicio da execução do programa;

Garante estabilização da tensão de alimentação;

Tempo: cerca 64ms após o pino MCLR ser colocado em nível alto;

Page 38: Apresentação   curso pic básico fbs eletrônica
Page 39: Apresentação   curso pic básico fbs eletrônica
Page 40: Apresentação   curso pic básico fbs eletrônica
Page 41: Apresentação   curso pic básico fbs eletrônica
Page 42: Apresentação   curso pic básico fbs eletrônica
Page 43: Apresentação   curso pic básico fbs eletrônica
Page 44: Apresentação   curso pic básico fbs eletrônica
Page 45: Apresentação   curso pic básico fbs eletrônica
Page 46: Apresentação   curso pic básico fbs eletrônica
Page 47: Apresentação   curso pic básico fbs eletrônica

Criar projeto, inserir código fonte, compilar e gravar no KIT.

Page 48: Apresentação   curso pic básico fbs eletrônica
Page 49: Apresentação   curso pic básico fbs eletrônica

Características:

◦ Estruturada;

◦ Alto nível (comparada ao Assembly);

◦ Facilidade de acesso ao hardware;

◦ Portabilidade;

◦ Curva de aprendizagem reduzida;

◦ Reutilização de código;

Page 50: Apresentação   curso pic básico fbs eletrônica

São Utilizados para:◦ Documentação do software;◦ Exclusão de linhas durante a compilação.

Comentários de linha simples:

//este é um comentário de linha simples

Comentários de Múltiplas linhas:

/*

este é um

comentário de

múltiplas linhas

*/

Page 51: Apresentação   curso pic básico fbs eletrônica

Nomes dados a variáveis, funções ou outros elementos;

São compostos por caracteres alfanuméricos ou numéricos;

Somente podem ser iniciados por uma letra ou ‘_’, nunca por número;

Podem possuir até 32 caracteres;

Exemplo:◦ temperatura;

◦ _tempo1;

◦ velocidade_angular;

Page 52: Apresentação   curso pic básico fbs eletrônica

Não podem ser utilizadas como identificadores

auto break case char const

continue default do double else

enum extern float for goto

if int long register return

struct switch typedef union unsigned

void volatile while

Page 53: Apresentação   curso pic básico fbs eletrônica

Tipo Tamanho em bits Intervalo

char 8 0 a 255

int 8 0 a 255

float 32 -1.5 x 1045 to 3.4 x 1038

void 0 Nenhum valor

Page 54: Apresentação   curso pic básico fbs eletrônica

signed◦ signed int variavel_x;

unsigned◦ unsigned int variavel_x

short◦ short int flag_x;

long◦ long int variavel_x;

Page 55: Apresentação   curso pic básico fbs eletrônica

int1: especifica valores de 1 bit (equivale ao short int);

boolean: especifica valores de 1 bit (equivale ao short int e int1);

int8: especifica valores de 8 bits (equivale ao tipo int padrão);

byte: especifica valores de 8 bits ( equivale ao int e ao int8);

int16: especifica valores de 16 bits ( equivale ao long int);

int32: especifica valores de 32 bits.

Page 56: Apresentação   curso pic básico fbs eletrônica

Bases:◦ Binária;◦ Octal ;◦ Decimal;◦ Hexadecimal:

Exemplo: Representação do numero 50 nas diferentes bases:◦ 50 - Decimal◦ 0x32- Hexadecimal◦ 0b00110010 - Binário◦ 062- Octal

Page 57: Apresentação   curso pic básico fbs eletrônica

Declaração:◦ const int valor1 = 100;

◦ #define valor1 100

São declaradas no inicio do programa, fora de qualquer função.

Page 58: Apresentação   curso pic básico fbs eletrônica

Declaração:◦ tipo nome_da_variável;

◦ tipo nome_da_variável = valor_da_variável;

Exemplo: declarar a variável chamada temperatura, sendo de 8 bits não sinalizada:

unsigned int temperatura;

Ou apenas:

int temperatura;

Iniciando variáveis do mesmo tipo em linha única:

int temp1, temp2, temp3;

ou

int temp1=10, temp2 = 20, temp3 = 30;

Page 59: Apresentação   curso pic básico fbs eletrônica

São declaradas dentro do corpo de funções ou blocos de código;

Disponíveis apenas dentro do bloco ou função onde foi declarada;

Exemplo:void main()

{

int valor; //declara a variável local da função main

valor =0; //inicia com 0

while(true) //loop infinito

{

printf(“%d”, valor++); //imprime o valor incrementado

//da variável na serial

}

}

Page 60: Apresentação   curso pic básico fbs eletrônica

Declaradas fora do corpo de qualquer função;

Todas as funções podem alterar ou usar o seu valor;

Exemplo:int valor; //variável global

void verifica_valor(void) //função para verificar o valor do ad lido

{

if(valor < 127) // se valor for menor que 127

RB0 = 1; //liga RB0

}

void main() //função principal

{

valor = read_adc(); //le valor do ad

verifica_valor(); //chama função para verificar valor

}

Page 61: Apresentação   curso pic básico fbs eletrônica

Linguagem C possui grande quantidade de operadores;

Operadores de alto e baixo nível;

Tipos:◦ Atribuição;◦ Aritméticos;◦ Relacionais;◦ Lógicos;◦ Lógicos bit a bit;

Page 62: Apresentação   curso pic básico fbs eletrônica

Representado pelo caracter: “=“;

Utilizado para atribuir um determinado valor a uma variável.

Exemplo:◦ x = 10;

◦ y = x+3;

Page 63: Apresentação   curso pic básico fbs eletrônica

Realizam operações matemáticas;

OPERADOR AÇÃO

+ Adição

- Subtração

* Multiplicação

/ Divisão

% Resto de divisão inteira

++ Incremento

-- Decremento

Page 64: Apresentação   curso pic básico fbs eletrônica

operador % :x = 5%2;

Operador ++;x = 1;

x++;

Operador --;x = 10;

x--;

Page 65: Apresentação   curso pic básico fbs eletrônica

Usados em testes condicionais para determinar relações entre dados.

OPERADOR AÇÃO

> Maior que

>= Maior ou igual que

< Menor que

<= Menor ou igual que

== Igual a

!= Diferente de

Page 66: Apresentação   curso pic básico fbs eletrônica

São usados para realizar testes booleanos entre elementos em um teste condicional

OPERADOR AÇÃO

&& AND (E)

|| OR (OU)

! NOT (NÃO)

Page 67: Apresentação   curso pic básico fbs eletrônica

São utilizados para operações lógicas entre elementos ou variáveis.

OPERADOR AÇÃO

& AND(E)

| OR(OU)

^ XOR (OU EXCLUSIVO)

~ NOT (NÃO)

>> Deslocamento à direita

<< Deslocamento à esquerda

Page 68: Apresentação   curso pic básico fbs eletrônica

Abreviação entre a operação e atribuição

Forma expandida Forma reduzida

x = x + y x += y

x = x - y x -= y

x = x * y x *= y

x = x / y x /= y

x = x % y x %= y

x = x & y x &= y

x = x | y x |= y

x = x ^ y x ^= y

x = x << y x <<= y

x = x >> y x >>= y

Page 69: Apresentação   curso pic básico fbs eletrônica

São divididas em dois grupos:

Testes condicionais;

Estruturas de repetições;

Page 70: Apresentação   curso pic básico fbs eletrônica

Utilizada para executar um comando ou bloco decomandos no caso de uma determinada condiçãoser avaliada como verdadeira.

Forma geral:◦ if(condição) comando;

Exemplo:◦ if(temperatura < setPoint) RELE = 1;

Page 71: Apresentação   curso pic básico fbs eletrônica

Utilizado quando há a necessidade de tomar umaação caso a condição for avaliada como falsa.

if (condição)

comandoA;

else

comandoB;

Exemplo:

if (temperatura < setpoint)

rele = 1;

else

rele = 0;

Page 72: Apresentação   curso pic básico fbs eletrônica

Para executar um bloco de códigos dentro da declaração if- else:

if(condição)

{

comandoA1; //bloco de código para a condição verdadeira

comandoaA2;

...

comandoAn;

}

else

{

comandoB1; //bloco de código para a condição falsa

comandoB2;

...

comandoBn;

}

Page 73: Apresentação   curso pic básico fbs eletrônica

É utilizado para a realização de comparações sucessivas de uma formaelegante, clara e eficiente.

switch(variável)

{

case constante1:

comandoA;

. . .

break;

case constante2:

comandoB;

. . .

break;

. . .

. . .

default:

comandoX;

}

Page 74: Apresentação   curso pic básico fbs eletrônica

Exemplo

switch(caracter_recebido)

{

case ‘1’:

LED1 = 1;

break;

case ‘2’:

LED2 = 1;

break;

default:

LED1 = 0;

LED2 = 0;

}

Page 75: Apresentação   curso pic básico fbs eletrônica

Estrutura de repetição mais utilizada, sendo muito poderosa na Linguagem C

Forma geral:for( inicialização;condição;incremento) comando;

Ou

for( inicialização;condição;incremento)

{

Comando1;

Comando2;

. . .

ComandoN;

}

Page 76: Apresentação   curso pic básico fbs eletrônica

Exemplo

for(x = 0;x <11;x++)

{

printf(“ %d x 10 = %d”,x, x*10);

}

Page 77: Apresentação   curso pic básico fbs eletrônica

Repete um comando ou um conjunto de instruçõesenquanto uma condição for avaliada comoverdadeira.

Forma geral:while(condição)

{

comando1;

comando2;

...

comandoN;

}

Page 78: Apresentação   curso pic básico fbs eletrônica

x = 0;

while(x<10)

{

LED = 1;

delay_ms(500);

LED = 0;

delay_ms(500);

x++;

}

while(1);

while(!RA0);

Exemplos

Page 79: Apresentação   curso pic básico fbs eletrônica

Tem o funcionamento ligeiramente diferente do while.

Forma geral:do

{

comandoA;

comandoB;

...

comandoN;

} while (condição);

Page 80: Apresentação   curso pic básico fbs eletrônica

Exemplo

do

{

led = 1;

delay_ms(500);

led = 0;

delay_ms(500);

x++;

}while(x<10);

Page 81: Apresentação   curso pic básico fbs eletrônica

Funções são grupos de instruções que podem serutilizados uma ou mais vezes sem a necessidade derepetir a digitação do código;

Em todo programa C existe ao menos uma função –função main();

Page 82: Apresentação   curso pic básico fbs eletrônica

Características de funções

◦ programa fica mais legível e melhor estruturado;

◦ Reutilização de código;

◦ Cada função tem um nome único;

◦ Os nomes de funções seguem as mesmas regras de nomenclatura para variáveis;

◦ Podem ter qualquer nome exceto main.

Page 83: Apresentação   curso pic básico fbs eletrônica

O formato geral de uma função é:

Tipo_da_função nome_da_função (parâmetros)

{

//bloco de comandos

Comando1;

Comando2;

...

return;

}

Page 84: Apresentação   curso pic básico fbs eletrônica

Tipo da função -> especifica o tipo de dado de retorno;

Nome da função -> identifica a função e é o nome utilizado para a chamada da mesma.

Parâmetros - > são argumentos onde são passados para que a função utilize durante sua execução;

Page 85: Apresentação   curso pic básico fbs eletrônica

Exemplo

int calcula_media(int A, int B)

{

int media;

media = (A + B)/2;

return media;

}

void main (void)

{

int nota_final;

int nota1, nota2;

nota1 = 5;

nota2 = 9;

nota_final = calcula_media(nota1, nota2);

}

Page 86: Apresentação   curso pic básico fbs eletrônica

O compilador CCS possui varias funções prontas que auxiliam em:

◦ Manipulação de I/O;

◦ Configuração de registradores;

◦ Leitura do conversor A/D;

◦ Configuração e uso dos timers;

◦ Delays;

◦ PWM;

◦ Matemáticas;

◦ .....

Page 87: Apresentação   curso pic básico fbs eletrônica

output_low()

◦ output_low (PIN_B1); // coloca o pino RB1 em 0

output_high()

◦ Output_high (PIN_A0); // coloca o pino RA0 em 1

output_bit()

◦ Output_bit (pin_A0, 0);// coloca o pino RA0 em 0

output_x()

◦ output_b (0xFF); // escreve o valor 0xFF no PORTB

input()

◦ x = input(PIN_A0); // lê o estado do pino RA0

input_x()

◦ x = input_b(); // lê o estado do PORTB

Page 88: Apresentação   curso pic básico fbs eletrônica

delay_cycles()◦ delay_cycles (1); // aguarda 1 us.

delay_us()◦ Delay_us (1); // aguarda 1 us.

delay_ms()◦ delay_ms (1); // aguarda 1 ms.

Page 89: Apresentação   curso pic básico fbs eletrônica

setup_adc_ports()◦ setup_adc_ports (AN0);//define RA0 como entrada analógica

set_adc_channel ()◦ set_adc_channel(2); //seleciona canal 2 para conversão

read_adc ()◦ valor = read_adc(); //le o resultado da conversão

adc_done ()◦ while (!adc_done()); //fica em loop até o fim da conversão

Page 90: Apresentação   curso pic básico fbs eletrônica

#asm #endasmPermite a inclusão de código assembly.

Exemplo:

#asm

bsf PORTB,3 // estas duas instruções geram um

pulso

nop

bcf PORTB,3 // no pino RB3.

#endasm

Page 91: Apresentação   curso pic básico fbs eletrônica

#case◦ Ativa a distinção entre caracteres maiúsculos/minúsculos.

#define ◦ Utilizado para substituir valores por identificadores ou até

mesmo macro comandos.

Exemplo:

#define BT1 RB0

#define liga_led RC0 = 1

Page 92: Apresentação   curso pic básico fbs eletrônica

#include◦ Insere arquivos externos

Exemplo:

#include <16F883.h>

#include "PIC16F883_SFR.h“

#ROM◦ Armazena valores na EEPROM durante a gravação

Exemplo:

#rom 0x2100 = { 0x00, 0x25};

Page 93: Apresentação   curso pic básico fbs eletrônica

#fuses◦ Configura os fusíveis de funcionamento

◦ Exemplo: #fuses XT,NOMCLR,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP

Alguns Fusíveis disponíveis para o PIC16F883: 1.00 XT Crystal osc <= 4mhz

1.00 EC_IO External clock

1.03 NOWDT No Watch Dog Timer

1.03 WDT Watch Dog Timer

1.05 NOMCLR Master Clear pin used for I/O

1.05 MCLR Master Clear pin enabled

1.06 PROTECT Code protected from reads

1.07 NOCPD No EE protection

1.07 CPD Data EEPROM Code Protected

1.08 NOBROWNOUT No brownout reset

Page 94: Apresentação   curso pic básico fbs eletrônica

#ifdef #endif◦ Permite compilação condicional

Exemplo:

#define OK

.

.

#ifdef OK

delay_ms(200);

#endif

Page 95: Apresentação   curso pic básico fbs eletrônica

#INT_XXXX ◦ Indica para o compilador que o trecho a seguir refere-se a

uma rotina de interrupção

Algumas das interrupções reconhecidas são:

◦ INT_EXT (RB0/Int)

◦ INT_TIMER0 (Timer 0)

◦ INT_RB (RB4~7)

◦ INT_EEPROM (EEPROM interna)

◦ INT_AD (Conversor A/D interno)

◦ INT_DEFAULT (Caso entre na rotina de interrupção por engano)

Page 96: Apresentação   curso pic básico fbs eletrônica

#use delay◦ Informa o clock do sistema

Exemplo:

#use delay (clock=4000000)

#byte ◦ Permite o acesso a posições de RAM (Registros e memória

geral) pela indicação de seu endereço real

Exemplo:

#byte PORTB = 0x06

Page 97: Apresentação   curso pic básico fbs eletrônica

#bit◦ Usado para definir um identificador para um bit de uma

variável já definida.

◦ Exemplo:

int flags;

#bit ST_BT1 = flag.0

Page 98: Apresentação   curso pic básico fbs eletrônica

PIC Básico 28 P

Page 99: Apresentação   curso pic básico fbs eletrônica
Page 100: Apresentação   curso pic básico fbs eletrônica
Page 101: Apresentação   curso pic básico fbs eletrônica

Permitem a comunicação com o mundo exterior;

Organizados por PORTs;

Podem ser definidos como entrada ou saídas conforme a necessidade;

Dois registradores para manipulação: TRISX e PORTX;

Page 102: Apresentação   curso pic básico fbs eletrônica

Configurando direção do PINO:

◦ Registrador TRISX

0 = pino configurado como saída;

1 = pino configurado como entrada;

Exemplo:

TRISA = 0b00000001; //define o RA0 como entrada digital

Page 103: Apresentação   curso pic básico fbs eletrônica

Lendo o estado do pino:if(RA0 == 0) //se pino RA0 estiver com valor zero

comandoX; //executa comando x

Lendo estado do PORT inteiro:int valor;

valor = PORTA;

If(PORTB == 128) //se Pino RB7 igual a 1

comandoY; //executa comando Y

Page 104: Apresentação   curso pic básico fbs eletrônica

Hardware:

R110K

+ 5V

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

Page 105: Apresentação   curso pic básico fbs eletrônica

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

R1330R

D1LED-RED

Esquema 1

Page 106: Apresentação   curso pic básico fbs eletrônica

Esquema 2

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

R1330R

D1LED-RED

+5V

Page 107: Apresentação   curso pic básico fbs eletrônica

Execute o exemplo 1 e teste no KIT. Verifique seu funcionamento.

Simular no MPLAB.

Page 108: Apresentação   curso pic básico fbs eletrônica

Desenvolva uma aplicação onde faça a leitura dosquatros botões e ligue os LEDS em código bináriopara indicar qual tecla foi pressionada.

Page 109: Apresentação   curso pic básico fbs eletrônica

Quando uma tecla é pressionada gera um certo ruído:

Esse ruído pode causar interferência no software.

Page 110: Apresentação   curso pic básico fbs eletrônica

O exemplo 2 exibe como ler uma tecla usando técnica de Debounce.

Page 111: Apresentação   curso pic básico fbs eletrônica

Faça a leitura das 4 teclas usando a técnica de DEBOUNCE de teclas. Os botões deverão ter as seguintes funções:

BT1 – incrementa valor nos leds;

BT2 – decrementa valor nos leds;

BT3 – zera valor dos leds;

BT4 – inverte estado do RELE;

Page 112: Apresentação   curso pic básico fbs eletrônica
Page 113: Apresentação   curso pic básico fbs eletrônica
Page 114: Apresentação   curso pic básico fbs eletrônica
Page 115: Apresentação   curso pic básico fbs eletrônica

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

R1

330R

R2

330R

R3

330R

R4

330R

R5

330R

R6

330R

R7

330R

Page 116: Apresentação   curso pic básico fbs eletrônica

RA0/AN0/ULPWU/C12IN0-2

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT21

RB1/AN10/P1C/C12IN3-22

RB2/AN8/P1B23

RA7/OSC1/CLKIN9

RA6/OSC2/CLKOUT10

RC0/T1OSO/T1CKI11

RC1/T1OSI/CCP212

RB7/ICSPDAT28

RB6/ICSPCLK27

RB5/AN13/T1G26

RB4/AN11/P1D25

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RC3/SCK/SCL14

RC2/CCP1/P1A13

RA3/AN3/VREF+/C1IN+5

RB3/AN9/PGM/C12IN2-24

RE3/MCLR/VPP1

U1

PIC16F883

R1

330R

R2

330R

R3

330R

R4

330R

R5

330R

R6

330R

R7

330R

+5V

Page 117: Apresentação   curso pic básico fbs eletrônica

Tabela para display cátodo comum

Page 118: Apresentação   curso pic básico fbs eletrônica

O Exemplo 3 mostra como acionar displays de 7segmentos.

Page 119: Apresentação   curso pic básico fbs eletrônica

Desenvolva uma aplicação para que o valor nodisplay seja incrementado ao apertar umadeterminada tecla e decrementado quandopressionado outra e uma outra tecla para reiniciaro valor da contagem do display. O valor deve ir de0 a 9.

Page 120: Apresentação   curso pic básico fbs eletrônica
Page 121: Apresentação   curso pic básico fbs eletrônica

Periféricos internos ao microcontrolador

São utilizados para:◦ Contagem de tempos;

◦ Contagem de eventos;

O PIC16F883 possui 3 timers:◦ Timer0 - > 8 bits

◦ Timer1 - > 16 bits

◦ Timer2 -> 8 bits

Page 122: Apresentação   curso pic básico fbs eletrônica

Temporizador/ contador de 8 bits;

Diagrama de Blocos:

Page 123: Apresentação   curso pic básico fbs eletrônica
Page 124: Apresentação   curso pic básico fbs eletrônica

Registradores associados:

Page 125: Apresentação   curso pic básico fbs eletrônica

Temporizador / Contador de 16 bits

Page 126: Apresentação   curso pic básico fbs eletrônica
Page 127: Apresentação   curso pic básico fbs eletrônica

Registradores associados:

Page 128: Apresentação   curso pic básico fbs eletrônica

Temporizador de 8 bits

Page 129: Apresentação   curso pic básico fbs eletrônica
Page 130: Apresentação   curso pic básico fbs eletrônica

Registradores associados:

Page 131: Apresentação   curso pic básico fbs eletrônica

O exemplo 4 exibe como usar o TIMER1 para criar uma base de tempo para um temporizador.

Page 132: Apresentação   curso pic básico fbs eletrônica

Utilize o TIMER0 para criar uma base de tempo para piscar um LED ou mais LEDs, faça o mesmo utilizando o TIMER2

obs.: Base de tempo de 1 segundo

Page 133: Apresentação   curso pic básico fbs eletrônica
Page 134: Apresentação   curso pic básico fbs eletrônica

Eventos assíncronos;

Desvia o programa automaticamente para o vetor de interrupção (0x04);

São classificadas em dois grupos:

◦ Convencionais ;

◦ Periféricos;

Page 135: Apresentação   curso pic básico fbs eletrônica
Page 136: Apresentação   curso pic básico fbs eletrônica
Page 137: Apresentação   curso pic básico fbs eletrônica

O exemplo 5A exibe a forma de se tratar interrupção com base nofluxograma de tratamento e o exemplo 5B exibe uma formautilizando os recursos do compilador para tratamento dainterrupção.

Os exemplos exibirão como usar a interrupção para a multiplexaçãode display de sete segmentos e os LEDS que estão ligados no mesmobarramento de dados usando a técnica de varredura, ou seja,acenderemos um display por vez: primeiro o display 1, depois odisplay 2 e depois os LEDS e assim repetidamente.

Para que não percebermos o liga e desliga dos displaystrabalharemos com uma freqüência de varredura deaproximadamente 80 Hz, pois acima de 50 Hz temos a impressão detodos os displays ligados ao mesmo tempo.

Page 138: Apresentação   curso pic básico fbs eletrônica

Com base nos exemplos anteriores crie umcontador de segundos usando o TIMER0 para avarredura dos displays e o TIMER1 para a base detempo de um segundo. Utilize interrupções paraesse processo. O contador deve ir de 0 a 59 equando chegar em 60 deve-se reiniciar os displayse incrementar os LEDS.

Page 139: Apresentação   curso pic básico fbs eletrônica
Page 140: Apresentação   curso pic básico fbs eletrônica

Converte um sinal analógico em digital;

Resolução é dada por:

Vref : tensão de referência do conversor

n : numero de bits do conversor

Page 141: Apresentação   curso pic básico fbs eletrônica

Características

◦ Conversor de 10 bits;

◦ 11 canais disponíveis;

◦ Referência interna;

◦ Referência externa;

◦ Conversor por aproximações sucessivas;

◦ Freqüência de conversão ajustável por software;

◦ Interrupção associada ao termino da conversão.

Page 142: Apresentação   curso pic básico fbs eletrônica
Page 143: Apresentação   curso pic básico fbs eletrônica

Primeiramente configura a direção do pino como entrada no registrador TRISX correspondente.

Definir o pino como entrada analógica◦ Registradores:

ANSEL e ANSELH

Exemplo: TRISA = 0b00000001; //pino RA0 como entrada

ANSEL = 0b00000001; //pino RA0 funcionando como AN0

Page 144: Apresentação   curso pic básico fbs eletrônica
Page 145: Apresentação   curso pic básico fbs eletrônica
Page 146: Apresentação   curso pic básico fbs eletrônica

Clock

Page 147: Apresentação   curso pic básico fbs eletrônica

Resultado da conversão

Page 148: Apresentação   curso pic básico fbs eletrônica
Page 149: Apresentação   curso pic básico fbs eletrônica
Page 150: Apresentação   curso pic básico fbs eletrônica

O exemplo 6 exibe como configurar o conversorA/D e como obter o resultado da conversão. OResultado da conversão é exibido nos LEDS e ovalor de entrada analógica pode ser variadoutilizando o POT1.

Page 151: Apresentação   curso pic básico fbs eletrônica

Simule um sensor de temperatura com o POT2 obedecendo a seguinte relação:◦ 0 v – 0 °C

◦ 5 V – 99°C

Exibir o valor da temperatura nos displays.

Page 152: Apresentação   curso pic básico fbs eletrônica
Page 153: Apresentação   curso pic básico fbs eletrônica

#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7)

Onde é configurado o baud rate da comunicação e os pinos de transmissão e recepção de dados.

Neste caso temos a seguinte configuração:◦ Baude rate = 9600 bps

◦ Pino de transmissão: RC6

◦ Pino de recepção: RC7

Page 154: Apresentação   curso pic básico fbs eletrônica

printf◦ Envia uma string(seqüência de caracteres) pela serial.

◦ Exemplo: printf(“hello world”); //imprime na serial a string: hello world

putc◦ Envia apenas um caractere na serial.

Exemplo:

putc(‘f’); //imprime na serial o caracter ‘f’

Page 155: Apresentação   curso pic básico fbs eletrônica

gets◦ Lê uma string da serial

◦ Exemplo: char buffer[10]; //declara o vetor buffer para armazenamento da string

gets(buffer); //aguarda a chegada de string na serial

Getc◦ Lê um caracter da serial

Exemplo:] char c; //declara a variável para armazenamento do caractere

c = getc(); // atribui a c quando caracter disponível na serial

Page 156: Apresentação   curso pic básico fbs eletrônica

Kbhit◦ Retorna verdadeiro (1) se chegar um caractere pela

serial e falso(0) enquanto não houver caractere.

◦ Exemplo:if(kbhit()) //se caracter na serial

{

c = getc(); //atribui o valor para c

}

Page 157: Apresentação   curso pic básico fbs eletrônica

O exemplo 7 exibe uma comunicação serial entreum computador e o microcontrolador. Nesteexemplo será enviado pela serial o valor de tensãosempre que houver a chegada do caractere ‘T’ pelaserial.

Page 158: Apresentação   curso pic básico fbs eletrônica

Desenvolva um sistema onde seja possível ligar ou desligar cada LED independentemente através de comandos enviados pelo terminal do computador.

Page 159: Apresentação   curso pic básico fbs eletrônica
Page 160: Apresentação   curso pic básico fbs eletrônica

write_eeprom (endereço, valor);

◦ Exemplo:

#define END_VOLUME 10 // endereço na EEPROM

volume++; //incrementa o valor

write_eeprom(END_VOLUME,volume);//salva na EEPROM endereço 10

Page 161: Apresentação   curso pic básico fbs eletrônica

read_eeprom (endereço);

◦ Exemplo:

#define END_VOLUME 10 //endereço

volume = read_eeprom (END_VOLUME); //lê o valor presente no

//Endereço 10 da EEPROM

Page 162: Apresentação   curso pic básico fbs eletrônica

O exemplo 8 mostra como armazenar e ler valoresna memória EEPROM. Será armazenado o valor nodisplay e quando reiniciar o microcontrolador estevalor será carregado no display novamente.

Page 163: Apresentação   curso pic básico fbs eletrônica

Desenvolva uma aplicação onde seja armazenado na EEPROM o valor de uma Variável de 16 bits.

Page 164: Apresentação   curso pic básico fbs eletrônica

Desenvolver um controlador de temperatura do tipo ON/OFF, onde será ajustado um valor para ser mantido no display e o sistema controlará a saída para manter esta temperatura.

Recursos utilizados:◦ Conversor A/D para leitura do sensor de temperatura;

◦ Interrupção;

◦ Varredura de displays;

◦ Leitura de teclas;

◦ Acionamento de rele.

Page 165: Apresentação   curso pic básico fbs eletrônica

Fábio B. de Souza

www.fbseletronica.wordpress.com

[email protected]