I already read the datasheet and google but I still don\'t understand something.
In my case, I set PIN RC6 of a PIC18F26K20 in INPUT mode:
TRI
Yes, it's normal to read PORTx and LATx and occasionally find they have different values.
When you want to read whether some external hardware is driving a pin high or low, you must set the pin to input mode (with TRIS or the DIR register), and you must read PORTx. That read tells you if the actual voltage at the pin is high or low.
When you want to drive a pin high or low, you must set the pin to output (with TRIS or the DIR register); you should write the bit to the LATx register.
(Writing that bit to the PORTx register may seem to do the right thing: that pin will -- eventually -- go high or low as commanded. But there are many cases -- such as when some other pin on that port is connected to an open-collector bus -- that writing to one bit of the the PORTx register will mess up the state of the other pins on that port, leading to difficult-to-debug problems).
Open Circuits: read before write