mare_crisium,
bin nun Dein Programm durchgegangen.
Eine Sache ist mir gleich zu Beginn aufgefallen.
Der Mega8515 hat keinen Timer2.
In irgendeiner Version der letzten Postings hast Du die Interrupttabelle vom Mega8 eingebaut.
Muss ehrlich gestehen, ich habe das in Deinem letzten Posting zwar gelesen(Dazu habe ich den Timer2-Interrupt wieder aktiviert.),
mehr ueberlesen, aber beim 1.TimerCompare ist es mir dann aufgefallen.
Wenn sich Stoplersteine immer so leicht finden lassen wuerden.... 
Eine kleine Aenderung habe ich dann noch hier vorgenommen. Bringt nicht wirklich viel.. ein paar Takte
Code:
STACK8_CREATE:
push r25
in r25,SREG
push r16
push r17
push xl
push xh
; reservierten Speicherbereich mit Nullen füllen
mov xl,r16
clr xh
adiw xh:xl,STACK8CTL_LNG
clr r17
STCK8_CRT00:
; 20100503 vor STCK8_CRT00 geschoben clr r17
st z+,r17
sbiw xh:xl,0x0001 ; Byte-Zähler abzählen
brne STCK8_CRT00 ; Sprung, wenn noch nicht fertig
; Zeiger wieder auf erstes Byte von STACK8CTL zurückstellen
sbiw zh:zl,STACK8CTL_LNG ; Länge des Steuerblocks subtrahieren
sub zl,r16
clr r17
sbc zh,r17 ; Kapazität des Stacks subtrahieren
; Stackkapazität speichern
std z+STACK8CTL_CAP,r16 ; Kapazität speichern
pop xh
pop xl
pop r17
pop r16
out SREG,r25
pop r25
ret
Der MenuStack ist ja ne schoene Sache. Aber waere es nicht einfacher die Tasterkennung in einem Register dezimal abzulegen?
Was wuerde dagegen sprechen? - Ich meine als Lernobjekt ist die Sache mit dem Stack ja suuuuper.
... kann es natuerlich sein, dass Du in Deinem Hinterkopf schon weiter geplant hast, als ich es bisher ueberschauen kann?
Lesezeichen