Das lernst du heute
- Beqal, bneal, bltal, bgtal, bleal, bgeal
- Aufruf nur bei Bedingung
- ra richtig setzen
Der Gastank soll bei Überdruck ablassen und bei Unterdruck nachfüllen. Beide Aufgaben stehen sauber in eigenen Unterprogrammen. Statt erst zu vergleichen und dann jal zu schreiben, geht es in einer Zeile: bedingt aufrufen.
Die Familie
Die al-Befehle (and link) vergleichen wie die bekannten Sprünge. Stimmt der Vergleich, schreiben sie wie jal die nächste Zeile nach ra und springen:
| Befehl | ruft auf, wenn |
|---|---|
beqal a b ziel | a = b |
bneal a b ziel | a ≠ b |
bltal a b ziel | a < b |
bgtal a b ziel | a > b |
bleal a b ziel | a ≤ b |
bgeal a b ziel | a ≥ b |
bgtal druck MAXDRUCK zuhoch # nur bei Ueberdruck
bltal druck MINDRUCK zuniedrig # nur bei Unterdruck
Das Unterprogramm endet wie gewohnt mit j ra und kehrt hinter den Aufruf zurück.
Aufruf nur bei Bedingung
Wird nicht aufgerufen, läuft der Chip einfach in der nächsten Zeile weiter. Das Unterprogramm tut dann nichts, auch nichts zurücksetzen. Deshalb gehört vor die Aufrufe ein Grundzustand:
move ablass 0 # Grundzustand
move pumpe 0
bgtal druck MAXDRUCK zuhoch
bltal druck MINDRUCK zuniedrig
sbn VENTIL HASH("Ablass") On ablass
Jedes Unterprogramm setzt nur das, wofür es zuständig ist, auf 1. Geschrieben wird erst nach allen Aufrufen, genau einmal.
ra richtig setzen
ra bekommt nur dann einen neuen Wert, wenn der Aufruf wirklich passiert. Wird nicht aufgerufen, steht in ra noch der Wert vom letzten Mal. Solange jedes Unterprogramm nur über seinen eigenen Aufruf betreten wird, stört das nicht. Gefährlich wird es, wenn der Chip in ein Unterprogramm hineinläuft: Dann springt dessen j ra an eine alte Stelle.
Bei NaN ruft keiner dieser Befehle auf, außer bneal: NaN ist ungleich jeder Zahl. Ein Unterprogramm „bei Abweichung“ mit bneal wird bei Sensorausfall also aufgerufen.
Unterprogramme gehören hinter das j start der Hauptschleife. Dann kann der Chip nicht versehentlich hineinlaufen.
Schaubild
Übung
Aufgabe
Rohr-Analysator „Tank“, Digitalventil „Ablass“ (On = offen), Volumenpumpe „Nachfuellung“, Blinklicht „Tankalarm“.
- Über 5000 kPa: Unterprogramm
zuhochmitbgtalaufrufen – es öffnet das Ventil und setzt den Alarm. - Unter 3000 kPa: Unterprogramm
zuniedrigmitbltalaufrufen – es startet die Pumpe. - Sonst alles aus. Fehlt der Analysator: nichts läuft, Alarm an.
Hinweise
Hinweis 1
Vor den Aufrufen: ablass und pumpe auf 0, alarm mit snan aus dem Druck.
Hinweis 2
bgtal druck MAXDRUCK zuhoch und bltal druck MINDRUCK zuniedrig.
Hinweis 3
Die Unterprogramme setzen nur ihre Register auf 1 und enden mit j ra.
Quiz
4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden