Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

SPIN2 und Propeller P2

I/O Pin - Teil 3

Bedingte Anweisungen, der Wiederholungsbefehl REPEAT sowie Pre- und Post-Operatoren in SPIN2, Bitschieber und die Operatoren für Minimum- und Maximum Grenzwerte werden hier an Beispielen erläutert.

 

Wiederholungsbefehl REPEAT

Die REPEAT-Anweisung
1

repeat <zahl oder var>

   <eingerückter Code>

Wiederhole sooft wie <zahl> oder <var>-Wert festlegen den <Anweisungsblock>.

Die Angabe hinter repeat kann auch fehlen; dann Endlosschleife

2

 

 

 

 

 

3

 

 

repeat until <bedingung>

   <eingerückter Code>

 

 

 

 

repeat

   <eingerückter Code>

until <bedingung>

Solange die <Bedingung> erfüllt ist, wiederhole den <Anweisungsblock>.

 

 

Wiederhole den <Anweisungsblock> und überprüfe anschließend, ob die Abbruchbedingung <Bedingung> noch gilt.

4

 

 

repeat <var> from <start> to <end> step <var,zahl>

   <eingerückter Code>

Wiederhole, während <var> von <start> bis <end> durchlaufen wird in Schrittweiten von <var,zahl> den Anweisungsblock.

5

 

 

 

 

6

 

 

 

 

repeat while<bedingung>

   <Anweisungsblock>

 

 

 

repeat

   ...

   <Anweisungsblock>

   ...

while<bedingung>

Wiederhole, solange <bedingung> erfüllt ist.

 

 

 

Wiederhole den <Anweisungsblock> und überprüfe anschließend, ob die Abbruchbedingung <Bedingung> noch gilt.

7

 

 

 

 

 

 

8

 

 

 

 

repeat

   <eingerückter Code>

   IF <bedingung>

   NEXT

   <eingerückter Code>

 

 

repeat

   <eingerückter Code>

   IF <bedingung>

   QUIT

   <eingerückter Code>

Erzwingt in einer repeat-Wiederholungsschleife einen neuen Interationsdurchlauf, wenn <bedingung> der IF-Abfrage erfüllt ist.

 

 

 

Erzwingt einen Abbruch des Schleifendurchlaufs, wenn <bedingung> der IF-Abfrage erfüllt ist.

Pre- und Post-Operatoren

PRE/POST-Operatoren

++ <var>

-- <var>

Führe erst die Anweisung mit <var> aus und erhöhe (inkrementiere) dann <var> um 1.

Führe erst die Anweisung mit <var> aus und erniedrige (dekrementiere) dann <var> um 1.

<var>++

<var>--

Erhöhe <var> um 1 und führe dann die Anweisung aus.

Erniedrige <var> um 1 und führe dann die Anweisung aus.

<var>~~ Setze alle Bits von <var> auf 1.
<var>~ Setze alle Bits von <var> auf 0.
<var>! Invertiere alle Bits von <var>.

In einem kurzen Anwendungsprogramm wird die Wirkungsweise einiger PRE- und POST-Operatoren in Verbindungen mit dem Wiederholungsbefehl REPEAT gezeigt. Welche Werte der Laufindex n während des Durchlaufs der Wiederholungsschleife und nach Beendigung der Schleife annimmt wird im Terminalfenster PST ausgegeben.

Übung 1 - Wiederholungsschleife REPEAT mit PRE/POST Operatoren

 

 

 

 

Abb. 0a

Im OBJ-Block wird aus der Datenbank das Bibliotheksprogramm jm_serial aufgerufen.

In Programmzeile 16 wird die Baudrate eingestellt.

Lade das Programm mit F10 in den RAM und starte es. Du hast 5 sec Zeit, um mit F12 das Terminalfenster PST zu öffnen und mit ENABLE die Datenübertragung zu starten.

 

 

 

 

 

 

 

Abb. 0b

Für die fünf  Fälle:

a) repeat until ++n == 5

b) repeat until m++ == 5

c) repeat while m++ <= 5

d) repeat while ++m <= 6

e) repeat while ++m <> 7

wird der Wert der Laufvariablen n bzw. m nach Beendigung der Wiederholungsschleife im PST-Fenster angezeigt.

In Abb. 0a fehlen die Methoden für die letzten vier Fälle b) - e).

Übung 2 - Welches Video passt zu welchem Programmcode?

 

Finde selber heraus, welches der gezeigten vier Videos zu welchem Programmcode (s. Abb. 1a-c) gehört. Gehe dazu die Programmzeilen in den drei Abbildungen einzeln durch und überlege die Reaktion des Controllers.

