por proex » 11 Jan 2007 12:40
A principio tanto faz vc mover um dado para o PortB ou para o LatB, pois o resultado sera o mesmo. Ou seja, o PortB é que receberá o dado.
A diferença esta na LEITURA do Port. Se vc lêr o LATB, estará lendo o valor previamente enviado á esse registro e nao o estado atual dos pinos do PORTB.
Nao entendi porque vc teve que dar dois comando para conseguir enviar o valor para o PORTB:
PORTB = 0xffff;
PORTB = 0xffff;
Nos programas que faço, somente um comando é suficiente.
Veja esse exemplo:
;------------------------------------------------------------------------
#include "p24fj128ga006.h"
// #include <stdio.h>
// #include <ports.h>
unsigned int counter;
int main (void)
{
counter = 1;
AD1PCFG = 0XFFFF; // desabilita conversores AD no PORTB
TRISB = 0; // configura PORTB como saida
while(1)
{
PORTB = counter; // envia o valor de "counter" para PORTB
counter = counter+1; // incrementa "counter"
}
return 0;
}
Veja que só há um comando "PORTB = counter" .
Se vc simular esse programa no C30, verá que assim que esse comando for executado, o PORTB assumirá o valor movido.
Veja tambem que nao foi sequer mencionado o LATB nesse programa.