Jeder Port hat ein data direction register (DIR) und ein Datenausgangs Register (OUT). Das Dateneingangs Register (IN) wird verwendet, um die Portpins zu lesen. Der Pinzustand kann auch eingelesen werden, wenn der Pin als Ausgang konfiguriert ist.
Codebeispiel Port als Ausgang
Zusätzlich hat jeder Pin ein Pin configuration register (PINnCTRL) für zusätzliche Einstellungen. Ein Pin kann als totem-pole, wired-AND oder wired-OR konfiguriert werden, Ebenso ist einstellbar, dass Ein- und Ausgang invertiert werden.
Bei einem totem-pole Ausgang sind vier verschiedene pull-Konfigurationen möglich:
- Totem-pole (push-pull)
- Pull-down
- Pull-up
- Bus-keeper
Der Bus-keeper ist in beide Richtigen aktiv.
Codebeispiel Port als Eingang mit pull up pull down
Pull-up und pull-down sind nur beim Eingang aktive Widerstände. Bei wired-AND und wired-OR sind die optionalen pull-up und pull-down sowohl bei Eingängen als auch bei Ausgängen aktiv.