Hallo!

Meine Standardlösung nutzt 3 Tasten: Rauf, Runter und Enter.

Im gezeigten Code wird dafür eine "Tastatur" an einem Analogport genutzt. Das Beuispiel muss man sich natürlich für die eigenen Bedürfnisse zurechtfummeln:

Code:
'Gerüst für Atmega 8 mit Menue - HR - AUGUST 2005

$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600


Enable Interrupts                            'Interrupts erlauben

Config Adc = Single , Prescaler = Auto

Config Pinc.0 = Input                        'Für analog_key
Keyboard Alias Pinc.0                        'Aliasname

Config Pinb.0 = 1                            'Ausgang
Beep Alias Pinb.0

Declare Function Analog_key() As Byte

Dim Taste As Byte
Dim Menue_current As Byte
'-------------------------------------------------------------------------------

Sound Beep , 400 , 450                       'Bin wach -)
Cursor Off
Lcd "    Menue Test"
Wait 3
'-------------------------------------------------------------------------------

Cls
Menue:
Menue_current = 0

Menue_1:

Taste = Analog_key()
Waitms 100

If Taste = 32 Then
Menue_current = Menue_current + 1
End If

If Taste = 33 Then
Menue_current = Menue_current - 1
End If

If Menue_current > 6 Then Menue_current = 1
If Menue_current < 1 Then Menue_current = 6

If Taste = 10 Then Goto Execute
'-------------------------------------------------------------------------------
Select Case Menue_current                    'aktuelle Auswahl anzeigen

   Case 1
    Locate 1 , 1
    Lcd " Fall 1         "
   Case 2
    Locate 1 , 1
    Lcd " Fall 2         "
   Case 3
    Locate 1 , 1
    Lcd " Fall 3         "
   Case 4
    Locate 1 , 1
    Lcd " Fall 4         "
   Case 5
    Locate 1 , 1
    Lcd " Fall 5         "
   Case 6
    Locate 1 , 1
    Lcd " Fall 6         "

End Select
    Taste = 255
Goto Menue_1
'-------------------------------------------------------------------------------

Execute:                                     'aktuellen Menuepunkt ausführen
Cls

Select Case Menue_current
   Case 1
          Cls
          'Call 1
          Cls
   Case 2
          Cls
          'Call 2
          Cls
   Case 3
          Cls
          'Call 3
          Cls
   Case 4
          Cls
          'Call 4
          Cls
   Case 5
          Cls
          'Call 5
          Cls
   Case 6
          Cls
          'Call 6
          Cls
End Select

Goto Menue_1
'-------------------------------------------------------------------------------

End                                          'Hauptprogramm Ende

'------------------------------------------------------------------------------
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Analog_key() As Byte
   Local Ws As Word
   Analog_key = 255
   Start Adc
   Ws = Getadc(0)
   If Ws < 900 Then
      Select Case Ws
         Case 0 To 100
            Analog_key = 32
         Case 400 To 600
            Analog_key = 33
         Case 650 To 750
            Analog_key = 10
      End Select
      Sound Beep , 400 , 450                 'Quittungspiepser
   End If
Waitms 100
End Function
'-------------------------------------------------------------------------------
'
'
'.... Hier folgen die durch das Menue aufgerufenen Subroutinen bzw. Funktionen
Grüße
Henrik