die 8051 (zu denen dein µC gehört) haben ein anderes Konzept zu
Ein/Ausgängen als die meisten anderen µC. Es gibt keine Umschaltung
zwischen Eingang und Ausgang.
Es funktioniert darüber, dass die Ausgangstreiber stark asymmetrisch
sind. Wenn du eine 1 ausgibst, dann wird der Pin nur schwach nach oben
gezogen (µA Bereich, auf Port 0 floatet er sogar völlig). Wenn du außen
einen Treiber an diesen Pin anschließt, dann kann er die 1 locker
übertreiben und den Pegel beliebig festlegen. Wenn kein externer Treiber
angeschlossen ist, dann wird der Pin durch den schwachen Pullup auf 1
gezogen.
Wenn du eine 0 ausgibst, dann wird diese stark nach außen getrieben -
dann sollte möglichst kein externer Treiber versuchen, den Pin auf 1 zu
ziehen, sonst fließt viel Strom.
Also:
- um den Pin als Ausgang zu benutzen einfach den gewünschten Wert
reinschreiben (und an Port 0 zusätzlich externe Pullups vorsehen).
- um den Pin als Eingang zu benutzen einfach 1 reinschreiben, und den
Pegel durch den externen Treiber festlegen lassen.