30.12.2012 Aufrufe

Untitled

Untitled

Untitled

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!