Академический Документы
Профессиональный Документы
Культура Документы
umento
As Portas de I/O's
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:
PORTA
PINO
2
3
4
14
FUNO
TIPO
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.
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
}
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
os pinos de
saida
entrada de
entrada de
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
}
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
}
PORTB
O PORTB, tal qual o PORTA, implementa diversas outras funes multiplexadas
aos seus pinos, acompanhe:
DESCRIO
RB0 / INT0
PORTC
O PORTC, tal qual o PORTA, implementa diversas outras funes multiplexadas
aos seus pinos, acompanhe:
PINO
15
16
17
18
FUNO
TIPO
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
RC4/SDI/SDA
PORTD
O PORTD, tal qual o PORTA, PORTB e PORTC implementa diversas outras
funes multiplexadas aos seus pinos, acompanhe:
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
PORTE
O PORTE, tal qual as outras portas, implementa diversas outras funes
multiplexadas aos seus pinos, acompanhe:
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.