rs232-schnittstelle
DESCRIPTION
RS232-SCHNITTSTELLETRANSCRIPT
-
ANHANG COMMODORE PLUS/4COMMODORE FLUS/4 ANHANG
* * *** * ** **** **** * * * *** * *
* RS232-SCHNITTSTELLE ** * ** * ** * ** ** * * * ** ** * *** *
Einfhrung
Der COMMODORE PLUS/4 hat eine eingebaute RS232Schnittstellezum Anschlu von Modems, Drucker oder anderen Peripheriegerten, dieebenfalls mit einer RS232Schnittstelle ausgerstet sind. In der Regelbentigen Sie dazu noch einen Adapter zur Fegelanpessung, da dieSpannungen beim COMMODORE PLUS/4 auf TTLPegel liegen (0. .5V), whrenddie RS232Schnittstelle normalerweise mit Pegeln zwischen 12V und+12V arbeitet.
Die RS232Schnittstelle kann mit einigen einfachen Befehlen vonBasic aus angesprochen werden. Demjenigen, der in Maschinenspracheprogrammiert, stehen einige BetriebssystemRoutinen zur Verfgung, dieer ber den KERNAL aufrufen kann. In diesem Kapitel behandeln wirlediglich den Umgang mit der RS232Schnittstelle von Basic aus.
In Basic benutzt man bei der Arbeit mit der RS232Schnittstelledie normalen Datei-Befehle OFEN, CLOSE, CMD, INPUT#, GET#, PRINT# unddie Statusvariable ST. Hierbei dienen OFEN und CLOSE zum Offnen bzw.Schlieen des RS232Kanals, INPUT# und GET# zum Lesen aus demEmpfangspuffer sowie PRINT# und CMD zum Schreiben in den Sendepuffer.
FFNEN DES RS232KANALS
Durch den OFENBefehl wird der RS232Kanal geffnet und derZeiger des Empfangspuffers zurckgesetzt. Daten, die vorher imEmpfangspuffer standen, sind danach verloren. Mit der OFENAnweisungknnen bis zu 4 Steuerzeichen bertragen werden. Die ersten beidenZeichen werden in das Kontroll und in das Befehisregister geschrieben,die letzten beiden sind fr Erweiterungen reserviert. Die Schreibweisedes OPENBefehls ist,wie folgt:
OFEN lf,2,0, Kontrolicode Befehlscode
lfLogische Filenummer Cl. .255)Bei if > 127 folgt dem Linefeed (Wagenrcklauf)ein Zeilenvorschub.
Kontrolicodesiehe KontrollRegister
Befehlscodesiehe BafehlsRegister
SCHLIESSEN DES RS-232KANALS
Zum Schlieen des RS232Kanals brauchen Sie lediglich CLDSElf einzugeben, wobei fr if dieselbe logische Filenummer angegebenwerdan mu, die im dazugehrigen OFENBefehl verwendet wurde.
Mit dem CLOSEBefehl wird der Puffer gelscht, der Sende undEmpfangsbetrieb beendet und die RTS sowie die SoutLeitung auf highgesetzt.
KONTROLLREGI STER
Ober das Kontrollregister werden die Anzahl der StopBits, dieDatenwortlnge und die Baudrate im InterfateBaustein 6551 eingestellt.
Bit Baudrate3210
O 0 0 0 16 * extern zugefhrter TaktO 0 0 1 5OBaud0 0 1 0 75Baud0 0 1 1 109,92 Baud0 1 0 0 134,58 Baud0 1 0 1 150 Baud0 1 1 0 300Baud0 1 1 1 600Baud1 0 0 0 l200Baud1 0 0 1 lBOOBaud1 0 1 0 2400Baud1 0 1 1 3600 Baud1 1 0 0 4800Baud1 1 0 1 7200 Baud1 1 1 0 9600 Baud1 1 1 1 19200 Baud
Bit 4: EmpfngertaktBit0: Extern zugefhrter Takt1: BaudrateGenerator
Bit Lnge des6 5 Datenwortes
0 0 8Bit0 1 7Bit1 0 6Bit1 1 5Bit
Bit 7: Stopbit0: 1 Stopbit1: Bei Wortlnge 8 Bit plus 1 Farittsbit 1 Stopbit
Bei Wortlnge 5 Bit und kein Parittsbit > 1,5 StopbitsAnsonsten > 2 Stopbits
Bei einem HardwareReset werden alle Bits auf 0 gesetzt. Bei einemProgrammReset wird kein Bit beeinflut.
230231
-
ANHANGCOMMODORE PLUS/4
COMMODORE PLUS/4 ANHANG
BEFEHLS-REGISTER
Ober das BefehisRegister werden spezielle Sende undEmpfangsFunktionen gesteuert.
Bit O:DTR (DatenTerminal bereit)0: Empfang und alle Interrupts unterbinden (BTR high)1: Empfangsbereit, Interrupts werden angenommen (DTH low)
Bit 1: EmpfngerInterrupt0: TRQInterrupt ber Bit 3 des Statusregisters erlaubt1; IRQInterrupt nicht erlaubt
Bit Sende RTS Sender3 2 Interrupt Pege~l
o 0 nicht erlaubt high auso 1 erlaubt 10w ein1 0 nicht erlaubt bw ein1 1 nicht erlaubt 10w Unterbrechung
Bit 4: Normal oder EchoModus fr Empfnger0: Normal1: Echo (Bit 2 und 3 mssen 0 sein)
Bit Funktion567
* * 0 Parittsmodus abgeschaltetEs wird kein Parittsbit erzeugt bzw. empfangen
o o 1 Ungerade ParittSender und Empfnger
o i 1 Gerade ParittSender und Empfnger
1 0 1 Fr Paritt wird immer 1 gesendetParittsprfung abgeschaltet
1 1 Fr Paritt wird immer 0 gesendetParittsprfung abgeschaltet
Bei einem HardwareReset werden alle Bits auf 0 gesetzt. Bei einemProgrammReset werden Bit 0,1,2,3,4 auf 0 gesetzt.
EMPFANG VON DATEN
Der Empfangspuffer des COMMODOREZeichen aufnehmen. Wenn der Puffer vollStatusvariablen ST angezeigt. Weitere Daten,diesem Fall verloren. Man sollte daher dendurch eine Leseanweisung entleeren.
Werden Daten mit hoher Geschwindigkeit bertragen, so ist einMaschinenprogramm erforderlich, um den Datenaustausch vorzunehmen, dadie Basicanweisungen zu langsam sind.232
PLUS/4 kann bis zu 127ist, wird dies in der
die eintreffen, gehen inPuffer immer frhzeitig
Um Daten aus dem Empfangspuffer zu lesen, benutzen Sie ambesten den GET#Befehl. Wenn GET# keine Daten im Puffer vorfindet wirdein (Leerstring) ausgegeben. Die Schreibweis ist: GET# if, Variable
Beim INPUT#Befehl wartet das System solange bis es einZeichen (ungleich Leerstring) gefolgt von einem Wagenrcklauf empfngt.Wenn nun CTS (Clear to send; Sendebereitschaft) oder DSR (Data setready; Betriebsbereitschaft) da angeschlossenen Gertes aufgehobenwerden, und das System in einer INPUT#Warteschleife hngt, kann es nurnoch durch einen RESET zurckgeholt werden. Aus diesem Grund sollte manden TNPUT#Befehl bzw. die CHRINRoutine mglichst nicht benutzen. DieSchreibweise ist: INPUT# lf, Variablenliste
Wenn das empfangene Datenwort krzer als acht Bit ist, so sindalle nicht verwendeten Bits auf 0 gesetzt.
SENDEN VON DATEN
CMD lf (siehe Basic3.5Lexikon)PRINT# lf, Variablenliste
STATUSREGT 5 TER
Solange die entsprechenden Bits 0 sind, liegt kein Fehler vor.
Das Statusregister kann von Basic aus ber die StatusvariableST gelesen werden. Sobald das Register von Basic bzw. derREADSTRoutine abgefragt wurde wird es gelscht. Wenn man dasStatuswort noch bentigt, sollte man es einer anderen Variablenzuweisen. (z.B. : SRST)
Das RS232Statusregister wird nur dann gelesen, wenn dieletzte I/OAnweisung die RS232Schnittstelle betraf.
1 Bit~. Bit
Bitt~ Bit~Bit~~~Bit~Bit
~i. ~ Bit
0: Parittsfehler1: FRAMINGFehler2: Empfngerpuffer voll3 nicht benutzt4: CTSSignal fehlt5: nicht benutzt6: DSRSignal fehlt7: Unterbrechung entdeckt
233
-
ANHANG COMMODORE PLUS/4COMMODORE PLUS/4
ANHANG
234
RS232- PINBELEGUNGPIN Bezeichnung EIA Abk. Eing./Ausg.
C Empfangsdaten (BB) Sin EinD Sendeteil einschalten (CA) RTS AusE Endgert betriebsbereit (CD) DTR AusF Ankommender Ruf (CE) RI EinH Empfangssignalpegel (CF) DCD EinJ nicht benutztK Sendebereitscheft (CB) CTS EinL Betriebsbereitschaft (CC) DSR Ein8 Empfangsdaten (DB) Sin EinM Sendedaten (DA) Sout AusA Schutzerde (AA) GNDN Betrjebserde (AB) GND
Als Beispiel ist hier ein einfaches Programm aufgefhrt.Programm dient zur TeleKommunikation mit anderen Rechnern ber(Akustikkoppler)
100 rom puffer zuordnen, kanal oeffnen101 openS,2,2,cI~r$(22)+chr~(5)120 rem121 rem initialisieren125 a$=130 c$=chr$(166)+chr$(157)135 cs$& +chr$(l57)140 ro$=chr$(18). rf$~chr$(146)150 es$~chr$(27)+(~)160 dim f%(255),t%(255)200 rem201 rem codeumwandlung in usascii220 for j=32 to 64: t%(j)j: next230 t%(13)=13: t%(20)=8240 for j=65 to 90: t%(j)=j+32: next250 for j=91 to 95: t%(j)=j: next260 for j=193 to 218: t%(~)~jl28: next270 t%(146)~16: t%(133)=16280 t%(137)3: t%(134)17: t~(138)~19290 for j=0 to 255300 k=t%(j)310 if k0 then f%(k)=j: f%(k+128)=j320 next j330 scnclr: print chr$(14);340 print Empfangs und Sendeberejt350 print c$;400 rem401 rem empfangen410 get#5,a$: if a$= then 510420 print cs$;chr$(f%(asc(a$)));430 if f%(asc(a$))=34 then print es$;440 print c$;450 goto4lo500 re501 rem senden510 get a$: if a~(= then 410520 print#5,chr$(t%(agc(a$)));530 print cs$;ro$;a$;540 if asc(a$)=34 then print es$;550 print rf$;cS;560 goto 410
DiesesModems
235