hier eine Menüstruktur von mir:

Code:
$nocompile


Sub Menueaufruf_restore(parameterindex)
   Select Case Parameterindex                               ' Verzweigen nach jeweiligem Menü
       Case 1:
          Restore Menue_1
       Case 2:
          Restore Menue_2
       Case 3:
          Restore Menue_3
       Case 4:
          Restore Menue_4
       Case 5:
          Restore Menue_5
       Case 6:
          Restore Menue_6
       Case 7:
          Restore Menue_7
       Case 8:
          Restore Menue_8
       Case 9:
          Restore Menue_9
       'Case 15:
          'Restore Menue_15
       Case 10:
          Restore Menue_10
       Case 11:
          Restore Menue_11
       Case 12:
          Restore Menue_12
       Case 13:
          Restore Menue_13
       Case 14:
          Restore Menue_14
       Case 15:
          Restore Menue_15
       Case 16:
          Restore Menue_16
       Case 17:
          Restore Menue_17
       Case 18:
          Restore Menue_18
       Case 19:
          Restore Menue_19
       Case 20:
          Restore Menue_20
       Case 21:
          Restore Menue_21
       Case 22:
          Restore Menue_22
       Case 60:
          Restore Menue_60
       Case 61:
          Restore Menue_61
       Case 63:
          Restore Menue_63
       Case 70:
          Restore Menue_70
       Case 71:
          Restore Menue_71
       Case 72:
          Restore Menue_72
       Case 73:
          Restore Menue_73
       Case 74:
          Restore Menue_74
       Case 75:
          Restore Menue_75
       Case 76:
          Restore Menue_76
       Case 77:
          Restore Menue_77
       Case 80:
          Restore Menue_80
       Case 81:
          Restore Menue_81
       Case 82:
          Restore Menue_82
       Case 83:
          Restore Menue_83
       Case Else:                                           ' Defaultwert ist Hauptmenü
          Restore Menue_1
          'Menue_auswahl = 0
   End Select
End Sub


' Menüstruktur

Menue_1:
Data 1 ' Menüart 1 = Verzweigungsmenü
Data "Hauptmenü{013}" ' Menütitel
' Aufbau ist Auswahl, Zieladresse
Data " {013}" , 1 
Data " Tankkonfiguration {013}" , 70
Data " Anlagenkonfig {013}" , 5
Data " Uhrzeit {013}" , 3
Data " Datum {013}" , 2
'Data 10

Menue_2:
Data 1
Data " Datum {013}"
Data " Datum Jahr {013}" , 16
Data " Datum Monat {013}" , 17
Data " Datum Tag {013}" , 18
Data " {013}" , 20
Data " Uhrzeit " , 3


Menue_3:
Data 1
Data " Uhrzeit{013}"
Data " Stunde {013}" , 60
Data " Minute {013}" , 61
Data " Datum {013}" , 2
Data " Regel-Intervall {013}" , 20
Data " Reset Zentrale " , 4


Menue_4:
Data 1
Data "  Reset  {013}"
Data " {013}" , 4
Data " {013}" , 4
Data " {013}" , 4
Data " {013}" , 4
Data " Reset Zentrale " , 19


Menue_5:
Data 1
Data " Anlage {013}"
Data " Log zurücksetzen {013}" , 21
Data " Regel-Intervall {013}" , 20
Data " Log-Intervall {013}" , 63
Data " Tastensound {013}" , 13
Data " Menü 2" , 8
'

Menue_6:
Data 1
Data " Tankmenü {013}"
Data " Solltemp {013}" , 73
Data " Mostoechsle {013}" , 74
Data " Mostmenge {013}" , 75
Data " Soll RZ {013}" , 76
Data " Tankmenü 2 " , 7

Menue_7:
Data 1
Data "Tankmenü 2{013}"
Data " Oechsleabnahme {013}" , 77
Data " Sensoradresse {013}" , 82
Data " {013}" , 7
Data " CO2-Menü {013}" , 10
Data " Tankmenü 1 " , 6

Menue_8:
Data 1
Data " Anlage 2{013}"
Data " Baudrate PC {013}" , 14
Data " Manuell / PC {013}" , 15
Data " Messboxen {013}" , 71
Data " Reset Zentrale {013}" , 19
Data " Menü 3 " , 9


Menue_9:
Data 1
Data " Anlage 3{013}"
Data " Teilertara {013}" , 72
Data " Terminal {013}" , 22
Data " {013}" , 9
Data " {013}" , 9
Data " Menü 2 " , 8

Menue_10:
Data 1
Data " CO2-Menü {013}"
Data " {013}" , 10
Data " CO2 prewarmup {013}" , 80
Data " CO2 delta {013}" , 81
Data " CO2 Regelzyklus{013}" , 83
Data " Tankmenü " , 7

