-
-
Ich habe die Lösung gefunden und sie ist simpel wie einfach.
Also, für alle die einmal ein strukturiertes Menü auf effiziente Art programmieren wollen:
Man kann die Marken direkt mit ldi laden.
Ich erkläre das ganze mal an einem Beispiel:
Jede Taste hat 16 Bit SRAM fest zugewiesen bekommen.
Taste1--->Vor
Taste2--->Zurück
Taste3--->OK
Taste4--->Cancel
Main:
mach dies
mach das
mach jenes
rjmp Main
Taste1:
[Sprungmarke aus SRAM holen in r16 und r17]
push r16 ;Sprungmarke auf den Stack
push r17
ret ;Marke, die auf dem Stack liegt anspringen
rjmp Main
Taste2:
;Wie Taste 1 nur andere SRAM-Adresse
rjmp Main
Taste3:
;Wie Taste 1 nur andere SRAM-Adresse
rjmp Main
Taste4:
;Wie Taste 1 nur andere SRAM-Adresse
rjmp Main
Menue1:
[Text auf Display schreiben]
;Im folgenden werden die Tasten definiert
ldi r16,LOW(Menue2)
ldi r17,HIGH(Menue2)
[r16 und r17 in den SRAM legen] ;Vor
ldi r16,LOW(Menue1_OK)
ldi r17,HIGH(Menue1_OK)
[r16 und r17 in den SRAM legen] ;OK
ldi r16,LOW(Menue1_Cancel)
ldi r17,HIGH(Menue1_Cancel)
[r16 und r17 in den SRAM legen] ;Cancel
rjmp Main
Menue2:
[Text auf Display Schreiben]
;Im folgenden werden die Tasten definiert
ldi r16,LOW(Menue1)
ldi r17,HIGH(Menue1)
[r16 und r17 in den SRAM legen] ;Zurück
ldi r16,LOW(Menue3)
ldi r17,HIGH(Menue3)
[r16 und r17 in den SRAM legen] ;Vor
ldi r16,LOW(Menue2_OK)
ldi r17,HIGH(Menue2_OK)
[r16 und r17 in den SRAM legen] ;OK
ldi r16,LOW(Menue2_Cancel)
ldi r17,HIGH(Menue2_Cancel)
[r16 und r17 in den SRAM legen] ;Cancel
rjmp Main
Menue3:
[Text auf Display Schreiben]
ldi r16,LOW(Menue2)
ldi r17,HIGH(Menue2)
[r16 und r17 in den SRAM legen] ;Zurück
ldi r16,LOW(Menue3_OK)
ldi r17,HIGH(Menue3_OK)
[r16 und r17 in den SRAM legen] ;OK
ldi r16,LOW(Menue3_Cancel)
ldi r17,HIGH(Menue3_Cancel)
[r16 und r17 in den SRAM legen] ;Cancel
rjmp Main
Menue1_OK:
...
rjmp Main
Menue1_Cancel:
...
rjmp Main
Menue2_OK
...
rjmp Main
.
.
.
.
.
Hier kehrt das Programm immer wieder in das Hauptprogramm zurück. Die Menüs definieren was, welche Taste als nächstes macht indem sie die Sprungmarken zwischenspeichern.
Hat bei mir wunderbar funktioniert auf diese Art.
Habe schon 13 Menüpunkte von 58 auf diese Art fertig gemacht und das Programm ist immernoch ziemlich übersichtlich.
Auf diese Art sind natürlich auch Verschachtelungen mit x Untermenüs möglich.
Ich rate auf jeden Fall mit Zahlen zu arbeiten und das Ganze vorher als Organigramm zu skizzieren.
Liebe Grüße
Steffne
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen