Magic Disk 64

home to index to text: BASTELWARE-USERPORT I+O MULTIPLEXER.txt
              Bastelware                

Vielleicht haben Sie sich schon einmal gewünscht, mehr Datenquellen mit dem Userport Ihres C64 zu verbinden als dieser mit seinen maximal 8 Eingabeleitungen verarbeiten kann.
Nehmen wir als Beispiel an, Sie wollen ein Zimmer überwachen. Da bietet sich an, einen Schalter an der Zimmertür zu befestigen, der dann Kontakt gibt, wenn die Tür geöffnet wird. Dazu reicht uns schon eine Leitung am Userport, und wir können mit einem Programm sogar festhalten, wann die Tür geöffnet, wann wieder geschlossen wurde und wie oft dies geschah.
Damit wollen wir uns aber nicht zufrieden geben. Wir wollen nun auch noch wis-

sen, was sonst noch in dem überwachten Zimmer vor sich geht, während wir nicht daheim sind. Der C64 kann mit seinen 64 KByte leicht mehrere Wochen lang wachen, ist also auch geeignet, uns einen " Status- Report" nach einem eventuellen Urlaub zu geben.
Wir möchten wissen, welche Schränke in unserer Abwesenheit geöffnet wurden.
Dazu befestigen wir, wie bei der Zimmertür, an jeder zu überwachenden Schranktür wieder einen Schalter. So weit, so gut. Was aber tun, wenn wir mehr als 8 Türen überwachen wollen? Das ist doch eigentlich bei maximal 8 Eingangsleitungen gar nicht möglich. . .

Ist es natürlich doch. Denn wieder einmal hilft uns hier die Elektronik. Das Zauberwort heißt " Multiplexer" und erlaubt uns, ganze 16 Schalter oder Kontakte abzufragen. Und dabei werden von den 8 Userport-Leitungen nur ganze 5 benötigt,3 bleiben also noch frei für weitere Anwendungen. Aber hier zunächst der Schaltplan, der eigentlich nur aus einem einzigen Integrierten Schaltkreis besteht: Dem IC SN 74150, das es für ein paar Mark in jedem Elektronikgeschäft gibt.

MD8804/MD8804-BASTELWARE-4.4.shematic1.png

An die Datenleitungen, die mit den Zahlen 0 bis 9 und den Buchstaben A bis F bezeichnet sind, können Sie 16 Schalter anschließen. Den zweiten Pol jedes Schalters verbinden sie mit Minus ( Masse) .
Was macht nun dieser Multiplexer? Nun, zunächst prüft er die Bitkombination an seinen Datenselektionseingängen. Diese sind mit den Userportleitungen PB0 bis PB3 verbunden. Mit diesen vier Leitungen können wir 2↑4=16 Bitkombinationen darstellen. Das klingt komplizierter als es in Basic ist. Hier ein kurzes Testprogramm:

10 POKE 56579,15                        
20 INPUT"LEITUNG NUMMER";N              
30 POKE 56577,N                         
40 A = PEEK(56577) AND 16               
50 IF A=0 THEN 80                       
60 PRINT"SCHALTER IST OFFEN"            
70 PRINT : GOTO 20                      
80 PRINT"SCHALTER IST GESCHLOSSEN"      
90 PRINT : GOTO 20                      

Am Anfang des Programms werden in Zeile 10 die Leitungen PB0 bis PB3 auf Ausgabe geschaltet. Dieser Vorgang ist nur einmal notwendig und muß nur nach einem eventuellen NMI (= RUN/ STOP RESTORE) neu ausgeführt werden.

In Zeile 20 wird dann über den INPUT-Be- fehl eine Zahl zwischen 0 und 15 eingegeben, die den entsprechenden Schalter auswählt. Der Multiplexer schaltet nun diese Leitung auf seinen Ausgang, welcher mit PB4 des User-Ports verbunden ist. Hier können wir nun in Zeile 40 den Zustand der Leitung abfragen. Ist der Wert Null, so ist der Schalter geschlossen, bzw. die Leitung am Multiplexer ist mit Masse verbunden. Bei einem anderen Wert als 0 ist der Schalter offen.
In einem " Überwachungsprogramm" kann zum Beispiel in einer FOR-NEXT- Schleife von 0 bis 15 jeder Wert nacheinander in die Speicherzelle 56577 gepoked und

anschließend die Ausgangsleitung des Multiplexers abgefragt werden.
Hier sind Ihnen als Anwender keine Grenzen gesetzt. Da ja am User-Port noch drei Leitungen frei sind, wäre es natürlich auch möglich, noch weitere Multiplexer anzuschließen und so statt 16 Schaltern 32,48 oder gar 64 Stück zu überwachen. Diese Zahlen dürften dann aber auch den Anforderungen eines Möbelhauses genügen. . .
Wir hoffen, daß Sie mit dieser Bastelware einige Anregungen bekommen haben, den Multiplexer mit seinen Möglichkeiten im Haus einzusetzen.

Valid HTML 4.0 Transitional Valid CSS!