SENSO - Spiel mit dem ATtiny26
von Felix Irmscher
Literatur: AVR-RISC Embedded Software selbst entwickeln
Dieses Spiel war um 1978 ein echter Renner und macht auch heute noch Spaß! In dem scheibenförmigen Gehäuse befanden sich vier farbige Tastenfelder. Jeder Taste war nicht nur eine Farbe, sondern auch ein bestimmter Ton zugeordnet.Zunächst brachte das Gerät zufällig eine Farbe zum Leuchten und gab hierzu den entsprechenden Ton aus. Der Spieler musste nun die entsprechende Taste drücken. War die Eingabe richtig, gab das Gerät die erste Farbe erneut aus und zusätzlich eine weitere zufällige Farbe. Nun musste der Spieler die beiden zugehörigen Tasten in der richtigen Reihenfolge drücken. Mit jeder korrekten und vollständigen Eingabe erhöhte sich die Sequenz um eine zusätzliche zufällige Farbe. Das Spiel endete, sobald sich der Spieler vertippte.

Ganzen Artikel lesen...
Bei der hier vorliegenden Spielversion wird ein ATtiny26 (L) eingesetzt. Extern sind nur wenige Bauteile notwendig:
1. Batterien: 2xAAA für ATtiny26L bzw. 3xAAA für ATtiny26
2. Vier Taster, am besten in vier verschiedenen Farben
3. Vier Kondensatoren 100nF zum Tasten-Entprellen
4. Vier LEDs: rot - grün - gelb - orange (oder blau) mit entsprechenden Vorwiderständen, je nach Betriebsspannung
5. Ein Piezo-Transducer (Piezo-Piepser ohne Elektronik)
Das Gerät wird durch Drücken der roten Taste eingeschaltet. Drückt man zunächst die gelbe und dann zusätzlich noch die rote Taste, so wird ausgeschaltet. Wird ca. 15 Sekunden lang keine Taste betätigt, so schaltet sich das Gerät automatisch aus(POWER DOWN - Mode). Mithilfe des im Programm eingebauten Melodie-Moduls (Unterprogrammebene) werden zu gegebener Zeit kleinere Melodien und Tonfolgen ausgegeben.
Das Melodie-Modul dient auch als Zeitgeber für einige Arbeitsschritte (Abspielen von Tonpausen). Anders als beim Original wird nach jeweils fünf richtigen Eingaben eine Tonfolge abgespielt. Der Programmcode könnte sicher noch verkürzt werden, erschien mir in der vorliegenden Version aber verständlicher.
Download des Asm-Files (Senso_280108_5.zip, 5 KB)
Ein kurzer Auszug aus dem Programm:
;###

Generierung

von

Random

###

Clr


Random

Clr


PowerTest
INIT_POWER:

Inc


PowerTest

Cpi


PowerTest,15

Brlo

WEITER_INIT

Rjmp

POWER_DWN
WEITER_INIT:

cli

ldi


Laenge,t2

out


TCNT0,Preload

ldi


i,5

out


TCCR0,i

ldi


i,2

out


TIMSK,i

sei
WAIT_PUSHED_BUT2:


;Wartet,

bis

Taster

gedrückt

ist



;dabei

setzen

!!!

Tst


Laenge

Breq

INIT_POWER


Cpi


Random,4

Brlo

INC_RANDOM2

Clr


Random
INC_RANDOM2:

Inc


Random


;Random

=

1..4

In

i,pinb

Com


i



;alle

Bits

umkehren



;76543210

Andi

i,0b01111000

;nur

pinb3..pinb6

abfragen

->

i

Cpi


i,0



;ein

Taster

an

pin3..6

gedrückt

Breq

WAIT_PUSHED_BUT2

;(i<>0)?
;ein

Taster

gedrückt!
;###

TASTEN

-

ERKENNUNG

###

Sbis

pinb,TA_ROT



;skip,

if

TA_ROT

not

pushed

usw.

Ldi


Taster,ROT

Sbis

pinb,TA_ORANGE

Ldi


Taster,ORANGE

Sbis

pinb,TA_GELB

Ldi


Taster,GELB

Sbis

pinb,TA_GRUEN

Ldi


Taster,GRUEN

;###

TASTEN-VERGLEICH

###

Ld

Farbe,Y


;Farbe

<-

(Y)


Cp

Taster,Farbe

Brne

ERROR
;###

TASTEN

OUTPUT

###
ROT_FARBE2:

Cpi


Farbe,ROT

Brne

ORANGE_FARBE2

Rcall

PLAY_ROT
ORANGE_FARBE2:

Cpi


Farbe,ORANGE

Brne

GELB_FARBE2

Rcall

PLAY_ORANGE
GELB_FARBE2:

Cpi


Farbe,GELB

Brne

GRUEN_FARBE2

Rcall

PLAY_GELB
GRUEN_FARBE2:

Cpi


Farbe,GRUEN

Brne

KTRL_ENDE

Rcall

PLAY_GRUEN
;###

KONTROLLE

SPIELENDE

###

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen