Apresentao Curso pic

download Apresentao Curso pic

of 165

Transcript of Apresentao Curso pic

  • 7/25/2019 Apresentao Curso pic

    1/165

    Linguagem CAplicaes baseadas no KIT PIC Bsico 28P

  • 7/25/2019 Apresentao Curso pic

    2/165

    Estrutura bsica de um microcontrolador; O PIC16F883; MPLAB IDE; Linguagem C;

    Manipulao de I/O; Timers; Interrupes; Conversor A/D;

    Comunicao Serial; Manipulao de memria EEPROM; Projeto.

  • 7/25/2019 Apresentao Curso pic

    3/165

    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

  • 7/25/2019 Apresentao Curso pic

    4/165

    Sistema Binrio 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)

  • 7/25/2019 Apresentao Curso pic

    5/165

    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)

  • 7/25/2019 Apresentao Curso pic

    6/165

  • 7/25/2019 Apresentao Curso pic

    7/165

    Bit: 0 ou 1; Nibble: 4bits; Byte : 8 bits;

    Word: 16 bits.

  • 7/25/2019 Apresentao Curso pic

    8/165

    AND ou E:

  • 7/25/2019 Apresentao Curso pic

    9/165

    OR ou OU:

  • 7/25/2019 Apresentao Curso pic

    10/165

    NOT ou No:

  • 7/25/2019 Apresentao Curso pic

    11/165

    XOR ou OU-EXCLUSIVO:

  • 7/25/2019 Apresentao Curso pic

    12/165

    Basicamente, um microcontrolador constitudode quatro partes:

    Memria de programa;

    Memria de dados;

    Unidade lgica Aritmtica (ULA);

    Portas de I/O (Entrada e Sada);

  • 7/25/2019 Apresentao Curso pic

    13/165

  • 7/25/2019 Apresentao Curso pic

    14/165

    Von-Neumann

  • 7/25/2019 Apresentao Curso pic

    15/165

    Harvard

  • 7/25/2019 Apresentao Curso pic

    16/165

  • 7/25/2019 Apresentao Curso pic

    17/165

    O PIC16F883 apresenta a seguintes caractersticas:

    28 pinos sendo 24 para I/O; Freqncia mxima de operao: 20 MHz; Memria de programa: 4 Kwords;

    Memria de dados: 256 bytes; Memria EEPROM: 256 bytes; Numero de Interrupes: 15; 3 Timers (2 X 8 bits, 1 X 16 bits); Comunicao serial: I2C, SPI, EUSART; 11 canais analgicos de 10 bits; 2 comparadores analgicos; 2 mdulos CCP(capture, compare e PWM); 35 instrues.

  • 7/25/2019 Apresentao Curso pic

    18/165

  • 7/25/2019 Apresentao Curso pic

    19/165

  • 7/25/2019 Apresentao Curso pic

    20/165

  • 7/25/2019 Apresentao Curso pic

    21/165

  • 7/25/2019 Apresentao Curso pic

    22/165

    Freqncia do oscilador principal dividida por 4;

    Exemplo:fosc

    = 4MHzciclo de mquina = fosc /4 = 4Mhz / 4 = 1Mhztciclo = 1/1Mhz = 1s

  • 7/25/2019 Apresentao Curso pic

    23/165

  • 7/25/2019 Apresentao Curso pic

    24/165

    Os microcontroladores PIC possuem alguns modos deosciladores disponveis para operao.

    Tipos de osciladores:RC - RC externo;

    INTOSC - RC interno;EC - fonte clock externa;HS - cristal/ressonador de alta frequncia (acima de 4MHZ);XT - cristal/ressonador de mdia frequncia;LP - cristal/ressonador de baixa frequncia(32 KHz)

  • 7/25/2019 Apresentao Curso pic

    25/165

    RA0/AN0/ULPWU/C12IN0-2

    RA1/AN1/C12IN1-3

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

    RA4/T0CKI/C1OUT

    6

    RA5/AN4/SS/C2OUT7

    RB0/AN12/INT21

    RB1/AN10/P1C/C12IN3-22

    RB2/AN8/P1B23

    RA7/OSC1/CLKIN9

    RA6/OSC2/CLKOUT10

    RC0/T1OSO/T1CKI 11

    RC1/T1OSI/CCP2

    12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    RA3/AN3/VREF+/C1IN+5

    RB3/AN9/PGM/C12IN2-24

    RE3/MCLR/VPP1

    U1

    PIC16F883

    CEXT

    REXT

  • 7/25/2019 Apresentao Curso pic

    26/165

    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/P1B

    23

    RA7/OSC1/CLKIN9

    RA6/OSC2/CLKOUT10

    RC0/T1OSO/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    RA3/AN3/VREF+/C1IN+5

    RB3/AN9/PGM/C12IN2-24

    RE3/MCLR/VPP1

    U1

    PIC16F883

    XTAL

    C1

    C2

  • 7/25/2019 Apresentao Curso pic

    27/165

    So divididas em 3 tipos:

    ROM > Memria de Programa

    RAM -> Memria de Dados

    EEPROM -> Memria de Armazenamento

  • 7/25/2019 Apresentao Curso pic

    28/165

    Memria do tipo FLASH; Dividida em duas pginas; Vetor de reset;

    Vetor de interrupo;

  • 7/25/2019 Apresentao Curso pic

    29/165

  • 7/25/2019 Apresentao Curso pic

    30/165

    Memria do tipo RAM;

    Classificada em registradores de uso geral e de usoespecfico;

    Dividida em bancos;

  • 7/25/2019 Apresentao Curso pic

    31/165

  • 7/25/2019 Apresentao Curso pic

    32/165

  • 7/25/2019 Apresentao Curso pic

    33/165

    Memria no voltil;

    Usada para armazenar valores que no podem serperdidos;

    Escrita e apagada eletricamente;

    256 bytes;

  • 7/25/2019 Apresentao Curso pic

    34/165

    Reset externo; Quando aplicado nvel 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/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    RA3/AN3/VREF+/C1IN+5

    RB3/AN9/PGM/C12IN2-24

    RE3/MCLR/VPP1

    U1

    PIC16F883

    R110K

  • 7/25/2019 Apresentao Curso pic

    35/165

    Co 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;

  • 7/25/2019 Apresentao Curso pic

    36/165

    Detecta baixa tenso de alimentao;

    Tenses configurveis : 4 V ou 2.1 V;

    Caso tenso caia abaixo do valor configurado,ocorrer um reset no software;

  • 7/25/2019 Apresentao Curso pic

    37/165

    Circuito interno que retarda o inicio da execuodo programa;

    Garante estabilizao da tenso de alimentao;

    Tempo: cerca 64ms aps o pino MCLR sercolocado em nvel alto;

  • 7/25/2019 Apresentao Curso pic

    38/165

  • 7/25/2019 Apresentao Curso pic

    39/165

  • 7/25/2019 Apresentao Curso pic

    40/165

  • 7/25/2019 Apresentao Curso pic

    41/165

  • 7/25/2019 Apresentao Curso pic

    42/165

  • 7/25/2019 Apresentao Curso pic

    43/165

  • 7/25/2019 Apresentao Curso pic

    44/165

  • 7/25/2019 Apresentao Curso pic

    45/165

  • 7/25/2019 Apresentao Curso pic

    46/165

  • 7/25/2019 Apresentao Curso pic

    47/165

    Criar projeto, inserir cdigo fonte, compilar egravar no KIT.

  • 7/25/2019 Apresentao Curso pic

    48/165

  • 7/25/2019 Apresentao Curso pic

    49/165

    Caractersticas:

    Estruturada;

    Alto nvel (comparada ao Assembly);

    Facilidade de acesso ao hardware;

    Portabilidade;

    Curva de aprendizagem reduzida;

    Reutilizao de cdigo;

  • 7/25/2019 Apresentao Curso pic

    50/165

    So Utilizados para: Documentao do software; Excluso de linhas durante a compilao.

    Comentrios de linha simples:

    //este um comentrio de linha simples

    Comentrios de Mltiplas linhas:

    /*

    este umcomentrio demltiplas linhas

    */

  • 7/25/2019 Apresentao Curso pic

    51/165

    Nomes dados a variveis, funes ou outros elementos; So compostos por caracteres alfanumricos ou

    numricos; Somente podem ser iniciados por uma letra ou _,

    nunca por nmero; Podem possuir at 32 caracteres;

    Exemplo: temperatura;

    _tempo1;

    velocidade_angular;

  • 7/25/2019 Apresentao Curso pic

    52/165

    No 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

  • 7/25/2019 Apresentao Curso pic

    53/165

    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

  • 7/25/2019 Apresentao Curso pic

    54/165

    signed signed int variavel_x;

    unsigned

    unsigned int variavel_x

    short short int flag_x;

    long long int variavel_x;

  • 7/25/2019 Apresentao Curso pic

    55/165

    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 padro);

    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.

  • 7/25/2019 Apresentao Curso pic

    56/165

    Bases:

    Binria; Octal ; Decimal; Hexadecimal:

    Exemplo:

    Representao do numero 50 nas diferentes bases: 50 - Decimal 0x32- Hexadecimal 0b00110010 - Binrio 062- Octal

  • 7/25/2019 Apresentao Curso pic

    57/165

    Declarao: const int valor1 = 100;

    #define valor1 100

    So declaradas no inicio do programa, fora dequalquer funo.

  • 7/25/2019 Apresentao Curso pic

    58/165

    Declarao:

    tipo nome_da_varivel;

    tipo nome_da_varivel = valor_da_varivel;

    Exemplo: declarar a varivel chamada temperatura, sendo de 8 bits nosinalizada:

    unsigned int temperatura;

    Ou apenas:

    int temperatura;

    Iniciando variveis do mesmo tipo em linha nica:

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

  • 7/25/2019 Apresentao Curso pic

    59/165

    So declaradas dentro do corpo de funes ou blocos de cdigo; Disponveis apenas dentro do bloco ou funo onde foi declarada;

    Exemplo:

    void main(){

    int valor; //declara a varivel local da funo main

    valor =0; //inicia com 0

    while(true) //loop infinito

    {

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

    //da varivel na serial

    }

    }

  • 7/25/2019 Apresentao Curso pic

    60/165

    Declaradas fora do corpo de qualquer funo; Todas as funes podem alterar ou usar o seu valor;

    Exemplo:

    int valor; //varivel global

    void verifica_valor(void) //funo para verificar o valor do ad lido{

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

    RB0 = 1; //liga RB0

    }

    void main() //funo principal

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

    verifica_valor(); //chama funo para verificar valor

    }

  • 7/25/2019 Apresentao Curso pic

    61/165

    Linguagem C possui grande quantidade deoperadores;

    Operadores de alto e baixo nvel;

    Tipos: Atribuio; Aritmticos;

    Relacionais; Lgicos; Lgicos bit a bit;

  • 7/25/2019 Apresentao Curso pic

    62/165

    Representado pelo caracter: =; Utilizado para atribuir um determinado valor a uma

    varivel.

    Exemplo: x = 10;

    y = x+3;

  • 7/25/2019 Apresentao Curso pic

    63/165

    Realizam operaes matemticas;OPERADOR AO

    + Adio

    - Subtrao

    * Multiplicao

    / Diviso

    % Resto de diviso inteira

    ++ Incremento

    -- Decremento

  • 7/25/2019 Apresentao Curso pic

    64/165

    operador % :x = 5%2;

    Operador ++;x = 1;x++;

    Operador --;x = 10;

    x--;

  • 7/25/2019 Apresentao Curso pic

    65/165

    Usados em testes condicionais para determinarrelaes entre dados.

    OPERADOR AO

    > Maior que

    >= Maior ou igual que

    < Menor que

  • 7/25/2019 Apresentao Curso pic

    66/165

    So usados para realizar testes booleanos entreelementos em um teste condicional

    OPERADOR AO

    && AND (E)

    || OR (OU)

    ! NOT (NO)

  • 7/25/2019 Apresentao Curso pic

    67/165

    So utilizados para operaes lgicas entreelementos ou variveis.

    OPERADOR AO

    & AND(E)| OR(OU)

    ^ XOR (OU EXCLUSIVO)

    ~ NOT (NO)

    >> Deslocamento direita

  • 7/25/2019 Apresentao Curso pic

    68/165

    Abreviao entre a operao e atribuioForma 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 |= yx = x ^ y x ^= y

    x = x >= y

  • 7/25/2019 Apresentao Curso pic

    69/165

    So divididas em dois grupos:

    Testes condicionais;

    Estruturas de repeties;

  • 7/25/2019 Apresentao Curso pic

    70/165

  • 7/25/2019 Apresentao Curso pic

    71/165

    Utilizado quando h a necessidade de tomar umaao caso a condio for avaliada como falsa.

    if (condio)comandoA;

    else

    comandoB;

    Exemplo:

    if (temperatura < setpoint)

    rele = 1;

    else

    rele = 0;

  • 7/25/2019 Apresentao Curso pic

    72/165

    Para executar um bloco de cdigos dentro da declarao if- else:if(condio){comandoA1; //bloco de cdigo para a condio verdadeiracomandoaA2;

    ...comandoAn;}else{comandoB1; //bloco de cdigo para a condio falsacomandoB2;...comandoBn;}

  • 7/25/2019 Apresentao Curso pic

    73/165

    utilizado para a realizao de comparaes sucessivas de uma formaelegante, clara e eficiente.

    switch(varivel){case constante1:

    comandoA;

    . . .break;case constante2:

    comandoB;. . .

    break;

    . . .. . .default:comandoX;

    }

  • 7/25/2019 Apresentao Curso pic

    74/165

    Exemplo

    switch(caracter_recebido)

    {

    case 1:

    LED1 = 1;break;

    case 2:

    LED2 = 1;

    break;

    default:

    LED1 = 0;

    LED2 = 0;

    }

  • 7/25/2019 Apresentao Curso pic

    75/165

    Estrutura de repetio mais utilizada, sendo muitopoderosa na Linguagem C

    Forma geral:for( inicializao;condio;incremento) comando;

    Ou

    for( inicializao;condio;incremento){

    Comando1;

    Comando2;. . .ComandoN;

    }

  • 7/25/2019 Apresentao Curso pic

    76/165

    Exemplo

    for(x = 0;x

  • 7/25/2019 Apresentao Curso pic

    77/165

    Repete um comando ou um conjunto de instruesenquanto uma condio for avaliada comoverdadeira.

    Forma geral:while(condio){

    comando1;

    comando2;

    ...

    comandoN;

    }

  • 7/25/2019 Apresentao Curso pic

    78/165

    x = 0;

    while(x

  • 7/25/2019 Apresentao Curso pic

    79/165

    Tem o funcionamento ligeiramente diferente dowhile.

    Forma geral:do

    {

    comandoA;

    comandoB;

    ...comandoN;

    } while (condio);

  • 7/25/2019 Apresentao Curso pic

    80/165

    Exemplo

    do

    {

    led = 1;

    delay_ms(500);

    led = 0;

    delay_ms(500);

    x++;

    }while(x

  • 7/25/2019 Apresentao Curso pic

    81/165

    Funes so grupos de instrues que podem serutilizados uma ou mais vezes sem a necessidade derepetir a digitao do cdigo;

    Em todo programa C existe ao menos uma funo funo main();

  • 7/25/2019 Apresentao Curso pic

    82/165

    Caractersticas de funes

    programa fica mais legvel e melhor estruturado;

    Reutilizao de cdigo;

    Cada funo tem um nome nico;

    Os nomes de funes seguem as mesmas regras de nomenclatura

    para variveis;

    Podem ter qualquer nome exceto main.

  • 7/25/2019 Apresentao Curso pic

    83/165

    O formato geral de uma funo :

    Tipo_da_funo nome_da_funo (parmetros)

    {

    //bloco de comandos

    Comando1;

    Comando2;

    ...

    return;

    }

  • 7/25/2019 Apresentao Curso pic

    84/165

    Tipo da funo -> especifica o tipo de dado deretorno;

    Nome da funo -> identifica a funo e o nome

    utilizado para a chamada da mesma.

    Parmetros - > so argumentos onde sopassados para que a funo utilize durante suaexecuo;

  • 7/25/2019 Apresentao Curso pic

    85/165

    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);

    }

  • 7/25/2019 Apresentao Curso pic

    86/165

    O compilador CCS possui varias funesprontas que auxiliam em:

    Manipulao de I/O; Configurao de registradores; Leitura do conversor A/D; Configurao e uso dos timers; Delays;

    PWM; Matemticas; .....

  • 7/25/2019 Apresentao Curso pic

    87/165

    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

  • 7/25/2019 Apresentao Curso pic

    88/165

    delay_cycles()

    delay_cycles (1); // aguarda 1 us.

    delay_us()

    Delay_us (1); // aguarda 1 us.

    delay_ms()

    delay_ms (1); // aguarda 1 ms.

  • 7/25/2019 Apresentao Curso pic

    89/165

    setup_adc_ports()

    setup_adc_ports (AN0);//define RA0 como entrada analgica

    set_adc_channel () set_adc_channel(2); //seleciona canal 2 para converso

    read_adc ()

    valor = read_adc(); //le o resultado da converso

    adc_done ()

    while (!adc_done()); //fica em loop at o fim da converso

  • 7/25/2019 Apresentao Curso pic

    90/165

    asm endasm

    Permite a incluso de cdigo assembly.

    Exemplo:

    #asmbsf PORTB,3 // estas duas instrues geram um

    pulso

    nop

    bcf PORTB,3 // no pino RB3.

    #endasm

  • 7/25/2019 Apresentao Curso pic

    91/165

    case

    Ativa a distino entre caracteres maisculos/minsculos.

    define

    Utilizado para substituir valores por identificadores ou atmesmo macro comandos.Exemplo:#define BT1 RB0

    #define liga_led RC0 = 1

  • 7/25/2019 Apresentao Curso pic

    92/165

    #include Insere arquivos externos

    Exemplo: #include #include "PIC16F883_SFR.h

    ROM Armazena valores na EEPROM durante a gravao

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

  • 7/25/2019 Apresentao Curso pic

    93/165

    fuses

    Configura os fusveis de funcionamento

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

    Alguns Fusveis disponveis para o PIC16F883: 1.00 XT Crystal osc

  • 7/25/2019 Apresentao Curso pic

    94/165

    ifdef endif

    Permite compilao condicional

    Exemplo:

    #define OK.

    .

    #ifdef OK

    delay_ms(200);

    #endif

  • 7/25/2019 Apresentao Curso pic

    95/165

    INT_XXXX

    Indica para o compilador que o trecho a seguir refere-se auma rotina de interrupo

    Algumas das interrupes reconhecidas so: 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 interrupo por engano)

  • 7/25/2019 Apresentao Curso pic

    96/165

    use delay

    Informa o clock do sistema Exemplo:

    #use delay (clock=4000000)

    byte

    Permite o acesso a posies de RAM (Registros e memriageral) pela indicao de seu endereo real

    Exemplo: #byte PORTB = 0x06

  • 7/25/2019 Apresentao Curso pic

    97/165

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

    varivel j definida. Exemplo:

    int flags;#bit ST_BT1 = flag.0

  • 7/25/2019 Apresentao Curso pic

    98/165

  • 7/25/2019 Apresentao Curso pic

    99/165

  • 7/25/2019 Apresentao Curso pic

    100/165

  • 7/25/2019 Apresentao Curso pic

    101/165

    Permitem a comunicao com o mundo exterior;

    Organizados por PORTs;

    Podem ser definidos como entrada ou sadasconforme a necessidade;

    Dois registradores para manipulao: TRISX ePORTX;

  • 7/25/2019 Apresentao Curso pic

    102/165

    Configurando direo do PINO:

    Registrador TRISX0 = pino configurado como sada;

    1 = pino configurado como entrada;

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

  • 7/25/2019 Apresentao Curso pic

    103/165

    Lendo o estado do pino:if(RA0 == 0) //se pino RA0 estiver com valor zerocomandoX; //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

  • 7/25/2019 Apresentao Curso pic

    104/165

    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/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    RA3/AN3/VREF+/C1IN+5

    RB3/AN9/PGM/C12IN2-24

    RE3/MCLR/VPP1

    U1

    PIC16F883

  • 7/25/2019 Apresentao Curso pic

    105/165

    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/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    RA3/AN3/VREF+/C1IN+5

    RB3/AN9/PGM/C12IN2-24

    RE3/MCLR/VPP1

    U1

    PIC16F883

    R1

    330R

    D1LED-RED

    Esquema 1

  • 7/25/2019 Apresentao Curso pic

    106/165

    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/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    RA3/AN3/VREF+/C1IN+5

    RB3/AN9/PGM/C12IN2-24

    RE3/MCLR/VPP1

    U1

    PIC16F883

    R1330R

    D1LED-RED

    +5V

  • 7/25/2019 Apresentao Curso pic

    107/165

    Execute o exemplo 1 e teste no KIT. Verifiqueseu funcionamento.

    Simular no MPLAB.

  • 7/25/2019 Apresentao Curso pic

    108/165

    Desenvolva uma aplicao onde faa a leitura dosquatros botes e ligue os LEDS em cdigo binriopara indicar qual tecla foi pressionada.

  • 7/25/2019 Apresentao Curso pic

    109/165

    Quando uma tecla pressionada gera umcerto rudo:

    Esse rudo pode causar interferncia nosoftware.

  • 7/25/2019 Apresentao Curso pic

    110/165

    O exemplo 2 exibe como ler uma teclausando tcnica de Debounce.

  • 7/25/2019 Apresentao Curso pic

    111/165

    Faa a leitura das 4 teclas usando a tcnicadeDEBOUNCE

    de teclas. Os botes deveroter as seguintes funes:

    BT1 incrementa valor nos leds;

    BT2 decrementa valor nos leds; BT3 zera valor dos leds; BT4 inverte estado do RELE;

  • 7/25/2019 Apresentao Curso pic

    112/165

  • 7/25/2019 Apresentao Curso pic

    113/165

  • 7/25/2019 Apresentao Curso pic

    114/165

  • 7/25/2019 Apresentao Curso pic

    115/165

    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/CLKOUT

    10

    RC0/T1OSO/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    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

  • 7/25/2019 Apresentao Curso pic

    116/165

    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/CLKOUT

    10

    RC0/T1OSO/T1CKI 11

    RC1/T1OSI/CCP2 12

    RB7/ICSPDAT 28

    RB6/ICSPCLK 27

    RB5/AN13/T1G 26

    RB4/AN11/P1D 25

    RC7/RX/DT 18

    RC6/TX/CK 17

    RC5/SDO 16

    RC4/SDI/SDA 15

    RC3/SCK/SCL 14

    RC2/CCP1/P1A 13

    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

  • 7/25/2019 Apresentao Curso pic

    117/165

    Tabela para display ctodo comum

  • 7/25/2019 Apresentao Curso pic

    118/165

    O Exemplo 3 mostra como acionar displays de 7segmentos.

  • 7/25/2019 Apresentao Curso pic

    119/165

    Desenvolva uma aplicao para que o valor nodisplay seja incrementado ao apertar umadeterminada tecla e decrementado quandopressionado outra e uma outra tecla para reiniciar

    o valor da contagem do display. O valor deve ir de0 a 9 .

  • 7/25/2019 Apresentao Curso pic

    120/165

  • 7/25/2019 Apresentao Curso pic

    121/165

    Perifricos internos ao microcontrolador

    So utilizados para: Contagem de tempos;

    Contagem de eventos;

    O PIC16F883 possui 3 timers: Timer0 - > 8 bits Timer1 - > 16 bits Timer2 -> 8 bits

  • 7/25/2019 Apresentao Curso pic

    122/165

    Temporizador/ contador de 8 bits; Diagrama de Blocos:

  • 7/25/2019 Apresentao Curso pic

    123/165

  • 7/25/2019 Apresentao Curso pic

    124/165

    Registradores associados:

  • 7/25/2019 Apresentao Curso pic

    125/165

    Temporizador / Contador de 16 bits

  • 7/25/2019 Apresentao Curso pic

    126/165

  • 7/25/2019 Apresentao Curso pic

    127/165

    Registradores associados:

  • 7/25/2019 Apresentao Curso pic

    128/165

    Temporizador de 8 bits

  • 7/25/2019 Apresentao Curso pic

    129/165

  • 7/25/2019 Apresentao Curso pic

    130/165

    Registradores associados:

  • 7/25/2019 Apresentao Curso pic

    131/165

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

  • 7/25/2019 Apresentao Curso pic

    132/165

    Utilize o TIMER0 para criar uma base de tempopara piscar um LED ou mais LEDs, faa o mesmoutilizando o TIMER2

    obs.: Base de tempo de 1 segundo

  • 7/25/2019 Apresentao Curso pic

    133/165

  • 7/25/2019 Apresentao Curso pic

    134/165

    Eventos assncronos; Desvia o programa automaticamente para o vetor

    de interrupo (0x04);

    So classificadas em dois grupos:

    Convencionais ; Perifricos;

  • 7/25/2019 Apresentao Curso pic

    135/165

  • 7/25/2019 Apresentao Curso pic

    136/165

  • 7/25/2019 Apresentao Curso pic

    137/165

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

    Os exemplos exibiro como usar a interrupo para a multiplexaode display de sete segmentos e os LEDS que esto ligados no mesmobarramento de dados usando a tcnica 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 no percebermos o liga e desliga dos displaystrabalharemos com uma freqncia de varredura deaproximadamente 80 Hz, pois acima de 50 Hz temos a impresso detodos os displays ligados ao mesmo tempo.

  • 7/25/2019 Apresentao Curso pic

    138/165

    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 interrupes para

    esse processo. O contador deve ir de 0 a 59 equando chegar em 60 deve-se reiniciar os displayse incrementar os LEDS.

  • 7/25/2019 Apresentao Curso pic

    139/165

  • 7/25/2019 Apresentao Curso pic

    140/165

    Converte um sinal analgico em digital;

    Resoluo dada por:

    Vref : tenso de referncia do conversorn : numero de bits do conversor

  • 7/25/2019 Apresentao Curso pic

    141/165

    Caractersticas

    Conversor de 10 bits; 11 canais disponveis; Referncia interna; Referncia externa; Conversor por aproximaes sucessivas; Freqncia de converso ajustvel por software; Interrupo associada ao termino da converso.

  • 7/25/2019 Apresentao Curso pic

    142/165

  • 7/25/2019 Apresentao Curso pic

    143/165

    Primeiramente configura a direo do pino comoentrada no registrador TRISX correspondente.

    Definir o pino como entrada analgica

    Registradores: ANSEL e ANSELH

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

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

  • 7/25/2019 Apresentao Curso pic

    144/165

  • 7/25/2019 Apresentao Curso pic

    145/165

  • 7/25/2019 Apresentao Curso pic

    146/165

    Clock

  • 7/25/2019 Apresentao Curso pic

    147/165

    Resultado da converso

  • 7/25/2019 Apresentao Curso pic

    148/165

  • 7/25/2019 Apresentao Curso pic

    149/165

  • 7/25/2019 Apresentao Curso pic

    150/165

    O exemplo 6 exibe como configurar o conversorA/D e como obter o resultado da converso. OResultado da converso exibido nos LEDS e ovalor de entrada analgica pode ser variado

    utilizando o POT1.

  • 7/25/2019 Apresentao Curso pic

    151/165

    Simule um sensor de temperatura com o POT2obedecendo a seguinte relao: 0 v 0 C 5 V 99C

    Exibir o valor da temperatura nos displays.

  • 7/25/2019 Apresentao Curso pic

    152/165

  • 7/25/2019 Apresentao Curso pic

    153/165

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

    Onde configurado o baud rate da comunicao e ospinos de transmisso e recepo de dados.

    Neste caso temos a seguinte configurao: Baude rate = 9600 bps

    Pino de transmisso: RC6

    Pino de recepo: RC7

  • 7/25/2019 Apresentao Curso pic

    154/165

    printf

    Envia uma string(seqncia 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

  • 7/25/2019 Apresentao Curso pic

    155/165

    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 varivel para armazenamento do caractere

    c = getc(); // atribui a c quando caracter disponvel na serial

  • 7/25/2019 Apresentao Curso pic

    156/165

    Kbhit

    Retorna verdadeiro (1) se chegar um caractere pelaserial e falso(0) enquanto no houver caractere.

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

    {

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

    }

  • 7/25/2019 Apresentao Curso pic

    157/165

    O exemplo 7 exibe uma comunicao serial entreum computador e o microcontrolador. Nesteexemplo ser enviado pela serial o valor de tensosempre que houver a chegada do caractere

    pela

    serial.

  • 7/25/2019 Apresentao Curso pic

    158/165

    Desenvolva um sistema onde seja possvel ligar oudesligar cada LED independentemente atravs decomandos enviados pelo terminal do computador.

  • 7/25/2019 Apresentao Curso pic

    159/165

  • 7/25/2019 Apresentao Curso pic

    160/165

    write_eeprom (endereo, valor);

    Exemplo:

    #define END_VOLUME 10 // endereo na EEPROM

    volume++; //incrementa o valor

    write_eeprom(END_VOLUME,volume);//salva na EEPROM endereo 10

  • 7/25/2019 Apresentao Curso pic

    161/165

    read_eeprom (endereo

    Exemplo:

    #define END_VOLUME 10 //endereo

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

    //Endereo 10 da EEPROM

  • 7/25/2019 Apresentao Curso pic

    162/165

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

  • 7/25/2019 Apresentao Curso pic

    163/165

    Desenvolva uma aplicao onde seja armazenadona EEPROM o valor de uma Varivel de 16 bits.

  • 7/25/2019 Apresentao Curso pic

    164/165

    Desenvolver um controlador de temperatura dotipo ON/OFF, onde ser ajustado um valor paraser mantido no display e o sistema controlar asada para manter esta temperatura.

    Recursos utilizados: Conversor A/D para leitura do sensor de temperatura; Interrupo; Varredura de displays;

    Leitura de teclas; Acionamento de rele.

  • 7/25/2019 Apresentao Curso pic

    165/165

    Fbio B. de Souza www.fbseletronica.wordpress.com [email protected]

    mailto:[email protected]:[email protected]:[email protected]