Das Basisprogramm für alle hier gezeigten LED-Anzeigen entspricht dem aus Abb. 6 im Kapitel I/O Pin - Teil 2. Die Programmausschnitte der Abb. 1a - 1c beziehen sich darauf.

VIDEO 1 - Welcher der drei Programmcodes der Abb. 1a - 1c gehört zu dieser LED-Anzeige?

VIDEO 2 - Welcher der drei Programmcodes der Abb. 1a - 1c gehört zu dieser LED-Anzeige?

VIDEO 3 - Welcher der drei Programmcodes der Abb. 1a - 1c gehört zu dieser LED-Anzeige?

VIDEO 4 - Welcher der drei Programmcodes der Abb. 1a - 1c gehört zu dieser LED-Anzeige?

Mögliche Programmcodes zu den Videos VIDEO 1 - VIDEO 4

 

 

 

 

 

 

Abb. 1a

Zu welchem Video gehört dieser Programmcode? Gib eine begründete Antwort. Gehe dazu die Programmzeilen in den drei Abbildungen einzeln durch und überlege die Reaktion des Controllers. Vergleiche mit dem, was im Video gezeigt wurde.

 

 

 

 

 

 

Abb. 1b

Zu welchem Video gehört dieser Programmcode? Gib eine begründete Antwort. Gehe dazu die Programmzeilen in den drei Abbildungen einzeln durch und überlege die Reaktion des Controllers. Vergleiche mit dem, was im Video gezeigt wurde.

 

 

 

 

 

 

Abb. 1c

Zu welchem Video gehört dieser Programmcode? Gib eine begründete Antwort. Gehe dazu die Programmzeilen in den drei Abbildungen einzeln durch und überlege die Reaktion des Controllers. Vergleiche mit dem, was im Video gezeigt wurde.

Übung 3 - Methoden für bedingte Entscheidungen

Methoden für bedingte Entscheidungen sind die IF/IFNOT Methoden. Deren Syntax schauen wir uns in dieser Übung an. Weitere Programmanwendungen finden sich in den Abb. 1a - c.

IF/ IFNOT

Das IF-Konstrukt beginnt mit IF oder IFNOT und verwendet optional ELSEIF, ELSEIFNOT und ELSE. Um alle Teil desselben Entscheidungsbaums zu sein, müssen diese Schlüsselwörter dieselbe Einrückungsebene haben.

 

  • Der eingerückte Code unter IF oder ELSEIF wird ausgeführt, wenn <Bedingung> nicht Null ist.
  • Der Code unter IFNOT oder ELSEIFNOT wird ausgeführt, wenn <Bedingung> Null ist.
  • Der Code unter ELSE wird ausgeführt, wenn kein anderer eingerückter Code ausgeführt wird:

 

IF / IFNOT <bedingung>         - Anfängliches IF oder IFNOT

    < eingerückter Code >

ELSEIF / ELSEIFNOT < bedingung > - Optionales ELSEIF oder ELSEIFNOT

  < eingerückter Code >

ELSE                           - Optionales abschließendes ELSE

Das Programm Bitschieber_LED.spin2

 

Es wird ein Lauflicht über fünf LEDs hergestellt, indem in das Ausgangsregister die Bitfolge %1_0000 geladen und das Bit dann mit jedem Schleifendurchlauf um eine Stelle nach rechts verschoben wird.

 

 

 

 

 

 

 

 

 

 

Abb. 2

Den fünf LEDs an P0 bis P4 wird ein Pullup-Widerstand von 1,5 kOhm zugeschaltet. Eine Bitfolge wird in das Ausgangsregister des Controllers geladen und über die angeschlossenen LEDs angezeigt.

Anschließend werden mit einem Schiebebefehl  alle Bits im Register um eine Position nach rechts verschoben. Das MSB wird mit einer 0 aufgefüllt.

Stehen nur noch Nullen im Ausgangsregsiter, wird die anfängliche Bitfolge %0001_0000 geladen und das Spiel beginnt von vorne.

Ändere den zweiten Operanden im Schiebebefehl von 1 auf 2 und beobachte dann die sich ergebende LED-Muster.

In dem kurzen Video (10 s) wird das Lauflicht gezeigt. Es schließt sich ein zweites kurzes Video an (ca. 10 s). Wie müsste der Programmcode verändert werden, damit das dort gezeigte Lauflicht erscheint? Hier geht´s zum Video. Der im Video gezeigte Taster wird NICHT benötigt.

Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf