7.2.1. Mode 0
[p. 1080]
Dieser Mode ist als eine Erweiterung der Ein- und Ausgabeleitungen. In diesem Mode werden die Daten über den Portausgang P3.0 (RxD-Leitung) ein bzw. ausgelesen und der Takt (shift clock) über den Portausgang P3.1
(TxD-Leitung) geliefert. Die Baudrate ist dabei fix bei 1/12 der Oszillatorfrequenz eingestellt. Bei der Übertragung werden 8 Datenbits gesendet oder empfangen, wobei das LSB immer an erster Stelle steht.
Senden:
Die Übertragung eines Zeichens wird immer dann gestartet, wenn das Zeichen im SBUF-Register hinterlegt wird ( MOV SBUF, source ), also wenn SBUF als Zielregister angesprochen wird. Nachher vergeht ein Maschinenzyklus, um danach "send" zu aktivieren. Durch das Aktivieren von "send" wird P3.0 (Erweiterung) und P3.1 (shift clock) ebenfalls aktiviert. Der shift clock ist im Maschinen Zyklus während S3, S4 und S5 Low und high zwischen S6, S1 und S2 (siehe untere Zeichnung). Während die Datenbits nach rechts hinausgeschoben werden, folgen von links lauter Nullen. Nachdem das MSB hinausgeschoben wurde, enthält SBUF folgendes Bitmuster: 0000 0001
Der 1 ergibt sich daraus, daß am Anfang der Übertragung in das 9.bit (TB8) eine 1 geladen wurde. Tritt nun das obige Bitmuster auf, bedeutet dies; daß das Zeichen übertragen wurde und SBUF leer ist
( Ende der Übertragung TI=1).
Empfangen:
Der Empfang wird durch den Löschvorgang von RI gestartet. Dadurch wird in das Empfangsregister Folgendes
Bitmuster geladen: 1111 1111 0
Wenn jetzt die einzelnen Bits eintreffen wird der Nullen immer weiter nach links geschoben, bis er im 9 Bit (RB8) landet und dort bekannt gibt, daß ein Zeichen fertig übertragen wurde (Zeichen empfangen RI=1).Das empfangene Zeichen kann dann aus dem SBUF-Register ausgelesen werden.
Timing-Diagramm:
[p. 1084]
7.2.2. Mode 1
[p. 1080]
Dieser Mode stellt die eigentliche serielle Schnittstellenfunktion dar. In diesem Fall werden 10 Bits über die RxD-Leitung (Portausgang 3.0) eingelesen oder über die TxD-Leitung (Portausgang 3.1) übertragen. Bei den 10 Bits
handelt es sich um ein Startbit, acht Datenbits und ein Stopbit. Die Baudrate ist in diesem Mode veränderlich.
Senden:
Angedeutet wird eine Sendung dadurch, daß SBUF als Zielregister verwendet wird. Gestartet wird die Übertragung mit dem Erscheinen eines Startbits, welches über einen Counter auf seine Richtigkeit überprüft wird (damit kein Spike eine Übertragung auslösen kann). Es entsteht hier die gleiche Prozedur wie bei Mode 0 ( 1 in TB8 laden, aktivieren von "send"). Tritt das oben bei der Sendung erwähnte Bitmuster auf ist die Sendung beendet.
Empfang:
Auch hier geschieht ähnliches wie bei Mode 0. Der Empfang wird gestartet durch ein Startbit, wobei in das Empfangsschieberegister wieder 1111 1111 0 geladen wird. Durch den Empfang der Bits wandert der Nuller wieder ins 9 Bit (RB8) und gibt das Ende bekannt. Es müssen jedoch folgende zwei Bedingungen erfüllt sein um RI setzen zu können:
1. RI=0
2. SM2=0 oder Stopbit=1
Sind diese Bedingungen nicht erfüllt, dann sind die übertragenen Daten verloren.
Timing-Diagramm:
[p. 1085]
7.2.3. Mode 2
[p. 1080]
Hier werden bei der Übertragung 11 Bits entweder über die RxD-Leitung empfangen oder über die TxD-Leitung gesendet. Bei den 11 Bits handelt es sich um ein Startbit, 8 Datenbits, ein programmierbares neuntes Datenbit und einem Stopbit. Bei der Sendung kann der Wert des neunten Bits über das Special Function Register SCON (TB8) eingestellt werden, oder es besteht auch die Möglichkeit das Paritybit aus dem PSW (Program Status Word) in TB8 zu übernehmen. Für Senden und Empfangen gelten gleiche Prozeduren wie bei Mode 1. Beim Empfang geht das neunte Bit automatisch in RB8 vom SCON-Register.
Die Baudrate ist hier entweder auf 1/32 oder 1/64 der Oszillatorfrequenz programmierbar.
Timing-Diagramm:
[p. 1086]
7.2.4. Mode 3
[p. 1080]
Hier gilt genau das gleiche wie für Mode 2, nur daß hier die Baudrate variabel ist.
Timing-Diagramm:
[p. 1087]
|