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:
GrüßeCode:'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
Henrik






Zitieren

Lesezeichen