Zwei Sensoren, zwei Anzeigen, zweimal dieselbe Umrechnung – Kopieren kostet Zeilen und Zeichen. Besser: die Rechnung einmal als Unterprogramm schreiben.
jal: Sprung mit Rückfahrkarte
jal celsius # springt zu celsius, ra = naechste Zeile
jal springt wie j, schreibt aber vorher die Nummer der nächsten Zeile ins Register ra. Am Ende des Unterprogramms bringt dich j ra genau dorthin zurück.
start:
yield
l r0 d0 Temperature
jal celsius # r1 = r0 in Grad C
s d2 Setting r1
l r0 d1 Temperature
jal celsius
s d3 Setting r1
j start
celsius:
sub r1 r0 273.15
j ra # zurueck zum Aufrufer
Ein- und Ausgabe laufen über abgesprochene Register: Hier erwartet celsius den Wert in r0 und liefert das Ergebnis in r1.
Das Unterprogramm gehört hinter das j start. Sonst läuft der Chip am Ende der Hauptschleife hinein, und j ra springt an eine Stelle, die vom letzten Aufruf übrig ist.
Ruft ein Unterprogramm selbst ein anderes auf, wird ra überschrieben. Dann vorher push ra und vor dem Rücksprung pop ra.
Schaubild
Übung
Aufgabe
Zwei Gas-Sensoren an d0 und d1, zwei LED-Anzeigen an d2 und d3. Jede Anzeige zeigt die Temperatur „ihres“ Sensors in °C (d0 → d2, d1 → d3).
Schreib die Umrechnung nur einmal als Unterprogramm und rufe es mit jal zweimal auf.
Hinweise
Hinweis 1
Im Unterprogramm reicht eine Zeile: sub r1 r0 273.15.
Hinweis 2
In der Hauptschleife: Sensor nach r0 lesen, jal celsius, dann r1 auf die Anzeige schreiben – zweimal.