Você está na página 1de 13

microcontroladores PIC Portas I/O - Entrada/Sada

ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
80
Portas I/O - Entrada/Sada
Funcionalidades e Funes
Uma das mais importantes funcionalidades do microcontrolador, o nmero de pinos I/O usados para ligao
aos perifricos externos. Neste caso do PIC16F887, h um total de 35 pinos I/O de uso geral.
De maneira a que o funcionamento dos pinos I/O coincida com a organizao a 8 bits, todos eles esto, simi-
larmente aos registos, agrupados em Portas denominadas A, B, C, D e E.
Todas tem caractersticas em comum:
Por razes prticas, a maioria dos pinos I/O tm vrias funes. Se um pino usado para uma qualquer
funo, no pode ser usado como I/O;
Cada porta tem um par, isto , o correspondente registo TRIS: TRISA, TRISB, TRISC, TRISD e TRISE,
que determina o funcionamento, mas no o contedo.
Limpando os bits do TRIS (bit=0), o correspondente pino da Porta congurado como Sada.
De igual forma, activando os bits do TRIS (bit=1), o correspondente pino da Porta congurado como En-
trada.
Esta regra simples de memorizar: 0 = Output (Sada), 1 = Input (Entrada)

microcontroladores PIC Portas I/O - Entrada/Sada


ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
81
Portas I/O - Entrada/Sada
Registos PORTA e TRISA
A Porta A um registo de 8 bits bidireccionais. Os bits do TRISA e ANSEL controlam os pinos da PORTA.
Todos os pinos da PORTA funcionam como I/O digital, e cinco deles ainda podem trabalhar como entradas
analgicas (descritas a AN):
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
82
Similarmente aos bits do TRISA, que determinam quais dos pinos vo ser congurados como entrada ou
sada, os bits respectivos do ANSEL determinam quais os pinos que vo ser usados como entradas analgicas
ou I/O digitais.
RA0 = AN0 (determinado pelo bit ANS0 do registo ANSEL);
RA1 = AN1 (determinado pelo bit ANS1 do registo ANSEL);
RA2 = AN2 (determinado pelo bit ANS2 do registo ANSEL);
RA3 = AN3 (determinado pelo bit ANS3 do registo ANSEL); e
RA5 = AN4 (determinado pelo bit ANS4 do registo ANSEL).
Cada bit desta porta tem uma funco adicional, relacionada com algum perifrico interno. Estas funes
adicionais vo ser discutidas mais frente.
Unidade ULPWU
O microcontrolador normalmente usado em dispositivos que tem que funcionar periodicamente e, comple-
tamente independentemente, usando energia de baterias. Nestes casos, o consumo de energia dever ser o mais
reduzido possvel e prioritrio. Exemplos tpicos dessas so: termmetro, sensores de deteco de incndio e
produtos de baixo consumo similares. Tambm sabido que, uma reduo na frequncia de relgio reduz o
consumo energtico, ento, uma das mais convenientes solues para esta situao reduzir o relgio (usar um
cristal de 32KHz em vez de 4MHz ou 20MHz).

microcontroladores PIC Portas I/O - Entrada/Sada


ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
83
Colocar o microcontrolador em modo de adormecido
(Sleep) outro passo a dar. No entanto, mesmo com ambas
as medidas aplicadas, outra situao aparece. Como acordar
o microcontrolador, e coloc-lo em modo normal de opera-
o. obviamente necessrio ter um sinal externo, que mude
de estado lgico em um dos pinos. Mesmo assim, a situao
ainda persisnte. Este sinal dever ser gerado por electrnica
adicional, o que causa um aumento do consumo de energia
do sistema.
A soluo ideal ser a de, o microcontrolador, acordar szinho peridicamente, o que perfeitamente possvel.
O circuito que o permite fazer, mostrado aqui.
O princpio de operao simples:
Um pino congurado como sada, e activado a nvel lgico 1. Isso causa o condensador ser carregado.
Imediatamente depois, o mesmo pino congurado como entrada. A mudana de estado lgico, habilita uma
interrupo, e o microcontrolador posto em modo Sleep.
Seguidamente no h nada a fazer, excepto aguardar que o condensador se descarregue, atravs da corrente
de fuga que ui pelo pino de entrada. Quando isso ocorre, uma interrupo gerada e o microcontrolador
continua a execuo do programa em modo normal. A sequncia outra vez repetida.
Teoricamente, esta uma soluo perfeita. O problema que, todos os pinos possveis de gerar uma interrup-
o, so digitais, e tem uma corrente de fuga excessivamente grande, quando a sua voltagem no est prxima
dos limites de Vdd ou Vss. Neste caso, o condensador descarregado rapidamente, pois a corrente de descarga
de vrias centenas de microamperes. Esta a razo pela qual o circuito ULPWU foi desenhado para ter lentas
quedas de tenso, e muito baixo consumo. A sua sada gera uma interrupo, enquanto que a entrada ligada
a um dos pinos do microcontrolador. Est no pino RA0. Vendo a gura abaixo, com R=200ohms e C=1nF,
descarrega em aproximadamente 30ms, enquanto que o consumo total do microcontrolador reduz-se em 1000
vezes (algumas centenas de nanoamperes).
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
84
Unidade ULPWU
Registos PORTB e TRISB
A Porta B um registo de 8 bits bidireccionais. Os bits do registo TRISB determinam a funo dos seus
pinos.
Similarmente Porta A, um 1 lgico no registo TRISB, congura o pino respectivo como entrada, e vice-versa.
Seis pinos desta porta podem ser congurados como entrada analgica (AN). Os bits do registo ANSELH
determinam quais destes pinos vo trabalhar como entradas analgicas ou I/O digitais.
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
85
RB0 = AN12 (determinado pelo bit ANS12 do registo ANSELH);
RB1 = AN10 (determinado pelo bit ANS10 do registo ANSELH);
RB2 = AN8 (determinado pelo bit ANS8 do registo ANSELH);
RB3 = AN9 (determinado pelo bit ANS9 do registo ANSELH);
RB4 = AN11 (determinado pelo bit ANS11 do registo ANSELH); e
RB5 = AN13 (determinado pelo bit ANS13 do registo ANSELH).
Cada bit desta porta tem uma funo adicional, relacionada com algum perifrico interno. Estas funes adi-
cionais vo ser discutidas mais frente.
Todos os pinos desta porta tem resistncias pull-ups internas, o que faz deles ideais para ligar botes-
de-presso, interruptores, foto-acopladores, entre outros. De forma a ligar estas resistncias s portas dos
microcontroladores, o bit apropriado do registo WPUB deve ser activado.
Alm dos bits do WPUB, h outro bit que afecta a operao das resistncias pull-up: o bit RBPU do registo
OPTION_REG. um bit de uso geral, porque afecta a instalao global destas resistncias.
Sendo de alta impedncia, estes resistncias virtuais no afectam os pinos congurados como sadas, mas
servem de extraordinria ajuda para as entradas. Assim, esto ligadas s entradas dos circuitos lgicos CMOS.
De outra maneira, comportar-se-iam como se estivessem a utuar, devido ao estado de alta impedncia.

microcontroladores PIC Portas I/O - Entrada/Sada


ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
86
Resistncias de Pull-up
Se habilitado, cada pino da Porta B congurado como entrada, pode causar uma interrupo, mudando o
seu estado lgico. De maneira a habilitar os pinos que podem gerar a interruo, o bit respectivo no registo
IOCB dever ser activado.
Devido a estas particularidades, os pinos da Porta B so normalmente usados para ligar botes-de-presso, ou
teclados, pois no h necessidade de perder ciclos de programa a fazer o varrimento destas entradas.