Menue_11:
Data 2
Data "Abschaltdr.{013}" ' Menütitel
Data " bar" ' Einheit
Data &H03 , &HFF                                            ' Stufen
Data 0 , 10                                                 ' Maximalwert
Data 1                                                      ' ERAM-Parameter Index
Data 5                                                      ' zählersteps
Data 2                                                      ' Kommastellen
Data 1                                                      ' Aussprungmenü

Menue_12:
Data 2 ' 2= Werteingabe
Data "Minimaldr.{013}"
Data " bar"
Data &H03 , &HFF                                            ' Stufen
Data 0 , 10                                                 ' Maximalwert
Data 2                                                      ' ERAM-Parameter Index
Data 5                                                      ' zählersteps
Data 2                                                      ' Kommastellen
Data 1                                                      ' Aussprungmenü

Menue_13:
Data 5 ' 5= Wertauswahl
Data "Sound{013}"
Data 8                                                      ' ERAM-Parameter Index
Data " on {013}" , 1
Data " off {013}" , 0                                       ' Stufen
Data "" , 0                                                 ' Maximalwert
Data "" , 0
Data "" , 0                                                 ' zählersteps

Menue_14:
Data 5
Data "BaudratePC{013}"
Data 7                                                      ' ERAM-Parameter Index
Data " 9600 {013}" , 0
Data " 19200 {013}" , 1                                     ' Stufen
Data " 57600 {013}" , 3                                     ' Maximalwert
Data " 115200 {013}" , 4
Data " 128000 {013}" , 5                                    ' zählersteps

Menue_15:
Data 5
Data "Manuell/PC{013}"
Data 9                                                      ' ERAM-Parameter Index
Data " Manuell {013}" , 0
Data " PC {013}" , 1                                        ' Stufen
Data " {013}" , 4                                           ' Maximalwert
Data " {013}" , 4
Data " {013}" , 4                                           ' zählersteps

                                          ' zählersteps


Menue_16:
Data 2
Data "Datum Jahr"
Data " "
Data &H00 , &H63                                            ' Stufen
Data 0 , 99                                                 ' Maximalwert
Data 1                                                      ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 5                                                      ' Aussprungmenü

Menue_17:
Data 2
Data "Datum Monat"
Data " "
Data &H00 , &H0C                                            ' Stufen
Data 0 , 12                                                 ' Maximalwert
Data 2                                                      ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 2                                                      ' Aussprungmenü

Menue_18:
Data 2
Data "Datum Tag"
Data " "
Data &H00 , &H1F                                            ' Stufen
Data 0 , 31                                                 ' Maximalwert
Data 3                                                      ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 2                                                      ' Aussprungmenü

Menue_19:
Data 99
Data "Reset{013}"
Data " "
Data &H00 , &H0A                                            ' Stufen
Data 0 , 1                                                  ' Maximalwert
Data 1                                                      ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 2                                                      ' Kommastellen
Data 0                                                      ' Aussprungmenü

Menue_20:
Data 2
Data "Intervall"
Data "Sec "
Data &H04 , &HB0                                            ' Stufen
Data &H04 , &HB0                                            ' Maximalwert
Data 4                                                      ' ERAM-Parameter Index
Data 10                                                     ' zählersteps
Data 0                                                      ' Kommastellen
Data 5                                                      ' Aussprungmenü

Menue_21:
Data 5
Data "Log Reset{013}"
Data 10                                                     ' ERAM-Parameter Index
Data " nein {013}" , 0
Data " Reset {013}" , 1                                     ' Stufen
Data " {013}" , 3                                           ' Maximalwert
Data " {013}" , 4
Data " {013}" , 5                                           ' zählersteps

Menue_22:
Data 5
Data "Terminal{013}"
Data 12                                                     ' ERAM-Parameter Index
Data " aus {013}" , 0
Data " ein {013}" , 1                                       ' Stufen
Data " {013}" , 4                                           ' Maximalwert
Data " {013}" , 4
Data " {013}" , 4

' > 60 SRAM Parameter
Menue_60:
Data 3 
Data "Stunde"
Data "Uhr "
Data &H00 , &H17                                            ' Stufen
Data 0 , 23                                                 ' Maximalwert
Data 1                                                      ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 3                                                      ' Aussprungmenü

Menue_61:
Data 3
Data "Minute"
Data "Min "
Data &H00 , &H3B                                            ' Stufen
Data 0 , 59                                                 ' Maximalwert
Data 2                                                      ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 3                                                      ' Aussprungmenü

Menue_63:
Data 2
Data "Log_Interv."
Data " "
Data &H00 , &H0A                                            ' Stufen
Data 0 , 10                                                 ' Maximalwert
Data 11                                                     ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 5                                                      ' Aussprungmenü                                                     ' Aussprungmenü


