as portas de ios do pic

11
Centro de Tecnologia Microgenios - Todos os direitos reservados Clique aqui para Imprimir o doc umento As Portas de I/O's 1.0 Introdução as Portas de I/O 1.1 PORTA 1.2 PORTB 1.3 PORTC 1.4 PORTD 1.5 PORTE Introdução as portas de I/O Os microcontroladores PIC possuem pinos físicos destinados à comunicação de dados com os circuitos externos. Através desses pinos podemos enviar níveis lógicos (0 ou 1) para, por exemplo, acender ou apagar um LED, acionar displays LCD, ler botões e sensores, etc. O microcontrolador PIC18F452 da Microchip possuem 34 pinos de escrita e leitura (I/O), os quais estão divididos em quatro portas chamadas: PORTA, PORTB, PORTC, PORTD e PORTE.

Upload: francisco-josivan

Post on 16-Dec-2015

8 views

Category:

Documents


0 download

DESCRIPTION

Parte 05

TRANSCRIPT

  • Centro de Tecnologia Microgenios - Todos os direitos reservados

    Clique aqui para Imprimir o doc umento

    As Portas de I/O's

    1.0 Introduo as Portas de I/O

    1.1 PORTA

    1.2 PORTB

    1.3 PORTC

    1.4 PORTD

    1.5 PORTE

    Introduo as portas de I/O

    Os microcontroladores PIC possuem pinos fsicos destinados

    comunicao de dados com os circuitos externos. Atravs desses

    pinos podemos enviar nveis lgicos (0 ou 1) para, por exemplo,

    acender ou apagar um LED, acionar displays LCD, ler botes e sensores, etc.

    O microcontrolador PIC18F452 da Microchip possuem 34 pinos de

    escrita e leitura (I/O), os quais esto divididos em quatro portas chamadas: PORTA, PORTB, PORTC, PORTD e PORTE.

  • figura 01

    Os PORTB, PORTC e PORTD possuem 8 pinos de I/O cada, enquanto o PORTE possue 3 pinos de I/O e PORTA 6 pinos de I/O.

    Cada porta de I/O possui dois registradores que controlam suas funes: um registrador PORT e um registrador TRIS.

    Os registradores PORT (PORTA, PORTB, PORTC, PORTD,

    PORTE) que so posies na RAM que contm os dados das portas

    paralelas (I/O's) do microcontrolador. Qualquer escrita realizada em

    um desses registros automaticamente altera todo o contedo presente na sada do chip.

    O registrador TRIS utilizado para configurar cada pino da respectiva

    porta como entrada ou sada. Assim, cada bit do registrador

    corresponde a um pino da porta. Se o bit estiver em 1 (um), o pino

    correspondente esta configurado como entrada de dados, e se estiver em 0 (zero) configuramos este pino como sada de dados.

    As portas de comunicao paralela do PIC so utilizadas para efetuar

    diversas tarefas:

    voltar para o topo da pgina

    PORTA

  • A primeira porta a ser estudada a PORTA. Alm das funes de entrada e

    sada de dados encontramos tambm diversas outras funes multiplexadas aos pinos da PORTA:

    Vamos conhecer as funes de cada pino da PORTA:

    PINO FUNO TIPO DESCRIO

    2 RA0 / AN0 I/O -

    entrada Pino de entrada e sada de uso geral / entrada do

    conversor AD0

    3 RA1 / AN1 I/O -

    entrada Pino de entrada e sada de uso geral / entrada do

    conversor AD1

    4 RA2 / AN2 /Vref- I/O -

    entrada -

    entrada

    Pino de entrada e sada de uso geral/ entrada do

    conversor AD2 / entrada analgica de referncia

    baixa

    5 RA3 / AN3 / Vref+ I/O -

    entrada -

    entrada

    Pino de entrada e sada de uso geral / entrada do

    conversor AD3 / entrada analgica de referncia

    alta

    6 RA4 / T0CKI I/O -

    entrada -

    entrada

    Pino de entrada e sada de uso geral / entrada de

    contador T0 do timer0

    7 RA5/AN4/SS/LVDIN

    I/O -

    entrada -

    entrada -

    entrada

    Pino de entrada e sada de uso geral / entrada do

    conversor AD4 / entrada de seleo SPI, detector

    de baixa voltagem.

    14 OSC2 / CLK1/ RA6 sada -

    sada -

    I/O

    sada do cristal oscilador / entrada do clock exteno

    / entrada e sada de uso geral

    Registrador PORTA

    Figura 02

    O resistrador PORTA esta localizado na memria RAM do PIC e possui o

    endereo (0XF80). Este registrador ir acessar os pinos da PORTA da seguinte maneira:

    BIT 0 do registrador PORTA -> atua sobre o bit RA0 BIT 1 do registrador PORTA -> atua sobre o bit RA1

  • BIT 2 do registrador PORTA -> atua sobre o bit RA2 BIT 3 do registrador PORTA -> atua sobre o bit RA3 BIT 4 do registrador PORTA -> atua sobre o bit RA4 BIT 5 do registrador PORTA -> atua sobre o bit RA5 BIT 6 do registrador PORTA -> atua sobre o bit RA6

    Toda a porta de I/O possui internamente um latch de sada para cada pino.

    Dessa forma, uma escrita no registrador PORTA ir na realidade escrever em cada latch do PORTA.

    Para ler um dado na PORTA, basta ler o contedo do registrador PORTA.

    Nota: O registrador PORTA o "espelho" dos pinos da PORTA do PIC, para lermos ou escrevermos nesse

    registrador estamos na verdade atuando sobre os pinos

    do port respectivamente. No podemos esquecer que o registrador TRISA tambm afeta a leitura e escrita no

    port.

    Alm de operar como I/O de uso geral, o PORTA, pode ser

    configurado como entrada analgica. Para isso, faz necessrio que o

    programador venha a programar os pinos do PORTA como entrada

    analgica, atravs do registrador ADCON1.

    Nota: aps o reset do seu microcontrolador, os pinos do PORTA e

    PORTE vem configurados como A/D (entrada analgica), caso

    queiramos acionar por exemplo um rel com um pino deste PORT,

    precisamos configurar adequamente este pino como I/O atravs do

    registrador ADCON1.

    Conhecendo o registrador ADCON1:

  • X pode ser 0 ou 1

    Figura 03

    O registrador ADCON1 responsvel por determinar quais os pinos do

    PORTA e PORTE (com excesso de RA4) sero entrada analgica ou

    digital. Repare que na tabela (figura 03) para configurarmos todos os

    pinos do PORTA como entrada digital, ou seja, como I/O de uso geral,

    basta carregar o valor ADCON1 = 0B00000111; ou ADCON1 =

    0B00000110;

    Exemplo de programa:

    void main() {

    adcon1 = 0b00000111; // configura pinos do PORTA e

    PORTE como I/O digital

    trisa.f0 = 0; //configura pino RA0 como saida

    porta.F0 = 1; // envia nivl lgico 1 no pino RA0

    }

    Podemos definir determinadas tenses externas de referncia para nosso

    conversor analgico / digital, atravs dos pinos RA2 (AN2) e RA3

    (AN3). Podemos tambm programar nossa referncia de tenso do

    conversor A/D como sendo VSS e VDD, ou seja, a prpria tenso de

    alimentao do chip. Neste caso, os pinos RA2 e RA3 podero ser

    utilizados como entrada analgica, ou como I/O de uso geral.

    Registrador TRISA

    O registrador TRISA utilizado para o controle da direo de atuao

    de cada pino de I/O do PORTA. Atravs desse registradores definimos

    e configuramos o modo de trabalho do pino do microcontrolador

    como entrada ou sada de dados.

    Este registrador define os pinos do PORTA da seguinte maneira:

    BIT 0 do registrador TRISA -> atua sobre o bit RA0 BIT 1 do registrador TRISA -> atua sobre o bit RA1 BIT 2 do registrador TRISA -> atua sobre o bit RA2 BIT 3 do registrador TRISA -> atua sobre o bit RA3 BIT 4 do registrador TRISA -> atua sobre o bit RA4 BIT 5 do registrador TRISA -> atua sobre o bit RA5 BIT 6 do registrador TRISA -> atua sobre o bit RA6

    Se o bit do registrador TRISA estiver em nvel lgico 1, o pino correspondente a este bit do PORTA estar configurado como entrada.

    Se o bit do registrador TRISA estiver em nvel lgico 0, o pino correspondente

    a este bit do PORTA estar configurado como sada.

    void main() {

    trisa = 0b00000000; //configura todos os pinos do

    PORTA como saida

  • trisb = 0b00001111; //configura somente os pinos de

    RB7 a RB4 do PORTB como saida

    trisa.f0 = 0; //configura pino RA0 como saida

    trise.f2 = 1; //configura pino RE2 como entrada de

    dados

    trisc.f1 = 1; //configura pino RC1 como entrada de

    dados

    }

    Aprendendo como configurar os pinos do PIC18F452:

    Exemplo:

    Com base no circuito eletrnico abaixo, vamos configurar os registradores de direo de pinos:

    void main() {

    adcon1 = 0b00000110; //configura pinos do PORTA e

    PORTE como I/O digital

    trisa.f0 = 0; //configura RA0 do PORTA como saida

    trisa.f2 = 0; //configura RA2 do PORTA como saida

    trisa.f4 = 0; //configura RA4 do PORTA como saida

    porta = 0b00010101; //ascende somente todos os leds.

    trisb.f0 = 1; //configura pino RB0 como entrada de

    dados

    trisb.f3 = 1; //configura pino RB3 como entrada de

    dados

    trisb.f7 = 1; //configura pino RB7 como entrada de

    dados

    }

  • No circuito acima, os pinos RA0, RA2, RA4 dO PORTA so

    responsveis pelo acionamento dos leds. Devemos configurar o

    PORTA como sada, pois nosso objetivo "escrever" no port, ou seja, enviar "0" ou "1" lgico nos pinos do PORTA correspondente.

    Os pinos RB0, RB3 e RB7 do PORTB tem a funo de "ler" os estados

    das teclas, quando as teclas esto soltas temos nvel lgico 1 nos

    pinos, quando a tecla pressionada, o estado do pino alterado para

    nvel 0. Devemos configurar o PORTB como entrada, pois iremos "ler" o estados dos pinos, ou seja, o estados das teclas.

    Seguindo o mesmo raciocnio lgico, vamos programar o PIC abaixo de forma

    que todos os leds pisquem a cada segundo.

    void main(){

    trisd = 0; //configura todos os pinos do PORTC como saida

    portd = 0; //inicia programa com portd em zero

    while(1){ //lao de repetio

    portd = 0; //apaga todos os leds

    delay_ms(1000); //delay de 1 segundo

    portd = 0b11111111; //envia nvel lgico 1 em todos os pinos do

    PORTD

    delay_ms(1000); //delay de 1 segundo

    }

    }

    Exerccio:

  • Com base na tabela (figura 03), programa os pinos RA0, RA1 e RA3

    como entrada analgica, as demais entradas analgicas devero ser

    programadas como I/O digital.

    void main(){

    adcon1 = 0b00000100; //configura pinos RA0, RA1, RA3

    do PORTA entrada analgica

    }

    Leitura do LATCH de um pino do PIC

    Para ler o LATCH de sada do microcontrolador ao invs do pino

    utilizamos o registrador LATA, referente ao PORTA, ou LATB,

    referente ao PORTB. O latch de sada encontra-se antes do buffer de sada do pino, e por esse motivo podemos ler seu estado.

    voltar para o topo da pgina

    PORTB

    O PORTB, tal qual o PORTA, implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:

    PINO FUNO TIPO DESCRIO

    33 RB0 / INT0 I/O -

    entrada Pino de entrada e sada de uso geral / interrupo

    externa 0

    34 RB1 / INT1 I/O -

    entrada Pino de entrada e sada de uso geral / interrupo

    externa 1

    35 RB2 / INT2 I/O -

    entrada Pino de entrada e sada de uso geral / interrupo

    externa 2

    36 RB3 / CCP2 I/O -

    I/O Pino de entrada e sada de uso geral / mdulo CCP

    37 RB4 I/O Pino de entrada e sada de uso geral / pino de

    interrupo por mudana de nvel

    38 RB5/PGM I/O -

    I/O

    Pino de entrada e sada de uso geral (interrupo

    por mudana de estado) / pino de habilitao ICSP

    baixa voltagem

    39 RB6 / PGC I/O -

    I/O

    Pino de entrada e sada de uso geral (interrupo

    por mudana de estado) / pino ICSP In-Circuit

    Debugger

    40 RB7 / PGD I/O -

    I/O

    Pino de entrada e sada de uso geral (interrupo

    por mudana de estado) / pino ICSP In-Circuit

    Debugger

    Assim como no PORTA, o PORTB possui dois registradores que definem o modo

    de trabalho dos seus pinos de I/O: so eles: PORTB e TRISB. Tanto o registrador PORTB quanto o registrador TRISB esto localizados na

    memria RAM do PIC e pertencem aos SFR'S (Registradores de Funes Especiais). O registrador TRISB tem as mesmas funes que o registrador TRISA estudado

    anteriormente, que programar os pinos do PIC para serem entradas ou sadas. O registrador PORTB funciona da mesma maneira descrita no PORTA.

  • voltar para o topo da pgina

    PORTC

    O PORTC, tal qual o PORTA, implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:

    PINO FUNO TIPO DESCRIO

    15 RC0/T10S0/T1CKI I/O -

    sada -

    entrada

    Pino de entrada e sada de uso geral / sada do

    oscilador timer1 / entrada oscilador timer1 /

    timer3

    16 RC1 / T10S1 /

    CCP2

    I/O -

    entrada

    -sada

    Pino de entrada e sada de uso geral / entrada

    do oscilador timer1 / mdulo CCP2

    17 RC2/CCP1 I/O -

    I/O Pino de entrada e sada de uso geral / mdulo

    CCP2

    18 RC3/SCK/SCL I/O -

    I/O -

    I/O

    Pino de entrada e sada de uso geral / entrada

    e sada do clock serial para o modo SPI /

    entrada e sada do clock serial para o modo

    I2C

    23 RC4/SDI/SDA I/O -

    entrada

    - I/O

    Pino de entrada e sada de uso geral / entrada

    de dados SPI / entrada e sada de dados I2C

    24 RC5/SD0 I/O -

    sada Pino de entrada e sada de uso geral / sada de

    dados SPI

    25 RC6/TX/CK I/O -

    sada -

    I/O

    Pino de entrada e sada de uso geral / canal de

    transmisso UART / clock de sincronismo

    UART

    26 RC7/RX/DT I/O -

    entrada

    - I/O

    Pino de entrada e sada de uso geral / canal de

    recepo UART / clock de sincronismo

    UART

    Assim como no PORTA, o PORTC possui dois registradores que definem o modo

    de trabalho dos seus pinos de I/O: so eles: PORTC e TRISC. Tanto o registrador PORTC quanto o registrador TRISC esto localizados na

    memria RAM do PIC e pertencem aos SFR'S (Registradores de Funes Especiais). O registrador TRISC tem as mesmas funes que o registrador TRISA estudado

    anteriormente, que programar os pinos do PIC para serem entradas ou sadas. O registrador PORTC funciona da mesma maneira descrita no PORTA. As funes especiais de cada pino sero vistas quando estudarmos suas

    aplicaes reais atravs dos projetos que vamos desenvolver durante nosso curso.

    voltar para o topo da pgina

    PORTD

    O PORTD, tal qual o PORTA, PORTB e PORTC implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:

    PINO FUNO TIPO DESCRIO

    19 RD0/PSP0 I/O - entrada e sada de uso geral / porta de

  • I/O comunicao paralela

    20 RD1/PSP1 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    21 RD2/PSP2 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    22 RD3/PSP3 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    27 RD4/PSP4 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    28 RD5/PSP5 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    29 RD6/PSP6 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    30 RD7/PSP7 I/O -

    I/O

    entrada e sada de uso geral / porta de

    comunicao paralela

    Assim como nas outras portas, o PORTD possui dois

    registradores que definem o modo de trabalho dos

    seus pinos de I/O: so eles: PORTD e TRISD. Tanto o registrador PORTD quanto o registrador TRISD

    esto localizados na memria RAM do PIC e pertencem

    aos SFR'S (Registradores de Funes Especiais). O registrador TRISD tem a funo de programar os

    pinos do PIC para serem entradas ou sadas. O registrador PORTD o "espelho" dos pinos do PORTD

    do PIC, para lermos ou escrevermos nesse registrador

    estamos na verdade atuando sobre os pinos do port

    respectivamente. No podemos esquecer que o

    registrador TRISD tambm afeta a leitura e escrita no

    port. As funes especiais de cada pino sero vistas quando

    estudarmos suas aplicaes reais atravs dos projetos que vamos desenvolver durante nosso curso.

    voltar para o topo da pgina

    PORTE

    O PORTE, tal qual as outras portas, implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:

    PINO FUNO TIPO DESCRIO

    8 RE0/RD/AN5 I/O Pino de entrada e sada de uso geral / controle de

    leitura do port paralelo / entrada analgica AD5

    9 RE1/WR/AN6 I/O Pino de entrada e sada de uso geral / controle de

    escrita do port paralelo / entrada analgica AD6

    10 RE2/CS/AN7 I/O Pino de entrada e sada de uso geral / controle de

    seleo do port paralelo / entrada analgica AD7

  • Assim como nas outras portas, o PORTE possui dois registradores que

    definem o modo de trabalho dos seus pinos de I/O: so eles: PORTE

    e TRISE. Tanto o registrador PORTE quanto o registrador TRISE esto

    localizados na memria RAM do PIC e pertencem aos SFR'S

    (Registradores de Funes Especiais). O registrador TRISE tem a funo de programar os pinos do PIC para

    serem entradas ou sadas. O registrador PORTE o "espelho" dos pinos do PORTE do PIC, para

    lermos ou escrevermos nesse registrador estamos na verdade

    atuando sobre os pinos do port respectivamente. No podemos

    esquecer que o registrador TRISE tambm afeta a leitura e escrita no

    port. As funes especiais de cada pino sero vistas quando estudarmos

    suas aplicaes reais atravs dos projetos que vamos desenvolver durante nosso curso.

    voltar para o topo da pgina

    Centro de Tecnologia Microgenios - Curso de Microcontroladores PIC - Programao

    em C

    Microgenios 1998 - 2008. Todos os direitos reservados. proibido cpia parcial ou

    integral desse material sem prvio aviso. Maiores informaes:

    [email protected]