Each GPIO pin has an output bit in the GPIO block. These
output bits are the targets of write operations “to the pins”. Two
conditions must be met in order for a pin’s output bit to be driven
onto the pin:
- The pin must be selected for GPIO operation
in the switch matrix.
- The pin must be selected for output by a 1 in its port’s
If either or both of these conditions is (are) not met,
writing to the pin has no effect.
There are multiple ways to change GPIO output bits:
- Writing to a Byte Pin register loads
the output bit from the least significant bit.
- Writing to a Word Pin register loads the output bit with
the OR of all of the bits written. (This feature follows the definition
of “truth” of a multi-bit value in programming languages.)
- Writing to a port’s PORT register loads the output bits
of all the pins written to.
- Writing to a port’s MPORT register loads the output bits
of pins identified by zeros in corresponding positions of the port’s
- Writing ones to a port’s SET register sets output bits.
- Writing ones to a port’s CLR register clears output bits.
- Writing ones to a port’s NOT register toggles/complements/inverts
The state of a port’s output bits can be read from its
SET register. Reading any of the registers described in GPIO Reading pin state returns the state of
pins, regardless of their direction or alternate functions.