Menue_70:
Data 3
Data "Tankauswahl"
Data " "
Data &H00 , &HFF                                            ' Stufen
Data 0 , 255                                                ' Maximalwert
Data 3                                                      ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 6                                                      ' Aussprungmenü

Menue_71:
Data 2
Data "Messboxen"
Data " "
Data &H00 , &H0A                                            ' Stufen
Data 0 , 10                                                 ' Maximalwert
Data 5                                                      ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 5                                                      ' Aussprungmenü

Menue_72:
Data 2
Data "Tarateiler"
Data " "
Data &H00 , &H64                                            ' Stufen
Data 0 , 100                                                ' Maximalwert
Data 6                                                      ' ERAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 5                                                      ' Aussprungmenü

Menue_73:
Data 4
Data "Solltemp"
Data "°C "
Data &H0A , &H78                                            ' Stufen
Data 0 , 40                                                 ' Maximalwert
Data 1                                                      ' SRAM-Parameter Index
Data 5                                                      ' zählersteps
Data 2                                                      ' Kommastellen
Data 6                                                      ' Aussprungmenü

Menue_74:
Data 4
Data "Most Oe"
Data "Oe "
Data &H01 , &H2C                                            ' Stufen
Data &H01 , &H2C                                            ' Maximalwert
Data 2                                                      ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 1                                                      ' Kommastellen
Data 6

Menue_75:
Data 4
Data " Mostmenge "
Data "L "
Data &H4E , &H20                                            ' Stufen
Data &H4E , &H20                                            ' Maximalwert
Data 3                                                      ' SRAM-Parameter Index
Data 25                                                     ' zählersteps
Data 0                                                      ' Kommastellen
Data 6

Menue_76:
Data 4
Data "Soll RZ"
Data "g/l "
Data &H02 , &H58                                            ' Stufen
Data &H01 , &H2C                                            ' Maximalwert
Data 5                                                      ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 1                                                      ' Kommastellen
Data 6

Menue_77:
Data 4
Data "Delta Oe"
Data "Oe "
Data &H02 , &H58                                            ' Stufen
Data &H01 , &H2C                                            ' Maximalwert
Data 4                                                      ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 1                                                      ' Kommastellen
Data 6

Menue_80:
Data 4
Data "CO2 prew. "
Data "sec "
Data &H00 , &H3C                                            ' Stufen
Data &H00 , &H3C                                            ' Maximalwert
Data 10                                                     ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 10                                                     ' Rücksprungadresse

Menue_81:
Data 4
Data "CO2 delta"
Data "dig "
Data &H00 , &H3C                                            ' Stufen
Data &H00 , &H3C                                            ' Maximalwert
Data 11                                                     ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 10                                                     ' Rücksprungadresse

Menue_82:
Data 4
Data "Sensor Ad."
Data " "
Data &H00 , &HFF                                            ' Stufen
Data &H00 , &HFF                                            ' Maximalwert
Data 12                                                     ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 7                                                      ' Rücksprungadresse

Menue_83:
Data 4
Data "CO2 Messz."
Data " "
Data &H00 , 40                                              ' Stufen
Data &H00 , 40                                              ' Maximalwert
Data 13                                                     ' SRAM-Parameter Index
Data 1                                                      ' zählersteps
Data 0                                                      ' Kommastellen
Data 7                                                      ' Rücksprungadresse
Die Werte werden dann in einem eram bzw. einem sram-array abgelegt.
Was nun daranstatemachine ist wird sich nun jeder fragen.
Die Augabe des Menüs.
Die Ausgabe ist so angelegt, dass sie nicht in der Abfrage der tasten stehenbleibt,
sondern die Mainloop einfach nach der Anzeige weiterläuft
und die Funktion des Systems im Hintergrund einfach
weitergeht, bis wieder ein Ereignisflag kommt.
z.B. Taste UP, dann entweder je nach Menüart den Auswahlbalken im
Menü nach oben und Anzeige aktualisieren oder
den ausgewählten wert erhöhen und anzeige aktualisieren und weiter
gehts im normalen programmablauf.

was da nun besser ist als an den anderen beispiel?

ganz einfach. ich kann durch die verwendung von arrays das Menü
frei skalieren. Kleines Menü, array kleiner machen, großes Menü
einfach vergrößern.
Da die Sprungadressen im Menü selbst integriert sind kann ich
im Menü beliebige Verzweigungen setzen und an jede beliebige
Stelle springen

ach so, was die ausgabe angeht bin ich auch variabel, da die
anzeigeroutinen von den menüroutinen getrennt sind.
hab gerade n menü für ne 16-segment-anzeige adaptiert, das
für n glcd ursprünglich erstellt wurde.
nur die anzeigeroutinen ändern und schon get das ganze
menü auf der anderen plattform

... so, jetzt kannst Du mal zeigen was Du kannst