Das lernst du heute
- Zähler hochzählen und zurücksetzen
- Schleife mit Abbruchbedingung
- Takte zählen
sleep macht den Chip taub. Willst du trotzdem Zeit messen, zählst du selbst mit. Die Hauptschleife mit yield am Anfang läuft genau einmal pro Takt – ein Register, das jedes Mal um eins wächst, ist eine Uhr.
Ein Zähler pro Takt
start:
yield
add r0 r0 1 # Takte seit dem Start
div r1 r0 2 # 2 Takte = 1 Sekunde
s db Setting r1 # Sekunden aufs Gehaeuse
j start
Alle Register stehen beim Einsetzen des Chips auf 0. Darum zählt r0 ohne eigenen Startwert von null los.
Zurücksetzen
Ein Zähler, der nie zurückgesetzt wird, wächst ewig. Zwei Wege:
l r2 d1 Activate # Taste gedrueckt?
beqz r2 weiter # nein: normal weiter
move r0 0 # ja: Zaehler auf null
weiter:
Oder automatisch nach einer festen Zahl: mod r0 r0 20 lässt den Zähler 0, 1, … 19, 0, 1 … laufen. So entsteht ein Takt, der sich alle zehn Sekunden wiederholt.
Schleife mit Abbruchbedingung
Eine Schleife muss nicht die Hauptschleife sein. Innerhalb eines Takts kann der Chip etwas wiederholen, bis eine Bedingung erfüllt ist – hier die Summe 1 + 2 + … + 10:
move r3 0 # Summe
move r4 1 # Laufzahl
summe:
add r3 r3 r4
add r4 r4 1
ble r4 10 summe # bis einschliesslich 10
Das sind 30 Befehle, sie passen in einen Takt.
Pro Takt laufen höchstens 128 Befehle. Braucht eine Schleife mehr, macht der Chip mitten darin Pause und setzt im nächsten Takt genau dort fort. Es gibt keinen Fehler, aber die Hauptschleife läuft dann nicht mehr einmal pro Takt – und jede Zeitmessung mit Takten stimmt nicht mehr.
Zähler statt sleep
Mit einem Zähler wartest du und bleibst trotzdem wach. Soll ein Licht nach dem Tastendruck zehn Sekunden brennen, setzt die Taste einen Zähler auf 20, und jeder Takt zieht eins ab. Solange er über null ist, bleibt das Licht an – und der Chip sieht in der Zwischenzeit jeden weiteren Tastendruck.
Schaubild
Übung
Aufgabe
Baue einen Betriebszähler: d0 ist eine LED-Anzeige, d1 eine Taste.
r0zählt die Takte, eins pro Takt.- Die Anzeige zeigt die Laufzeit in Sekunden (Takte / 2).
- Ein Druck auf die Taste (
Activate= 1) setzt den Zähler auf 0 zurück.
Hinweise
Hinweis 1
Zählen: add r0 r0 1 direkt nach dem yield.
Hinweis 2
Taste lesen, mit beqz am Zurücksetzen vorbeispringen, wenn sie nicht gedrückt ist.
Hinweis 3
Anzeige: div r2 r0 2, dann s d0 Setting r2.
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