stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 16

Tag 16 von 365 · Einsteiger · Monat 1: Erste Schritte

sleep und Zeit

sleep wartet Sekunden statt Takte. Wie du damit Wartezeiten baust, warum sleep nie in Zeile 0 gehört und wann ein Zähler besser ist.

Lektion 9 Min. Woche 3

Das lernst du heute

  • sleep in Sekunden statt Takten
  • Wartezeiten bauen
  • sleep nicht auf Zeile 0

Nach dem Druckausgleich soll die Lampe über der Tür erst nach drei Sekunden angehen. Mit yield müsstest du dafür sechs Takte abzählen. Einfacher geht es mit sleep.

sleep zählt Sekunden

sleep 3 hält den Chip drei Sekunden an, nicht drei Takte. Bei 0,5 s pro Takt sind das sechs Takte. Danach geht es in der nächsten Zeile weiter. Statt einer Zahl darf auch ein Register stehen: sleep r5.

# Lampe drei Sekunden nach dem Start
s d0 On 0
sleep 3
s d0 On 1

sleep ersetzt in einer Schleife auch das yield. Eine Messung alle fünf Sekunden sieht so aus:

# Druck alle 5 Sekunden auf die Anzeige
start:
l r0 d1 Pressure
s d2 Setting r0
sleep 5
j start

Seit Oktober 2024 rechnet sleep mit Spielzeit. Pausierst du das Spiel, pausiert auch die Wartezeit.

Die Falle mit Zeile 0

Achtung

sleep darf nicht in Zeile 0 stehen. Der Chip merkt sich die Stelle, an der er wartet, intern als negative Zeilennummer – und −0 ist dasselbe wie 0. In Zeile 0 erkennt er das Warten deshalb nicht und verbrennt jeden Takt alle 128 Befehle. Ein Kommentar oder Label davor reicht schon.

sleep macht taub

Während sleep liest der Chip nichts und schaltet nichts. Ein Tastendruck in dieser Zeit geht verloren, ein Druckabfall bleibt fünf Sekunden unbemerkt. Für Anzeigen und langsame Abläufe ist das in Ordnung. Für alles, was schnell reagieren muss, nimmst du yield und zählst die Takte selbst mit – das kommt übermorgen.

BefehlwartetChip reagiert währenddessen
yieldeinen Takt (0,5 s)im nächsten Takt wieder
sleep 2zwei Sekunden (4 Takte)nein
Takt-Zählerso lange du willstja, jeden Takt

Schaubild

Takte und yield auf einer Zeitleiste Takt 0 · 0,0 s Takt 1 · 0,5 s Takt 2 · 1,0 s Takt 3 · 1,5 s 5 Befehle yield 5 Befehle yield 5 Befehle yield 128 Befehle ohne yield: Limit Gerätewerte ändern sich nur zwischen zwei Takten.
Pro Takt laufen höchstens 128 Befehle. yield beendet einen Takt, sleep überspringt gleich mehrere.

Übung

Aufgabe

An d0 hängt ein Gas-Sensor, an d1 eine Lampe, an d2 eine LED-Anzeige.

  1. Beim Start ist die Lampe aus.
  2. Nach 3 Sekunden geht sie an und bleibt an.
  3. Danach zeigt die Anzeige alle 2 Sekunden den aktuellen Druck.

Benutze sleep – und denk an Zeile 0.

Hinweise

Hinweis 1

Erst s d1 On 0, dann sleep 3, dann s d1 On 1.

Hinweis 2

Die Schleife darunter: lesen, anzeigen, sleep 2, j start.

Hinweis 3

Der Kommentar in Zeile 0 sorgt dafür, dass kein sleep dort landet.

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

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall