C 64/VC 20
Hardware

User-Port-Display

Eine kleine elektronische Schaltung setzt den User-Rort ins richtige Licht. Sie zeigt auch, wie der User-Port für Steuerungsaufgaben eingesetzt werden kann.

Die Computer VC 20 und C 64 haben als Verbindung zur Außenwelt an der Gehäuse-Rückseite den User-Port. Dieser 8 Bit breite parallele Port besteht aus acht programmierbaren Anschlüssen PB0 bis PB7, die als Eingabe- oder Ausgabeleitung geschaltet werden können. Weiterhin stehen noch die Eingabe-Handshakeleitung FLAG2 (CA1 beim VC 20) und die Ausgabe-Handshakeleitung PA2 (VC 20: CB2) für diese acht Leitungen zur Verfügung.

Diese Anschlüsse sind vom User-Port aus mit dem universellen Interface-Baustein (VIA) 6522 direkt verbunden (VIA = Versatile Interface Adapter). Sie erlauben den Anschluß von externen Schaltungen und Geräten. Das User-Port-Display, das noch als universeller Ein-/Ausgabe-Adapter verwendet werden kann, wird an dieser Platinen-Steckerleiste am besten über einen Platinenstecker der Bezeichnung 251-12-50-170 angeklemmt. Die einzelnen Port-Leitungen PB0 bis PB7 haben eine bestimmte binäre Wertigkeit, wie in Tabelle 1 gezeigt. Die Belegung des User-Ports entnehmen Sie bitte dem Handbuch zum C 64. Die Handshakeleitung FLAG2 (CA1) kann bei der Eingabe, die Handshakeleitung PA2 (CB2) bei der Ausgabe von Datenwörtern als Quittierungssignal benutzt werden.

Port Wertigkeit binär
PB0 1 20
PB1 2 21
PB2 4 22
PB3 8 23
PB4 16 24
PB5 32 25
PB6 64 26
PB7 128 27
Tabelle 1. Die binären Wertigkeiten der Ein-/Ausgabeleitungen

Die Schaltung des User-Port-Displays

Zur Überwachung der logischen Zustände bei der Programmierung der einzelnen Ports wurde die in Bild 1 gezeigte Schaltung entworfen. Dadurch werden die Eingabe- und Ausgabe-Datenwörter an den Ports PB0 bis PB7 durch Leuchtdioden (LEDs) sichtbar gemacht. Gleichermaßen werden die logischen Zustände der Handshakeleitungen angezeigt. Eine Stückliste für den I/O-Adapter (Input/Output) finden Sie in Tabelle 2. High-Pegel, also logisch »Eins«, werden durch Leuchten, Low-Pegel (logisch »Null«) durch Verlöschen der entsprechenden LED signalisiert.

Bild 1. Schaltplan des User-Port-Displays
1 Steckerleiste 251-12-50-170
1 13pol. Buchsenleiste
2 m 12adriges Kabel
2 IS 74LS04
8 LED rot (3 mm ⌀)
1 LED grün (3 mm ⌀)
1 LED gelb (3 mm ⌀)
10 Widerstände 330 Ω/0,25 W
1 Lochrasterplatte
1 Miniaturbuchse für +5 V (extern)
1 Miniaturbuchse für GND (extern)
1 TEKO-Gehäuse (Typ 2A)
XXXXX

Die Schaltung besteht aus zehn Invertern (2 x 74LS04, Bild 2), an die über je einen Widerstand von 330 Ohm die LED an +5 V angeschlossen sind. Ein Inverter kehrt das Eingangssignal um. Aus +5 V werden 0 V, aus 0 V werden +5 V.

Bild 2. Die Pin-Belegung eines SN 7404

Spannungsversorgung und Aufbau

Zur Spannungsversorgung für die Anzeigeeinheit wird die an Pin 2 des User-Port anliegende Spannung von +5 V benutzt. Es ist darauf zu achten, daß der Stromverbrauch der gesamten Anordnung 100 mA nicht übersteigt. In Fällen größerer Stromentnahme wird ein separates Netzteil erforderlich.

Aufbau der Schaltung

Da es sich bei dieser Schaltung um eine relativ einfach aufzubauende Einheit handelt, wurde auf ein Platinenlayout verzichtet. Statt dessen kann die Schaltung auf eine Lochrasterplatte (Rastermaß: 2,51 mm) aufgebaut werden. Die entsprechenden Verbindungen werden dann mit Drahtverbindungen ausgeführt. Entweder durch Löten von Drahtstücken, oder mit Wire-Wrapping. Bei der letzteren Technik umwickelt man mit einer speziellen Maschine die Anschlußbeine mit Kupferlackdraht und stellt so die Verbindungen her. Die Anzeigeeinheit und die 13polige Buchsenleiste kann in einem kleinen Gehäuse untergebracht werden. Über ein 12adriges Kabel wird nun der User-Port mit dem Display verbunden. Zusätzlich ist es sinnvoll, die +5-V-Spannung und die Masse auf separate Buchse zu legen, um ein eigenes Netzteil anschließen zu können. Pin 2 des User-Ports muß dann natürlich abgeklemmt werden.

Die Programmierung des User-Ports

Wie bereits erwähnt, lassen sich die acht Port-Leitungen als Ein-/Ausgabeleitungen programmieren. Nach dem Einschalten des Computers werden alle Ports automatisch auf Eingabe geschaltet. Dies läßt sich leicht daran erkennen, daß alle acht LEDs des User-Port-Displays leuchten. Über das Datenrichtungsregister, Adresse DDRB = 56579 (VC 20 = 37138), lassen sich die einzelnen acht Ports so programmieren, daß sie entweder als Ein- oder Ausgabeleitung arbeiten. Mit dem Befehl POKE DDRB,X wird die Programmierung vorgenommen. Hierbei ist »X« eine Dezimalzahl zwischen 0 und 255. Die der Dezimalzahl entsprechende Binärzahl erscheint dann am User-Port an den Ausgängen PB0 bis PB7. In der Binärzahl stellt die logische »0« einen Eingabe-, die logische »1« einen Ausgabeport dar. Als logische Pegel liegen allerdings die invertierten Pegel an, da der C 64 und VC 20-Computer mit negativer Logik arbeitet; also High-Pegel bei logisch »0« und umgekehrt.

Mit POKE DDRB,255 werden alle acht Ports zu Ausgabeleitungen, da dezimal 255 in Binärdarstellung 11111111 ist. Die Programmierung mit POKE DDRB,0 ergibt entsprechend 00000000 und alle acht Ports sind Eingabeleitungen. POKEt man in die Speicherstelle DDRB die Dezimalzahl 240, so ergibt dies die Binärzahl 11110000. Dies bedeutet, daß die Ports PB0 bis PB3 Eingabeleitungen und die Ports PB4 bis PB7 Ausgabeleitungen sind. So lassen sich durch POKEn einer Zahl zwischen 0 und 255 in die Speicherstelle DDRB die jeweils gewünschten Ein-/Ausgabekombinationen einstellen.

Die Ausgabe von Daten

Nachdem das Datenrichtungsregister auf Ausgabe programmiert ist, können die Daten über die Speicherstelle PRB = 56577 (VC 20: PRB = 37136) ausgeben werden. Der entsprechende Befehl hierzu lautet POKE PRB,X. Auch hier kann X eine Dezimalzahl zwischen 0 und 255 sein. Die entsprechende Binärzahl erscheint an den Ports und bringt die dazugehörigen LEDs zum Leuchten. High-Pegel bedeutet jetzt Aufleuchten der LED. Mit Listing 1 kann dies leicht überprüft werden. In Zeile 10 werden alle Ports PB0 bis PB7 auf Ausgabe geschaltet. In Zeile 20 erfolgt die Zahleneingabe (Zahl zwischen 0 und 255). In Zeile 30 wird diese Zahl in die Speicherstelle PRB gePOKEt und an den Ports als Binärzahl ausgegeben. Gleichzeitig stehen diese Signale an der 13poligen Buchsenleiste an, wo Interfaces für die vielfältigsten Schalt- und Kontrollaufgaben angeschlossen werden können.

Die Ausgabe-Handshakeleitung

Mit der Ausgabe-Handshakeleitung PA2 (VC 20: CB2) kann man die Ausgabe von Datenwörtern zu Steuerzwecken quittieren. So kann ein angeschlossenes Gerät durch diese Handshakeleitung zur Übernahme der Daten freigegeben werden.

Mit POKE 37148,220 wird an Port CB2 des VC 20 Low-Pegel, mit dem Befehl POKE 37148,255 High-Pegel gelegt. Beim C 64 sind dies die Befehle POKE 56576,147 für Low-Pegel und POKE 56576,151 für High-Pegel an Port PA2. Eine spezielle Anwendung bleibt dem Benutzer überlassen. Der Befehl kann in einem Programm an die Stelle eingefügt werden, wo er eine Schaltfunktion übernehmen soll. Listing 2 soll die Wirkungsweise von CB2 und PA2 veranschaulichen.

In Zeile 10 werden die Ports auf Ausgabe programmiert. In Zeile 20 wird die auszugebende Binärzahl als Dezimalzahl in die Speicherstelle PRB geschrieben. In Zeile 30 erfolgt dann der Quittungsbefehl. In diesem Fall wird ein Low-Pegel am Port PA2 oder CB2 ausgegeben. Nach dem Durchlauf einer Warteschleife in Zeile 40 wird PA2 (CB2) wieder auf High-Pegel zurückgesetzt, und die grüne LED leuchtet.

Eingabe von Daten

Das Datenrichtungsregister wird zu diesem Zweck mit POKE DDRB,0 auf Eingabe programmiert. Dies wird deutlich durch das Aufleuchten der LED angezeigt. Die entsprechenden Ports können nun auf Low-Pegel gelegt werden und bilden hierdurch eine bestimmmte Binärkombination. Mit den LEDs läßt sich die eingestellte Binärzahl anschaulich ablesen. Über den Befehl PRINT PEEK(PRB) wird der logische Zustand an den Ports abgefragt und auf dem Bildschirm erscheint die Zahl 189.

Das nachstehende Programm verdeutlicht noch einmal diese Möglichkeit der Dateneingabe: 10 POKE DDRB,0 20 PRINT "Ausgabe des Datenwortes"; PEEK(PRB) 30 GOTO 20

In Zeile 10 werden die Ports auf Eingabe programmiert. In Zeile 20 werden die angelegten Daten eingelesen und auf dem Bildschirm angezeigt.

Die Eingabe-Handshake-Leitung

Mit einem weiteren Befehl kann der Computer veranlaßt werden, das Basic-Programm anzuhalten und zu warten, bis eine Dateneingabe erfolgt ist. Hierzu ist die Eingabe-Handshake-Leitung CA1 FLAG2 (VC 20: CA1) als Quittungssignal vorhanden. Bei einem Flankenwechsel von High nach Low werden die anliegenden Daten eingelesen. Mit Hilfe von Listing 3 läßt sich dieser Vorgang bewerkstelligen.

In Zeile 10 werden die Ports auf Eingabe programmiert. In Zeile 30 wird das Basic-Programm solange angehalten, bis der Flankenwechsel am Port FLAG2 (CA1) erfolgt. Danach wird das Programm wieder fortgesetzt, und in Zeile 40 das angelegte Datenwort auf dem Bildschirm angezeigt.

Daten-Ein- und -Ausgabe kombiniert

Mit der Kombination von Daten-Ein- und Ausgabe können vielfältige Steuer- und Kontrollaufgaben gelöst werden. Hierbei werden Datenwörter eingelesen, im Computer verarbeitet und zur Steuerung wieder ausgegeben. Listing 4 zeigt dies beispielhaft. In Zeile 10 wird eine eventuell bestehende Kombination gelöscht. In 20 werden die Ports PB0 bis PB3 auf Eingabe und die Ports PB4 bis PB7 auf Ausgabe programmiert. In Zeile 40 wird das Programm solange angehalten, bis ein Flankenwechsel von High nach Low an Port FLAG2 (VC 20: CA1) erfolgt. In Zeile 50 wird die eingegebene Binärkombination mit der vorgegebenen Dezimalzahl 11 verglichen. Bei Erfüllung dieser Bedingung wird ein Steuerbefehl zum Port PB4 gesendet, der dann irgendeine Funktion auslösen kann. Bei Nichterfüllung der vorgegebenen Bedingung wird in Zeile 60 eine Rücksprunganweisung zur Zeile 50 gegeben. Mit Listing 5 können Sie den C 64 in eine Lichtorgel umfunktionieren.

Ausblick

In Bild 3 sind zwei Interface-Schaltungen gezeigt, die den C 64 oder VC 20 mit der Außenwelt verbinden. Hüten Sie sich bei Ihren Experimenten vor Netzspannung. Nicht nur der Computer kann damit ins Jenseits befördert werden.

(Dipl.-Ing. Richard Kurzhals/hm)
Bild 3. Zwei Interface-Schaltungen, die anstelle der LEDs eingesetzt werden können. Relais oder Optokoppler
0 rem listing 1
3 rem vc 20:ddrb=37138 / c 64:ddrb=56579
5 rem vc 20: prb=37136 / c 64: prb=56577
10 poke ddrb,255
20 input "zahl";x
30 poke prb,x
40 goto 20
Listing 1. Ausgabe einer Binärzahl am User-Port
0 rem listing 2    c64
5 ddrb=56579:prb=56577
10 poke ddrb,255
20 poke prb,127
30 poke 56576,147
40 for i=1 to 100:next i
50 poke 56576,151
Listing 2a. Demonstration der Handshakeleitung beim C 64
0 rem listing 2   vc 20
5 ddrb=37138:prb=37136
10 poke ddrb,255
20 poke prb,127
30 poke 37148,220
40 for i=1 to 100:next i
50 poke 37148,225
Listing 2b. Demonstration der Handshakeleitung beim VC 20
0 rem listing 3
3 input "1) vc 20     2) c 64";comp
5 on comp goto 7,9,3
7 ddrb=37138:prb=37136:x=37149:y=2:goto10
9 ddrb=56579:prb=56577:x=56589:y=16:goto10
10 poke ddrb,0
20 print"warten auf datenfreigabe"
30 wait x,y
40 print"ausgabe des datenwortes";peek(drb)
50 goto20
Listing 3. So einfach ist das Einlesen mit Handshake von Daten am User-Port
0 rem listing 4
3 input "1) vc 20     2) c 64";comp
5 on comp goto 7,9,3
7 ddrb=37138:prb=37136:x=37149:y=2:goto10
9 ddrb=56579:prb=56577:x=56589:y=16:goto10
10 poke prb,0
20 poke ddrb,240
30 print"warten auf datenfreigabe"
40 wait x,y
50 if peek(prb)=11 then poke prb,16:end
60 goto 50
Listing 4. Der User-Port kann auch gleichzeitig als Ein- und Ausgabe-Schnittstelle benutzt werden
0 rem listing 5
3 input "1) vc 20     2) c 64";comp
5 on comp goto 6,8,3
6 ddrb=37138:prb=37136:yy=37148:
7 zz=255:z1=220:goto10
8 ddrb=56579:prb=56577:yy=56576:
9 zz=151:z1=147:goto10
10 poke prb,255
20 forx=0to7
30 y=2^x
40 poke prb,y
50 fori=1to100:nexti
60 nextx
70 poke prb,0
80 poke yy,zz
90 fori=1to100:nexti
100 poke yy,z1
110 goto 20
Listing 5. Lauflicht am User-Port
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →