Sie sind auf Seite 1von 3

ANHANG

COMMODORE PLUS/4

COMMODORE FLUS/4

ANHANG

SCHLIESSEN DES RS-232KANALS


* * *** * ** **** **** * * * *** * *
*

RS232-SCHNITTSTELLE

Zum Schlieen des RS232Kanals brauchen Sie


lediglich CLDSE
lf einzugeben, wobei fr
if
dieselbe
logische
Filenummer
angegeben
werdan mu, die im dazugehrigen OFENBefehl verwendet wurde.
Mit dem CLOSEBefehl wird der Puffer gelscht, der Sende
und
Empfangsbetrieb beendet und die RTS sowie die
SoutLeitung
auf
high
gesetzt.

* * ** * ** * ** ** * * * ** ** * *** *

Einfhrung
Der COMMODORE PLUS/4 hat
eine
eingebaute
RS232Schnittstelle
zum Anschlu von Modems, Drucker oder
anderen
Peripheriegerten,
die
ebenfalls mit einer RS232Schnittstelle ausgerstet sind. In der Regel
bentigen Sie dazu
noch
einen
Adapter
zur
Fegelanpessung,
da
die
Spannungen beim COMMODORE PLUS/4 auf TTLPegel liegen (0. .5V),
whrend
die RS232Schnittstelle normalerweise mit
Pegeln
zwischen
12V
und
+12V arbeitet.
Die RS232Schnittstelle kann mit einigen einfachen Befehlen von
Basic aus angesprochen
werden.
Demjenigen,
der
in
Maschinensprache
programmiert, stehen einige BetriebssystemRoutinen zur Verfgung,
die
er ber den KERNAL aufrufen
kann.
In
diesem Kapitel
behandeln
wir
lediglich den Umgang mit der RS232Schnittstelle von Basic aus.
In Basic benutzt man bei der Arbeit mit der RS232Schnittstelle
die normalen Datei-Befehle OFEN, CLOSE, CMD, INPUT#, GET#,
PRINT#
und
die Statusvariable ST. Hierbei dienen OFEN und CLOSE
zum Offnen
bzw.
Schlieen
des
RS232Kanals,
INPUT#
und
GET#
zum
Lesen
aus
dem
Empfangspuffer sowie PRINT# und CMD zum Schreiben in den Sendepuffer.
FFNEN DES RS232KANALS
Durch den OFENBefehl wird der
RS232Kanal
geffnet
und
der
Zeiger
des
Empfangspuffers
zurckgesetzt.
Daten,
die
vorher
im
Empfangspuffer standen, sind danach verloren.
Mit
der
OFENAnweisung
knnen bis zu 4 Steuerzeichen
bertragen
werden.
Die
ersten
beiden
Zeichen werden in das Kontroll und in das Befehisregister geschrieben,
die letzten beiden sind fr Erweiterungen reserviert. Die
Schreibweise
des OPENBefehls ist,wie folgt:
OFEN lf,2,0,

KONTROLLREGI STER
Ober das Kontrollregister werden die Anzahl der StopBits, die
Datenwortlnge und die Baudrate im InterfateBaustein 6551 eingestellt.
Bit
3210

Baudrate

O
O
0
0
0
0
0
0
1
1
1
1
1
1
1
1

16

Kontrolicode Befehlscode
0:
1:

lf
Logische Filenummer Cl. .255)
Bei if > 127 folgt dem Linefeed
ein Zeilenvorschub.
Kontrolicode
siehe KontrollRegister
Befehlscode
siehe BafehlsRegister

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

*
extern zugefhrter Takt
5OBaud
75Baud
109,92 Baud
134,58 Baud
150 Baud
300Baud
600Baud
l200Baud
lBOOBaud
2400Baud
3600 Baud
4800Baud
7200 Baud
9600 Baud
19200 Baud

Bit 4: EmpfngertaktBit
Extern zugefhrter Takt
BaudrateGenerator

(Wagenrcklauf)
6

Bit
5

Lnge des
Datenwortes

0
0
1
1

0
1
0
1

8Bit
7Bit
6Bit
5Bit

0:
1:

Bit 7: Stopbit
1 Stopbit
Bei Wortlnge 8 Bit plus 1 Farittsbit 1 Stopbit
Bei Wortlnge 5 Bit und kein Parittsbit > 1,5 Stopbits
Ansonsten > 2 Stopbits

Bei einem HardwareReset werden alle Bits


ProgrammReset wird kein Bit beeinflut.

auf

gesetzt.

Bei

einem

230
231

ANHANG

COMMODORE PLUS/4

BEFEHLS-REGISTER
Ober
das
BefehisRegister
EmpfangsFunktionen gesteuert.

werden

spezielle

Sende

0:
1:

Bit O:DTR (DatenTerminal bereit)


Empfang und alle Interrupts unterbinden (BTR high)
Empfangsbereit, Interrupts werden angenommen (DTH low)

0:
1;

Bit 1: EmpfngerInterrupt
TRQInterrupt ber Bit 3 des Statusregisters erlaubt
IRQInterrupt nicht erlaubt

Sende
Interrupt

RTS
Pege~l

Sender

Bit

o
o

0
1
0
1

nicht erlaubt
erlaubt
nicht erlaubt
nicht erlaubt

high
10w
bw
10w

aus
ein
ein
Unterbrechung

1
1

und

COMMODORE PLUS/4

ANHANG

Um Daten aus dem Empfangspuffer


