Untitled
Untitled
Untitled
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Port B als Eingang bzw. Ausgang definieren.<br />
Eine Schleife bearbeitet jeden Kanal.<br />
Dabei genugt die Angabe von E oder A<br />
nach der jeweiligen Frage. Falls A getippt<br />
wird, addiert das Programm die Wertigkeit<br />
zur Variablen D, die anschlieBend ins<br />
Datenrichtungsregister gePOKEt wird. Sicherheitshalber<br />
fuhrt jede andere Eingabe<br />
zur Programmierung als Eingang.<br />
Es folgt der Aufruf einer ganz ahnlichen<br />
Routine zur bitweisen Festlegung des Ausgabewertes.<br />
Hier muB - beginnend mit<br />
dem niederwertigsten Bit 0 - angegeben<br />
werden, welche Stellen gesetzt (1) und welche<br />
nicht gesetzt (0) sein sollen. Das Er<br />
gebnis wird in der Variablen W festgehalten.<br />
Erst bei Aufruf der Routine AUSGABE,<br />
erfolgt die Anderung des Portregisters, indem<br />
W hineingeschrieben wird.<br />
Den gegenteiligen Fall besorgt die Unterroutine<br />
PORT LESEN ab Zeile 9200. Dort<br />
wird der Port ausgelesen und sein Inhalt<br />
in W zur Verfiigung gestellt. Diese beiden<br />
Routinen bestehen jeweils nur aus einem<br />
einzigen Befehl und waren eigentlich gar<br />
kein Unterprogramm wert.<br />
Interessanter ist da schon der SchluB: eine<br />
Dezimal-Dual-Wandlung. Der Inhalt der<br />
Variablen W wird durch sie als Bitkombi-<br />
. nation angezeigt, was schnelle Aussagen<br />
uber den Zustand der einzelnen Bits zulaBt.<br />
Die linke Stelle steht fur das hochstwertige<br />
Bit 7, die ganz rechts fur Bit O.<br />
1m Hauptprogramm beginnt mit Zeile 140<br />
eine Schleife, in der bei jedem Durchlauf<br />
der Port gelesen und sein Inhalt zuerst<br />
dezimal (Zeile 150) und nach Wandlung<br />
durch das Unterprogramm ab Zeile 9900<br />
auch dual angezeigt wird (Zeile 170).<br />
Damit eignet sich dieses kurze Programm<br />
Die lIO-Ports 75<br />
Sehr gut fur Te st- und Experimentier<br />
zwecke.<br />
Beim Betrieb mit der Multi-I/O-Karte<br />
mussen die Kanaie 0 bis 3 als Eingange,<br />
4 bis 7 jedoch als Ausgange programmiert<br />
werden. Beim Experimentieren werden Sie<br />
sehen, daB beim Lesen der als Ausgang<br />
programmierten Kanale immer der zuletzt<br />
hineingeschriebene Wert ausgegeben wird.<br />
2.2.8 Maskerade -<br />
Einige Softwaretips<br />
Gerade bei Hardware-Programmierung<br />
kommt es sehr oft vor, daB jedes Bit einer<br />
Speicherzelle eine andere Bedeutung hat.<br />
Urn ganz bestimmte Reaktionen hervorzurufen,<br />
wird es dann notig, einzelne Bits<br />
gezielt setzen und loschen zu konnen, ohne<br />
daB der ubrige Inhalt der Speicherzelle<br />
auch nur kurzzeitig geandert wird.<br />
Dem gerade vorgestellten Programm muB<br />
fur jede Stelle der Zustand angegeben werden.<br />
Oft weiB man diese ubrigen Werte<br />
aber gar nicht, sondern man will nur das<br />
eine Bit andern.<br />
Zu diesem Zweck gibt es einen Programmiertrick,<br />
der sowohl bei Assembler als<br />
auch unter BASIC funktioniert. Beide<br />
Sprachen verfugen namlich uber die logi<br />
schen Befehle AND und OR. Dabei werden<br />
die Operanden jeweils bitweise<br />
miteinander verknupft. Leider arbeitet<br />
BASIC nur mit Dezimalzahlen, was die<br />
Anschaulichkeit etwas vermindert, aber in<br />
Kapitel 1.7.2 haben Sie ja bereits die Umrechnung<br />
kennengelernt.<br />
Was bedeutet nun bitweise Verkniipfung?<br />
Gehen wir einfach von einem Beispiel aus.<br />
Der BASIC-Befehl<br />
2 OR 8