Du willst also eine Matrix-Tastatur einlesen...
>Ich setze in der Tastaturmatrix die Spalten an den Port 1
>und die Zeilen an den Port 3.
>Dann schalte ich alle Zeilen (Port 3) auf Eingang, alle Spalten (Port 1)
>auf Ausgang.
(Mit dem MSP kenne ich mich nicht aus, deswegen die AVR-Variante:)
Die Ausgänge schaltest du auf Masse. Bei den Eingängen brauchst du dann
den (hoffentlich vorhandenen) internen Pullup (einschalten!).
Wenn keine Taste gedrückt ist, werden die Eingänge als logsisch "1"
gelesen.
Wurde eine Taste gedrückt, kann man die Zeile per (1<<x) (0<=x<=4)
ausmaskieren.
Dann muß man die beiden Ports in ihrer Funktion umdrehen:
Eingänge werden zu Ausgängen und Ausgänge zu Eingängen.
Dann kann man auf gleiche Weise zur Zeile die Spalte herausfinden.
Die AVR240 von Atmel befasst sich mit dem Problem...