Página 1 de 1

Dúvida na direção dos PORTs do PIC

MensagemEnviado: 17 Nov 2008 15:32
por lpagano
Pessoal,

Será que existe algum conflito na configuração abaixo para um PIC 18F4520?

Código: Selecionar todos
TRISB = 0b00000001;       // só o RB0 como entrada

a = 0b00001111;

PORTB = a << 1;         // PORTB = 0b00011110


Nesse caso o PORTB.RB0 estaria em zero, mas como o TRISB declarou esse pino como saída, será que vai ter algum conflito ou posso utilizar o RB0 como entrada sem problemas?

MensagemEnviado: 19 Nov 2008 16:21
por RobL
Se sua pergunta se refere a colocar o PortB0 como entrada e rotacionar os demais, a cada escrita (rotação) ele vai reler o PortB0 novamente (ler o pino). Portanto não terá problema.

MensagemEnviado: 20 Nov 2008 07:20
por lpagano
RobL,

Isso quer dizer que se o TRIS.B0 estiver em 1, mesmo que eu dê um comando para sair um 'zero' no pino RB0 não fará efeito nesse pino, pois o mesmo só funcionará para leitura de dados (inputs)?

Valeu!

MensagemEnviado: 20 Nov 2008 09:31
por RobL
Não terá problema.
O pic trabalha com a seqüência Read, Modify, Write.
Quando você escreve, toda a porta é lida, modificada e reescrita. O pino (porta) que estiver como entrada vai ler o pino e não o buffer.
Portanto, você não consegue escrever de forma a chegar ao pino, se a porta estiver como entrada.
Quando você escreve, escreve nos buffer e os pinos que estiverem como saída (note como saída) vão refletir, nos pinos, o que está no buffer de escrita.
O perigo existirá se houver alguma alteração na direção da porta, separada por uma linha de programa somente, que não é o seu caso.

MensagemEnviado: 20 Nov 2008 11:09
por lpagano
RobL,

Obrigado pela explicação.
Vou fazer isso no meu programa.

Valeu!