Das Register, das den Arbeitsmodus der seriellen Schnittstelle steuert, ist das SCON-Steuerregister, das zur Steuerung der Auswahl, des Empfangs und der Übertragung serieller Kommunikationsmethoden verwendet wird und den Status der seriellen Schnittstelle anzeigt kann entweder byteadressierbar oder bitadressierbar sein, die Byteadresse ist „98H“ und die Adressbits sind „98H~9FH“.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, DELL G3-Computer.
SCON (Serial Control Register), ein Steuerregister für die serielle Schnittstelle, das zur Steuerung der Auswahl verwendet wird der seriellen Kommunikationsmethoden Empfangen und Senden, die den Status des seriellen Ports anzeigen. SCON kann entweder byteadressierbar oder bitadressierbar sein. Seine Byteadresse ist 98H und die Adressbits sind 98H~9FH.
Struktur:
Arbeitsmodus (SM0 SM1)
(1) Modus 0 (SM0 SM1:0 0): Der Arbeitsmodus 0 der seriellen Schnittstelle ist der Schieberegister-E/A-Modus , Es kann an ein externes Schieberegister, einen Erweiterungs-E/A-Port oder ein externes synchrones E/A-Gerät angeschlossen werden. Sendevorgang: Beim Ausführen einer „MOVSBUF,A“-Anweisung wird der Sendevorgang gestartet, der Schiebeimpuls wird von TXD ausgegeben und die Daten in SBUF werden von RXD serialisiert. Nach dem Senden von 8-Bit-Daten wird automatisch TI=1 gesetzt und ein Interrupt angefordert. Um mit dem Senden fortzufahren, muss TI durch eine Anweisung freigegeben werden. Empfangsvorgang: REN ist das Steuerbit für die Empfangsfreigabe der seriellen Schnittstelle. Bei REN=0 ist der Empfang verboten; bei REN=1 ist der Empfang erlaubt. Wenn die Software REN auf „1“ setzt, beginnt sie mit der Eingabe von Daten vom RXD-Port mit der Baudrate fosc/12. Wenn 8-Bit-Daten empfangen werden, wird das Interrupt-Flag RI auf „1“ gesetzt. Bevor erneut Daten empfangen werden, muss RI per Software auf 0 zurückgesetzt werden.
(2) Modus 1 (SM0 SM1:0 1): Der serielle Port ist eine universelle asynchrone 10-Bit-Schnittstelle. Ein Rahmen gesendeter oder empfangener Dateninformationen besteht aus 10 Bits, einschließlich 1 Startbit „0“, 8 Datenbits und 1 Stoppbit „1“. Daten senden: Daten werden vom TXD-Port ausgegeben. Wenn die Daten in den Sendepuffer SBUF geschrieben werden, wird der Sender mit dem Senden begonnen. Setzen Sie nach dem Senden eines Datenrahmens das Interrupt-Flag TI = 1, beantragen Sie einen Interrupt und benachrichtigen Sie die CPU, dass die nächsten Daten gesendet werden können. Daten empfangen: Stellen Sie zunächst REN = 1 ein (Empfang von Daten zulassen). Wenn ein Datenrahmen abgeschlossen ist, setzen Sie das Interrupt-Flag RI=1, beantragen Sie einen Interrupt und benachrichtigen Sie die CPU, die empfangenen Daten von SBUF zu übernehmen. (3) Modus 2 (SM0 SM1:1 0): Der serielle Port ist eine asynchrone 11-Bit-Kommunikationsschnittstelle. Das Senden oder Empfangen eines Informationsrahmens umfasst 1 Startbit „0“, 8 Datenbits, 1 programmierbares Bit und 1 Stoppbit „1“. Senden von Daten: Stellen Sie TB8 vor dem Senden zunächst per Software entsprechend dem Kommunikationsprotokoll auf „Paritätsbit“ oder „Datenidentifikationsbit“ ein und schreiben Sie dann die zu sendenden Daten in SBUF, um den Sender zu starten. Der Übertragungsprozess wird gestartet, indem ein beliebiger Befehl mit SBUF als Zielregister ausgeführt wird, 8-Bit-Daten in SBUF geladen werden und TB8 auch in das 9. Bit des Übertragungsschieberegisters geladen wird, und dann von TXD (P3.1) aus gestartet wird gibt einen Datenrahmen aus. Daten empfangen: Setzen Sie zuerst REN=1, um den seriellen Port zum Empfangen von Daten zu aktivieren, und setzen Sie außerdem RI auf „0“. Anschließend wird basierend auf dem Status von SM2 und dem Status des empfangenen RB8 entschieden, ob der serielle Port nach Eintreffen der Informationen RI = 1 setzt und einen Interrupt beantragt, um die CPU über den Empfang der Daten zu informieren. Wenn SM2=0 ist, ist RI=1 gesetzt, unabhängig davon, ob RB8 „0“ oder „1“ ist, und dieser serielle Port empfängt die gesendeten Informationen. Wenn SM2 = 1 und RB8 = 1, bedeutet dies, dass bei der Kommunikation mit mehreren Maschinen die empfangenen Informationen „Adressrahmen“ sind. Stellen Sie zu diesem Zeitpunkt RI = 1 ein und die serielle Schnittstelle empfängt die gesendete Adresse. Wenn SM2 = 1 und RB8 = 0, bedeutet dies, dass es sich bei der Kommunikation mit mehreren Maschinen um einen „Datenrahmen“ handelt, der jedoch nicht an den Slave gesendet wird. Zu diesem Zeitpunkt ist RI nicht auf „ gesetzt. 1", daher gehen die empfangenen Informationen im SBUF verloren. Der Datenrahmen geht verloren. (4) Modus 3 (SM0 SM1:1 1): Es handelt sich um einen asynchronen 11-Bit-Kommunikationsmodus mit variabler Baudrate. Bis auf den Unterschied in der Baudrate sind die anderen Modi dieselben wie Modus 2. Weitere Informationen zu diesem Thema finden Sie in der Spalte „FAQ“!
Das obige ist der detaillierte Inhalt vonWelches Register steuert die Funktionsweise der seriellen Schnittstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!