Beachten Sie, dass das IODIR-Register (oder wie auch immer es auf Ihrem Prozessor heißt) nur steuert, ob der Ausgabetreiber aktiviert / deaktiviert ist, um die obigen Antworten zu ergänzen (die gut sind). Der Ausgabetreiber und der Eingabetreiber sind unabhängig.
Interessant wird dies, wenn Sie den Status des Pins zurücklesen. Normalerweise stellen Sie fest, dass das Schreiben in das E / A-Register den Ausgangszustand festlegt, das Lesen aus dem E / A-Register jedoch den Eingangszustand. Sind die beiden nicht gleich? Eigentlich nicht immer, wenn noch etwas mit diesem Pin verbunden ist, das den Pin möglicherweise stärker antreibt. Insbesondere wenn der Ausgang Open-Collector / Open-Drain ist, wird der Ausgangstreiber hochohmig, wenn Sie den Ausgang auf 1 setzen, sodass der Pin-Status nicht vom Prozessor gesteuert wird.
Auf den meisten Prozessoren bedeutet dies, dass Sie eine Variable benötigen, die diesen Wert speichert, wenn Sie den Status des Ausgabetreibers verfolgen möchten, da der Prozessor Ihnen keine Möglichkeit bietet, ihn zurückzulesen.
Beachten Sie auch, dass das Hoch- / Herunterziehen völlig unabhängig davon ist, ob der Ausgang angesteuert wird. Interne Pull-Up / Down-Widerstände sind oft praktisch, wenn Sie sich nicht genau um den Widerstand kümmern, da dadurch sichergestellt wird, dass diese Pins standardmäßig den bekannten Wert erreichen. Das Verbinden von Eingängen ist fast immer eine schlechte Praxis, da sich statische Aufladung aufbauen kann, die das Gerät beschädigen kann. Pull-up / down-Widerstände stellen sicher, dass dies nicht geschieht. Sie können auch für Anwendungen verwendet werden, bei denen normalerweise ein Pull-up-Widerstand an einem Eingang vorhanden ist, z. B. ein Druckknopf, der den Eingang auf 0 V treibt. oder bei Anwendungen, bei denen normalerweise ein Pull-up-Widerstand an einem Ausgang vorhanden ist, z. B. Open-Collector- / Open-Drain-Ausgänge. Dies reduziert die Anzahl der Komponenten in Ihrem Schaltplan.