Latch is a kind of memory of one bit. Let's use the picture in manual: ![Generic I/O Port Operation][1] When you write a bit in a I/O pin, you're storing this bit from Data Bus to the Data Register ([D-FlipFlop][2]). If TRISx of this bit is 0, so data from Q of the Data Register will be in the I/O pin. Write in LATx or PORTx is the same. See below in red: ![Generic I/O Port Operation Write][3] On the other hand, read from LATx is different of read from PORTx. When you're reading from LATx, you're reading what is in the Data Register ([D-FlipFlop][4]). See picture below in green: ![Generic I/O Port Operation Read LATx][5] And when you read from PORTx, you're reading the actual I/O pin value. See below in blue: ![Generic I/O Port Operation Read PORTx][6] PIC uses read-modify-write to write operations and this can be a [problem][7], so they use this shadow register to avoid it. [1]: https://i.sstatic.net/iCogk.png [2]: http://en.wikipedia.org/wiki/Flip-flop_%28electronics%29 [3]: https://i.sstatic.net/E2xz3.png [4]: http://en.wikipedia.org/wiki/Flip-flop_%28electronics%29 [5]: https://i.sstatic.net/Qluvl.png [6]: https://i.sstatic.net/wdvIE.png [7]: http://marcansoft.com/uploads/readmodifywrite.pdf