Die Programme bisher liefen einmal durch und waren fertig. Für eine Steuerung ist das nutzlos: Die Temperatur ändert sich ständig, also muss der Chip immer wieder messen.
Wenn der Chip hinten rausläuft
Erreicht der Chip das Ende des Programms, bleibt er für immer stehen – ohne Fehlermeldung, ohne Lampe. Er startet auch nicht von selbst neu. Erst Chip raus und wieder rein weckt ihn auf. Deshalb endet jedes echte Programm mit einem Sprung zurück an den Anfang:
start:
yield
l r0 d0 Temperature
sub r0 r0 273.15
s d1 Setting r0
j start
start: ist ein Label, eine Sprungmarke. j start springt dorthin. Mehr über Labels in der nächsten Lektion.
Takte und yield
Das Spiel rechnet in Takten von 0,5 Sekunden. Pro Takt führt der Chip höchstens 128 Befehle aus, dann wartet er auf den nächsten Takt. Gerätewerte ändern sich nur zwischen den Takten.
yield sagt: „Für diesen Takt bin ich fertig.“ Ohne yield dreht die Schleife 128 Befehle lang im Kreis und liest dabei immer wieder denselben Wert – das kostet nichts Sichtbares, ist aber sinnlos und macht Programme schwer vorhersagbar.
Faustregel: Direkt hinter das Start-Label gehört ein yield. Dann läuft die Schleife genau einmal pro Takt.
sleep
sleep 5 wartet fünf Sekunden (nicht Takte) und ersetzt dann das yield. Praktisch für Blinklichter oder langsame Abläufe.
Schaubild
Übung
Aufgabe
Mach aus der Temperaturanzeige eine Dauersteuerung: Die Anzeige an d1 soll die Temperatur des Sensors an d0 in °C zeigen – und zwar ständig, auch wenn sich der Wert ändert. Baue eine Endlosschleife mit yield.
Hinweise
Hinweis 1
Setz über die erste Befehlszeile ein Label, z. B. start: – allein auf seiner Zeile.
Hinweis 2
Darunter yield, ganz unten j start.