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

Tag 279 von 365 · Experte · Monat 10: Bits und Daten

Projekt: Schalterregister

Vier Taster schalten vier Lampen um – gespeichert in einem einzigen Register, mit Flankenerkennung über Bitbefehle.

Projekt 35 Min. Woche 40

Das lernst du heute

  • Viele Ein/Aus-Zustände in einem Register
  • Bits per Knopf umschalten
  • Zustand anzeigen

Die Bitwoche endet mit einem Projekt, das du in jeder Basis gebrauchen kannst: einem Schalterregister. Vier Taster schalten vier Lampen um – ein Druck an, der nächste aus. Statt vier Register für vier Zustände zu verschwenden, steckt alles in einem.

Die Anlage

GerätPrefabNamen
vier TasterStructureLogicButton„Taste1“ bis „Taste4“
vier LampenStructureWallLight„Lampe1“ bis „Lampe4“
LED-AnzeigeStructureConsoleLED5„Schalter“

Ein Taster meldet über Activate eine 1, solange er gedrückt ist.

Die Idee

Bit 0 gehört zu Taste 1 und Lampe 1, Bit 1 zu Taste 2 und Lampe 2 und so weiter. Pro Takt passiert dreierlei:

  1. Tasten einsammeln: Alle vier Activate-Werte landen mit ins als Bits in neu.
  2. Steigende Flanken finden: Gedrückt ist nur, was jetzt 1 ist und vorher 0 war: neu and (not alt). Mit xor schaltest du genau diese Bits im Zustand um.
  3. Ausgeben: ext holt jedes Bit wieder heraus und schaltet die passende Lampe, die Anzeige bekommt den ganzen Zustand als Zahl.
not tmp alt
and flanke neu tmp
xor zustand zustand flanke
move alt neu

Ohne die Flankenerkennung würde eine gedrückt gehaltene Taste die Lampe jeden Takt umschalten – sie flackert mit 2 Hz.

Teilziele

  1. Taste 1 schaltet Lampe 1 um: drücken an, nochmal drücken aus.
  2. Die Tasten sind unabhängig: Taste 2 und 4 schalten nur ihre eigenen Lampen.
  3. Die Anzeige zeigt den Zustand als Zahl: Lampe 2 und 4 an ergibt 2 + 8 = 10.
  4. Gedrückt halten schaltet nur einmal um.
Tipp

ins neu tmp 1 1 setzt ein Bit an Stelle 1 in neu und lässt alle anderen Bits stehen. Den ersten Taster liest du deshalb direkt nach neu – das löscht die alten Bits von selbst.

Schaubild

Die Registerbank des Chips r0 42 r1 31 r2 10 r3 -2.5 r4 0 r5 0 r6 0 r7 0 r8 0 r9 0 r10 0 r11 0 r12 0 r13 0 r14 0 r15 0 sp = r16 ra = r17 16 freie Register, je eine Zahl sp: Stapelzeiger · ra: Rücksprungadresse
Jedes Bit des Registers ist ein Schalter. Die Anzeige zeigt alle vier zusammen als eine Zahl.

Projektaufgabe

Aufgabe

Baue das Schalterregister: Vier Taster „Taste1“–„Taste4“ schalten die Lampen „Lampe1“–„Lampe4“ bei jedem Druck um. Der Zustand steckt in einem Register, die Anzeige „Schalter“ zeigt ihn als Zahl. Gedrückt halten schaltet nur einmal.

Teilziele

  1. Teilziel 1: Taste 1 schaltet Lampe 1 um
  2. Teilziel 2: Tasten sind unabhängig
  3. Teilziel 3: Anzeige zeigt den Zustand
  4. Teilziel 4: Halten schaltet nur einmal

Hinweise

Hinweis 1

Taste 1 direkt nach neu lesen, Taste 2 bis 4 mit ins neu tmp 1 1, ins neu tmp 2 1, ins neu tmp 3 1.

Hinweis 2

Flanke: not tmp alt, and flanke neu tmp, xor zustand zustand flanke, dann move alt neu.

Hinweis 3

Ausgabe: ext tmp zustand 0 1 für Lampe 1 und so weiter.

Quiz

3 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Alle Teilziele des Projekts 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