Steuerprogramm für den Datensender



Zeichen, die der Datensender in serieller Form ausgeben soll, gelangen stets durch OUT-Befehle aus dem Akkumulator des Prozessors in das Senderregister der Schnittstelle. Vorher muß der Prozessor jedoch das Statusbit TxRDY prüfen, um festzustellen, ob das Senderregister frei oder besetzt ist. Nur bei freiem Senderregister darf er ein neues Zeichen ausgeben. Ist das Senderregister besetzt, so muß der Prozessor warten, bis es freigeworden ist. Da die Statusabfrage den Akkuwert verändert, wird das auszugebende Zeichen im Register C der CPU zwischengespeichert, um anschließend wieder für die Ausgabe bereitzustehen.
Bild 70 zeigt das Flußdiagramm und das Programm SEND für den Datensender. Der erste Befehl (MOV C,A) kopiert den Inhalt des Akkumulators in das Register C. Anschließend wird das Statusregister der seriellen Schnittstelle durch IN OF1 in den Akkumulator des Prozessors eingelesen. Nun erfolgt die Überprüfung von Bit DO. Hat DO einen L-Pegel, ist der Datensender besetzt und kann im Moment kein neues Zeichen aufnehmen. Führt DO jedoch H-Pegel, ist der Datensender frei und kann ein neues Zeichen erhalten.
Zur Überprüfung, ob das Statusbit DO H- oder L-Pegel besitzt, dient der Befehl ANI 01, der Bit für Bit eine UND-Verknüpfung des Akku-Inhalts mit dem Wert 01 bildet. Diesen Vorgang nennt man maskieren, da durch die Maske 01 die nicht benötigten Bits Dl bis D7 abgedeckt (unterdrückt) werden. Nur DO bleibt noch wirksam.
Hat DO L-Pegel, führt die UND-Verknüpfung zum Gesamtergebnis null. In diesem Fall wird der bedingte Sprungbefehl JZ STATUS ausgeführt und das Statusregister erneut überprüft. Dies geschieht so lange, bis DO durch H-Pegel meldet, daß der Sender frei ist.





Nun ist das Gesamtergebnis der UND-Verknüpfung nicht mehr null. Daher wird der Befehl JZ STATUS übergangen und an dessen Stelle der Befehl MOV A,C ausgeführt. Hierdurch gelangt das auszugebende Zeichen aus dem C-Register in den Akkumulator zurück. Der folgende Befehl OUT OFO bewirkt die Ausgabe des Zeichens an das Senderregister. Danach wird das Unterprogramm SEND durch den Rück-sprungbefehl RET wieder verlassen.