können wir den 8051-Pin gleichzeitig als Ein- und Ausgang verwenden?

Ist es möglich, den 8051-Mikrocontroller gleichzeitig als Eingang und Ausgang zu verwenden? Wenn ich einen bestimmten Pin als Eingang verwende und wie ich ihn dann auch als Ausgang mache. Sagen Sie mir bitte, dass ich gerade in einem Mikrocontroller geboren wurde

Denken Sie, wie würden Sie so etwas in einer Hardware implementieren? Und wie würden Sie es verwenden?
Meinen Sie damit, denselben Pin einmal als Eingang und dann zu einem anderen Zeitpunkt als Ausgang zu verwenden? Der Versuch, beides gleichzeitig zu tun, würde nicht viel Sinn machen ... es sei denn, Sie befürchten, dass Ihre Ausgangsleitung von einem externen Treiber übersteuert wird.
Ist es möglich, Code zu schreiben, dass derselbe Pin als Eingang fungiert (dh etwas vom Eingang liest) und den Wert ausgibt, den wir an diesem Pin gelesen haben, indem wir ihn verbinden?
@chakravarthimerugumalli Sie könnten das tun, indem Sie den Pin kurz in einen Eingang verwandeln, den Wert lesen und dann wieder zu einem Ausgang werden. Wenn es schnell genug gemacht wird, würden Sie das Blinken der LED nicht sehen. Möglicherweise benötigen Sie einen Treiber für die LED, je nachdem, wie die Spannungen funktionieren.
Wenn ich "1" in den Ausgangspin schreibe, befindet sich der Pulldown-Transistor im Aus-Zustand. Sein logischer Wert (5) ist derselbe wie beim Schreiben der "1" in den Eingangspin. Puffer in der Portstruktur unterscheiden Eingang und Ausgang? ? oder Anleitung wird das machen??

Antworten (2)

Die ursprünglichen 8051 und 80C51 haben sogenannte pseudo-bidirektionale E/A-Pins – sie sind Open-Drain mit internen Pullups (einige Pins erfordern möglicherweise externe Pullup-Widerstände). Sie haben (oder brauchen) also nicht die Richtungsregister, die Sie vielleicht von moderneren Mikrocontroller-Familien kennen als den ziemlich altmodischen MCS-51).

Um also einen Pin als Eingang zu verwenden, schreiben Sie eine '1' in das jeweilige Bit und lesen den Pin. Was auch immer an den "Eingang" angeschlossen ist, muss mehr Strom aufnehmen können, als der Pullup liefert.

Es ist nicht möglich, einen Pin als Eingang zu verwenden, wenn er auf '0' gesetzt ist (der Pull-Down-Transistor ist ziemlich stark).

Die Quellstromfähigkeit des Pins, wenn er als Ausgang verwendet wird, ist auf das begrenzt, was der Pullup liefern kann (obwohl es einen "starken" Source-Transistor gibt, der kurz aufleuchtet, wenn der Pin von "0" auf "1" geschaltet wird). Laden Sie die mit dem Pin verbundene Streukapazität schnell auf.

Bearbeiten :

Hier ist das bidirektionale Port-Bild, das Anfängern und anderen wie mir helfen könnte, die dieser wunderbaren Antwort gerade ein Bild hinzugefügt habenGeben Sie hier die Bildbeschreibung ein

Bearbeiten: Das obige ist eine vereinfachte Ansicht, die hinzugefügt wurde, kennen Sie meine Antwort. Ich werde sie belassen, da sie nützlich sein kann, aber für eine vollständigere Ansicht überprüfen Sie diese neuere Antwort.

Ist es zwingend erforderlich, die Port-Pins zu Beginn des Programms als Eingang oder Ausgang zu deklarieren, oder können wir beliebige deklarieren, wo wir wollen? (In der Mitte des Codes kann ich diese Pins als Eingang oder Ausgang initialisieren)
Sie können sie jederzeit und beliebig oft ändern, unabhängig davon, ob die Pins im alten Stil pseudo-bidirektional oder echte bidirektionale Push-Pull-CMOS-Pins sind.
PS Natürlich sollten Sie sie vor der Verwendung einrichten , normalerweise zu Beginn Ihres Programms, aber Sie können den Modus später beliebig ändern.

Die älteren 8051-Mikrocontroller-Ports sind nicht dieselben wie andere modernere Mikrocontroller, die häufig gemischte Ein- und Ausgänge am selben Port haben können. Wenn ich mich richtig erinnere, müssen beim Standard-8051 alle Pins desselben Ports entweder als alle Eingänge oder alle Ausgänge gleichzeitig verwendet werden.