zu
lesen,
benutzen
Sie
am
besten den GET#Befehl. Wenn GET# keine Daten im Puffer vorfindet
wird
ein
(Leerstring) ausgegeben. Die Schreibweis ist: GET# if, Variable
Beim INPUT#Befehl
wartet das
System
solange
bis
es
ein
Zeichen (ungleich Leerstring) gefolgt von einem Wagenrcklauf empfngt.
Wenn nun CTS (Clear to send;
Sendebereitschaft)
oder
DSR
(Data
set
ready;
Betriebsbereitschaft)
da
angeschlossenen Gertes
aufgehoben
werden, und das System in einer INPUT#Warteschleife hngt, kann es nur
noch durch einen RESET zurckgeholt werden. Aus diesem Grund sollte man
den TNPUT#Befehl bzw. die CHRINRoutine mglichst nicht benutzen.
Die
Schreibweise ist: INPUT# lf, Variablenliste
Wenn das empfangene Datenwort krzer als acht Bit ist, so sind
alle nicht verwendeten Bits auf 0 gesetzt.

SENDEN VON DATEN


CMD lf
(siehe Basic3.5Lexikon)
PRINT# lf, Variablenliste
STATUSREGT 5 TER

Bit 4: Normal oder EchoModus fr Empfnger


0: Normal
1: Echo (Bit 2 und 3 mssen 0 sein)

Bit
567
*

1 Bit 0: Parittsfehler

Bit
Bit
t~ Bit
~Bit
~~~Bit
~Bit
~i. ~ Bit
~.

Funktion
Parittsmodus abgeschaltet
Es wird kein Parittsbit erzeugt bzw.
Ungerade Paritt
Sender und Empfnger
Gerade Paritt
Sender und Empfnger
Fr Paritt wird immer 1 gesendet
Parittsprfung abgeschaltet
Fr Paritt wird immer 0 gesendet
Parittsprfung abgeschaltet

Bei einem HardwareReset werden alle Bits


auf
0
ProgrammReset werden Bit 0,1,2,3,4 auf 0 gesetzt.

gesetzt.

empfangen

1:
2:
3
4:
5:
6:
7:

FRAMINGFehler
Empfngerpuffer voll
nicht benutzt
CTSSignal fehlt
nicht benutzt
DSRSignal fehlt
Unterbrechung entdeckt

Solange die entsprechenden Bits 0 sind,

liegt kein Fehler vor.

Das Statusregister kann von Basic aus ber die


Statusvariable
ST
gelesen
werden.
Sobald
das
Register
von
Basic
bzw.
der
READSTRoutine
abgefragt
wurde
wird
es
gelscht.
Wenn
man
das
Statuswort
noch
bentigt,
sollte man
es
einer
anderen
Variablen
zuweisen. (z.B. : SRST)
Das RS232Statusregister wird
nur
dann
gelesen,
wenn
die
letzte I/OAnweisung die RS232Schnittstelle betraf.
Bei

einem

EMPFANG VON DATEN


PLUS/4
kann
bis
zu
127
Der Empfangspuffer
des
COMMODORE
ist,
wird
dies
in
der
Zeichen aufnehmen.
Wenn
der
Puffer
voll
gehen
in
Statusvariablen ST angezeigt. Weitere Daten, die eintreffen,
Puffer
immer
frhzeitig
diesem Fall verloren. Man sollte
daher
den
durch eine Leseanweisung entleeren.
Werden Daten mit hoher Geschwindigkeit bertragen, so ist
ein
Maschinenprogramm erforderlich, um den Datenaustausch
vorzunehmen,
da
die Basicanweisungen zu langsam sind.
232

233

ANHANG

COMMODORE PLUS/4

COMMODORE PLUS/4
ANHANG

PIN
C
D
E
F
H
J
K
L
8
M
A
N

RS232- PINBELEGUNG
Bezeichnung
EIA
Empfangsdaten
Sendeteil einschalten
Endgert betriebsbereit
Ankommender Ruf
Empfangssignalpegel
nicht benutzt
Sendebereitscheft
Betriebsbereitschaft
Empfangsdaten
Sendedaten
Schutzerde
Betrjebserde

Abk.

Eing./Ausg.

(BB)
(CA)
(CD)
(CE)
(CF)

Sin
RTS
DTR
RI
DCD

Ein
Aus
Aus
Ein
Ein

(CB)
(CC)
(DB)
(DA)
(AA)
(AB)

CTS
DSR
Sin
Sout
GND
GND

Ein
Ein
Ein
Aus

Als
Beispiel
ist
hier
ein
einfaches
Programm
aufgefhrt.
Programm dient zur TeleKommunikation mit anderen Rechnern ber
(Akustikkoppler)

Dieses
Modems

100 rom puffer zuordnen, kanal oeffnen


101 openS,2,2,cI~r$(22)+chr~(5)
120 rem
121 rem initialisieren
125 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 rem
201 rem codeumwandlung in usascii
220 for j=32 to 64: t%(j)j: next
230 t%(13)=13: t%(20)=8
240 for j=65 to 90: t%(j)=j+32: next
250 for j=91 to 95: t%(j)=j: next
260 for j=193 to 218: t%(~)~jl28: next
270 t%(146)~16: t%(133)=16
280 t%(137)3:
t%(134)17: t~(138)~19
290 for j=0 to 255
300 k=t%(j)
310 if k<>0 then f%(k)=j: f%(k+128)=j
320 next j
330 scnclr: print chr$(14);
340 print
Empfangs und Sendeberejt
350 print c$;
400 rem
401 rem empfangen
410 get#5,a$: if a$=
then 510
420 print cs$;chr$(f%(asc(a$)));
430 if f%(asc(a$))=34 then print es$;
440 print c$;
450 goto4lo
500 re
501 rem senden
510 get a$: if a~(=
then 410
520 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

234
235

Das könnte Ihnen auch gefallen