|
|
- Alle drei Tore
sind 8 Bit breit und können bidirektional betrieben werden.
Jedes Bit eines Tores kann unabhängig von den anderen, als
Eingang oder Ausgang verwendet werden. Man nennt diesen Umstand,
das Tor sei bitadressierbar. Das Bild zeigt das
Schaltschema eines Torbits im Inneren des Mikrocontrollers. Am
Pin Px.y tritt das Signal aus.
-

-
Hardwarebeschreibung: -
Jeder der acht Torausgang wird durch ein
D-Flipflop gebildet, wie es oben zu sehen ist. In dieses
Flipflop kann die CPU mit dem internen Signal WRITE LATCH als
Taktsignal, einen Wert über den internen DATENBUS
hineinschreiben. Dies geschieht z.B. durch den Befehl mov Px,
A der gleich alle 8 FlipFlops des Tores Px mit den 8 Bits
des Akkumulators beschreibt. Die CPU kann aber auch jedes
einzelne Bit beschreiben, was über den Befehl mov Px.y,
C geschehen würde .. C ist in diesem Befehl das
CarryFlag .. und als Bitadressierbarkeit bezeichnet wird.
-
-
Schreibvorgang (write): -
Wurde das FlipFlop auf log 0 gesetzt,
erscheint an seinem Ausgang Q1 eine log.1. Diese läßt
den Transistor durchschalten. Das Potential am Ausgangspin fällt
von High auf Low (Px.y = 0).
-
Ist der Transistor geschlossen, so
erscheint die Spannung Vcc über den 50k Ohm- Widerstand am
Pin (Px.y = 1). Das 1-Signal ist wegen des großen
Widerstandwertes relativ hochohmig und treibt deswegen nur
CMOS-Eingänge.
-
-
Lesevorgang, direkt (read): -
Neben den Befehlen die in das Flipflop
beschreiben, gibt es auch solche die den Torspeicher zum
direkten Lesen der externen Signalzustände am Tor Px
freigeben. Diese Befehle aktivieren das interne READ PIN-
Lesesignal, das über den Treiber, das Torsignal, auf den
internen Datenbus durchschaltet. Zu ihnen gehört im
Besonderen der Befehl mov A, Px. Durch diesen
Befehl würden alle acht externen Signalzustände an den
Eingängen (Pins) des Tores x in den Akkumulator übertragen
werden.
-

-
Eingangstor zum Lesen initialisieren: -
Die Tore der Mikrocontroller sind
gegenüber anderen Torbausteinen hardwaremäßig
sehr einfach aufgebaut. Daraus ergibt sich die Besonderheit, daß
die Tore auf ihre Arbeit vorbereitet werden müssen, sie
müssen initialisiert werden.
-
Soll ein TorBit als Eingang benutzt
werden, so muß es zuvor per Programm auf log 1 gesetzt
werden. Dies kann durch einen Schreibbefehl von einer 1 auf das
Tor geschehen. Dadurch sperrt der Transistor im Ausgang des
Flipflops. Der Pin geht dann über den internen
Pull-Up-Widerstand auf High und kann nun durch ein externes
Signal auf Low gezogen werden. Nach einem RESET sind zwar alle
Tore auf 1 gesetzt, also Eingänge, ...
-
aber wenn das Tor zuvor als Ausgang
benutzt worden wäre und auf log 0 stünde, so würde
ein 1-Signal am Eingang zu einem 'Kurzschluß' über
den offenen Transistor gegen GND führen. Das wäre
bedenklich, insbesondere dann, wenn anders als oben im Bild kein
Schalter, sondern eine niederohmige 5V-Spannungsquelle das 1
Signal erzeugen würde. ...
-
also Eingänge vor der ersten
Benutzung durch einen Scheibbefehl wie mov Px, #0FFh auf
log 1 setzen (initialisieren).
-
-
Lesevorgang, indirekt (read): -
Nicht alle Befehle die einen Lesevorgang
am Tor bewirken setzen das READ PIN -Lesesignal. Bei einigen
Befehlen wird der Ausgang Q2 des Flipflops gelesen. Dazu wird
das interne Signal READ LATCH aktiviert. Dies betrifft verdeckte
Lesevorgänge. Diese sind notwendig, wenn der Pin als
Ausgang benutzt wird.
-

-
Treibt z.B. ein Portpin die Basis eines
externen Transistors und wird log 1 in das entsprechende Latch
geschrieben, dann ist dieser Transistor durchgeschaltet. Würde
die CPU jetzt den Portpin lesen, so würde die Basisspannung
des Transistors und somit log 0 zurückgegeben. Liest die
CPU jedoch den Ausgang Q des Flipflops anstelle des Signals am
Pin, erhält sie den korrekten Wert log 1. Ein Befehl, der
einen indirekten Lesevorgang beinhaltet ist z.B der Befehl ANL
Px, A. Bei ihm sollen die logischen Setzungen am Tor mit dem
Inhalt des Akkumulators durch UND verknüpft und das
Resultat zum Tor ausgegeben werden. Damit diese Ausgabe
stattfinden kann muß die CPU zunächst das Tor lesen,
um dann die geforderte UND-Operation mit dem Akkumulator
vornehmen zu können. Dieser verdeckte Lesevorgang benutzt
nicht die Signale am PIN, sondern liest den Ausgang Q des
Flipflops.
|
|