Вы находитесь на странице: 1из 11

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
2
3
4

14

FUNO

TIPO

I/O RA0 / AN0


entrada
I/O RA1 / AN1
entrada
I/O RA2 / AN2 /Vref- entrada entrada
I/O RA3 / AN3 / Vref+ entrada entrada
I/O RA4 / T0CKI
entrada entrada
I/O entrada RA5/AN4/SS/LVDIN
entrada entrada
sada OSC2 / CLK1/ RA6 sada I/O

DESCRIO
Pino de entrada e sada de uso geral / entrada do
conversor AD0
Pino de entrada e sada de uso geral / entrada do
conversor AD1
Pino de entrada e sada de uso geral/ entrada do
conversor AD2 / entrada analgica de referncia
baixa
Pino de entrada e sada de uso geral / entrada do
conversor AD3 / entrada analgica de referncia
alta
Pino de entrada e sada de uso geral / entrada de
contador T0 do timer0
Pino de entrada e sada de uso geral / entrada do
conversor AD4 / entrada de seleo SPI, detector
de baixa voltagem.
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
BIT
BIT
BIT
BIT

2
3
4
5
6

do
do
do
do
do

registrador
registrador
registrador
registrador
registrador

PORTA
PORTA
PORTA
PORTA
PORTA

->
->
->
->
->

atua
atua
atua
atua
atua

sobre
sobre
sobre
sobre
sobre

o
o
o
o
o

bit
bit
bit
bit
bit

RA2
RA3
RA4
RA5
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
BIT
BIT
BIT
BIT
BIT
BIT

0
1
2
3
4
5
6

do
do
do
do
do
do
do

registrador
registrador
registrador
registrador
registrador
registrador
registrador

TRISA
TRISA
TRISA
TRISA
TRISA
TRISA
TRISA

->
->
->
->
->
->
->

atua
atua
atua
atua
atua
atua
atua

sobre
sobre
sobre
sobre
sobre
sobre
sobre

o
o
o
o
o
o
o

bit
bit
bit
bit
bit
bit
bit

RA0
RA1
RA2
RA3
RA4
RA5
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;
PORTA como saida

//configura todos os pinos do

trisb = 0b00001111; //configura somente


RB7 a RB4 do PORTB como saida
trisa.f0 = 0; //configura pino RA0 como
trise.f2 = 1; //configura pino RE2 como
dados
trisc.f1 = 1; //configura pino RC1 como
dados
}

os pinos de
saida
entrada de
entrada de

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

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


entrada
externa 0
I/O Pino de entrada e sada de uso geral / interrupo
34
RB1 / INT1
entrada
externa 1
I/O Pino de entrada e sada de uso geral / interrupo
35
RB2 / INT2
entrada
externa 2
I/O 36
RB3 / CCP2
Pino de entrada e sada de uso geral / mdulo CCP
I/O
Pino de entrada e sada de uso geral / pino de
37
RB4
I/O
interrupo por mudana de nvel
Pino de entrada e sada de uso geral (interrupo
I/O 38
RB5/PGM
por mudana de estado) / pino de habilitao ICSP
I/O
baixa voltagem
Pino de entrada e sada de uso geral (interrupo
I/O 39
RB6 / PGC
por mudana de estado) / pino ICSP In-Circuit
I/O
Debugger
Pino de entrada e sada de uso geral (interrupo
I/O 40
RB7 / PGD
por mudana de estado) / pino ICSP In-Circuit
I/O
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.
33

RB0 / INT0

voltar para o topo da pgina

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

PINO
15

16
17

18

FUNO

TIPO

I/O RC0/T10S0/T1CKI sada entrada


I/O RC1 / T10S1 /
entrada
CCP2
-sada
I/O RC2/CCP1
I/O
RC3/SCK/SCL

I/O I/O I/O

DESCRIO
Pino de entrada e sada de uso geral / sada do
oscilador timer1 / entrada oscilador timer1 /
timer3
Pino de entrada e sada de uso geral / entrada
do oscilador timer1 / mdulo CCP2
Pino de entrada e sada de uso geral / mdulo
CCP2
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

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


entrada
de dados SPI / entrada e sada de dados I2C
- I/O
I/O - Pino de entrada e sada de uso geral / sada de
24
RC5/SD0
sada
dados SPI
I/O - Pino de entrada e sada de uso geral / canal de
25
RC6/TX/CK
sada - transmisso UART / clock de sincronismo
I/O
UART
I/O - Pino de entrada e sada de uso geral / canal de
26
RC7/RX/DT
entrada
recepo UART / clock de sincronismo
- I/O
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.
23

RC4/SDI/SDA

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


19 RD0/PSP0 I/O -

DESCRIO
entrada e sada de uso geral / porta de

20

RD1/PSP1

21

RD2/PSP2

22

RD3/PSP3

27

RD4/PSP4

28

RD5/PSP5

29

RD6/PSP6

30

RD7/PSP7

I/O
I/O I/O
I/O I/O
I/O I/O
I/O I/O
I/O I/O
I/O I/O
I/O I/O

comunicao paralela
entrada e sada de uso geral / porta de
comunicao paralela
entrada e sada de uso geral / porta de
comunicao paralela
entrada e sada de uso geral / porta de
comunicao paralela
entrada e sada de uso geral / porta de
comunicao paralela
entrada e sada de uso geral / porta de
comunicao paralela
entrada e sada de uso geral / porta de
comunicao paralela
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


8

RE0/RD/AN5

I/O

RE1/WR/AN6

I/O

10

RE2/CS/AN7

I/O

DESCRIO
Pino de entrada e sada de uso geral / controle de
leitura do port paralelo / entrada analgica AD5
Pino de entrada e sada de uso geral / controle de
escrita do port paralelo / entrada analgica AD6
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:
suporte@microgenios.com.br

Вам также может понравиться