PORT is the OUTPUT buffer, PIN is the INPUT buffer.
When you want to set the pin to a "high" or "low" voltage, write to the PORT register.
When you want to know what voltage is currently presented to a pin, read the PIN register.
The bits of these registers represent the corresponding pins of the general-purpose input/output port.
Here is a simplified schematic of the electronics inside the AVR connected to a single pin (go here for complete datasheets).
This circuit block is repeated for each pin. Eight of these form a port (port A, for example).
Starting at the left-most square (which represents the physical connection to the outside world), you can see three paths:
- The upper-most path is the software selectable pull-up resistor
- The middle path is used when the pin is configured as an output
- The lowest path is used when the pin is configured as an input
It should be noted that some or all of this circuitry can be bypassed when the pin is shared with an internal peripheral. For example, the Analog-to-Digital Converter (ADC).