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?