Je nach Gehäuseform und Ausstattung besitzen die Mikrocontroller der MSP430-Familie eine Anzahl mehrerer universeller I/O-Ports. Ein Port ist hierbei eine Gruppierung von acht bidirektionalen I/O-Anschlüssen, die über ein Register des Prozessors angesteuert werden. Diese I/O-Anschlüsse werden als Pins bezeichnet. Da der Mikrocontroller mehr Peripherie-Funktionalität als Beinchen besitzt, existiert eine funktionelle Mehrfachbelegung der Ein- und Ausgangsports. Das heißt, verschiedene interne Peripheriemodule müssen sich einen Ausgangspin teilen und es muss per Konfiguration festgelegt werden, welche nun den Ausgang verwenden kann.
In Abbildung 2.1 ist die Anschlussbelegung des MSP430F149 dargestellt. Alle digitalen I/O-Ports werden mit der Kennung P, gefolgt von der Nummer des Byteports, einem Punkt und der Nummer des Pins gekennzeichnet. P2.5 ist demnach der Pin 5 (Zählung beginnt bei 0!) des Byteports 2 (Zählung beginnt bei 1). Insgesamt verfügt beispielsweise der MSP430F149 über 6 Ports mit jeweils 8 Bit = 48 digitale I/O-Pins.
Um mit einem Digitalport arbeiten zu können, muss dieser zunächst initialisiert werden. Um jetzt einem Port die Funktion ”Digital I/O” zuzuweisen, besitzt jeder Port ein spezielles Register, das Function-Select- Register (PxSEL). Mit diesem wird die gewünschte Funktion ausgewählt, ob jetzt der Port als allgemeiner I/O Port genutzt werden kann oder ein internes Funktionsmodul (z.B. der A/D Wandler) Zugriff auf den Port hat. Als Nächstes muss der CPU des MSP430 mitgeteilt werden, ob auf den Port lesend oder schreibend zugegriffen werden soll. Dazu besitzt jeder Byteport P1 bis P6 ein Richtungsregister (Direction-Register, PxDIR). Den Status eines Ports kann man dann mit dem Input- (PxIN) und Output- (PxOUT) Register lesen bzw. setzen.
Digitalport | Input | Output | Function-Select | Direction |
P1 | P1IN | P1OUT | P1SEL | P1DIR |
P2 | P2IN | P2OUT | P2SEL | P2DIR |
P3 | P3IN | P3OUT | P3SEL | P3DIR |
P4 | P4IN | P4OUT | P4SEL | P4DIR |
P5 | P5IN | P5OUT | P5SEL | P5DIR |
P6 | P6IN | P6OUT | P6SEL | P6DIR |
Tabelle 2.1.: | Die wichtigsten Register für die digitalen I/O-Ports des MSP430F149 |
Eine Übersicht über die wichtigsten Register für die digitalen I/O-Ports ist in Tabelle 2.1 aufgelistet. Port1 und Port2 verfügen darüber hinaus noch über spezielle Register für Interrupts. Alle Register liegen im Speicher des Controllers ab der Adresse 0x0020h bis 0x001Bh. In der Software erfolgt der Zugriff auf das Register entweder über die absolute Adresse (umständlich und schlecht portierbar) oder über die symbolischen Konstanten gleichen Namens. Jedes Register kann eine 8 Bit breite Zahl aufnehmen. Die sich daraus ergebende binäre Darstellung in 0 und 1 definiert für jeden einzelnen Pin eines Byteports die Datenrichtung, Funktion oder Ein- und Ausgabestatus.