microcontroladores PIC Portas I/O - Entrada/Sada


ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
87
Exemplo de Teclado
Quando os pinos X, Y e Z esto conguradas como sadas activadas ao estado lgico 1, apenas necessrio
esperar por um pedido de interrupo, que chega quando qualquer boto premido. Fazendo, ento, o var-
rimento das teclas, pode encontrar-se qual a que est a ser premida.
Pino RB0/INT
O pino RB0/INT uma fonte verdadeira de interrupo externa. Pode ser congurado para reagir a um anco
ascendente ou descentence. O bit INTEDG do registo OPTION_REG selecciona qual o sinal.
Pinos RB6 e RB7
O leitor j deve ter notado que o microcontrolador PIC no tem quaisquer pinos especiais para a programao
(escrever para a memria de programa). Os pinos I/O normalmente usados para o funcionamento normal, so
usados para este m (RB6 para o clock e RB7 para dados). Tambm, necessrio alimentar o chip com 5V em
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
88
Vdd e 0V em Vss, como tambm a tenso de programao Vpp da FLASH (12-14V). Durante a programa-
o, a tenso Vpp aplicada no pino de Reset (MCLR).
Apesar destas ligaes serem necessrias, o microcontrolador pode ser gravado mesmo estando j montado
no sistema nal. Normalmente, um programa j gravado pode ser alterado pelo mesmo processo. Esta funo
chama-se ICSP (In-Circuit Serial Programming - Programao Srie Dentro do Circuito).
necessrio planear o sistema, se se pretende usar esta funcionalidade.
No nada de complicado, basta instalar um conector de 5 pinos no sistema a gravar, para que as tenses do
hardware programador possam aceder ao microcontrolador. De maneira a que estas tenses no interram
com a restante electrnica, dever ser pensado um circuito para travar as mesmas, usando resistncias, dodos
ou jumpers.
Ligao ICSP
Registos PORTC e TRISC
A Porta C um registo de 8 bits bidireccionais. Os bits do registo TRISC determinam a funo dos seus pinos.
Todas as funes adicionais desta porta, sero explicadas mais frente.
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
89
Registos PORTD e TRISD
A Porta D um registo de 8 bits bidireccionais. Os bits do registo TRISD determinam a funo dos seus
pinos.
Registos PORTE e TRISE
A Porta E um registo de 8 bits bidireccionais. Os bits do registo TRISE determinam a funo dos seus pinos.
A nica excepo o pino RE3, que apenas serve de entrada, e o seu bit TRIS l sempre 1.
microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
90
Similarmente s Portas A e B, trs pinos podem ser congurados como entradas analgicas. Os bits do registo
ANSELH determinam se o pino vai funcionar como entrada analgica (AN), ou se como I/O digital :
RE0 = AN5 (determinado pelo bit ANS5 do registo ANSELH);
RE1 = AN6 (determinado pelo bit ANS6 do registo ANSELH); e
RE2 = AN7 (determinado pelo bit ANS7 do registo ANSELH).
Registos ANSEL e ANSELH
Ambos estes registos so usados para congurar os pinos como analgico, ou I/O digital.

microcontroladores PIC Portas I/O - Entrada/Sada


ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
91
Como faz-lo:
Para congurar um pino como entrada analgica, o bit respectivo do ANSEL, ou ANSELH, dever ser acti-
vado a 1. Para congurar o pino como I/O digital, o bit respectivo dever ser desactivado (0).
O estado dos bits ANSEL, no tem qualquer efeito nas funes de sada digitais. O resultado de qualquer
tentativa de leitura de um pino congurado como entrada analgica, 0.


microcontroladores PIC Portas I/O - Entrada/Sada
ant ni o sr gi o sena
www. senaeng. com : : pr oj ect os e sol ues em el ect r ni ca
+351. 967033209
92
Quando se projecta um sistema, escolher a porta atravs da qual o microcontrolador vai comunicar com os
perifricos circundantes. Se se pretender usar apenas I/O digitais, pode escolher-se qualquer das portas. Se
se pretender usar algumas das entradas analgicas, dever escolher-se as portas apropriadas que suportam
essa congurao, AN0-AN13;
Qualquer pino pode ser congurado como entrada ou sada, excepto o RE3 apenas como entrada. Os bits
dos TRISA, TRISB, TRISC, TRISD e TRISE, determinam como os respectivos pinos das PORTA,
PORTB, PORTC, PORTD e PORTE se vo comportar;
Se se usarem quaisquer entradas analgicas, activar o bit respectivo no ANSEL e ANSELH, no incio do
programa;
Se se usarem interruptores ou botes-de-presso, devero ser ligados Porta B, porque esta tm resistncias
de pull-up. O uso destas resistncias habilitado pelo bit RBPU no OPTION_REG, e onde a activao
de resistncias individualmente possivel nos bits do WPUB; e
normalmente necessrio reagir, assim que os pinos de entrada mudam de estado lgico. No entanto, no
necessrio escrever um programa para mudar o estado lgico dos pinos. mais simples ligar estas entradas
aos pinos da PORTB, e habilitar a interrupo a cada mudana de estado lgico. Os bits dos registos
IOCOB e INTCON servem para tal.