Hallöle,
Ich versuche mich grad daran eine Navigation für ein LCD - Display zu programmieren. Mit dem Hauptnavigation hat das soweit geklappt und ich kann zwischen Menupunkten herumswitchen. Nun möchte ich, dass wenn ich einen Punkt anwähle und den Taster eines Drehencoder drücke ich in eine weitere Navigation komme. Dabei möchte ich aber den Taster nicht permanent gedrückt halten um in diesem Menu zu bleiben. Leider hab ich keine Ahnung oder keine weitere Idee wie ich dies anstelle. Zurzeit sieht der Quellcode so aus:


Code:
$regfile = "m16def.dat"
$crystal = 16000000


Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2



Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Input

Dim Links_boolean As Byte
Dim Rechts_boolean As Byte
Dim Ec_wert As Byte
Dim Menu As Byte
Dim Untermenu As Byte



Links_boolean = 0
Rechts_boolean = 0
Ec_wert = 0
Menu = 0
Untermenuwert = 0

Declare Sub Untermenu


Initlcd

Cursor Off


Main:
Do

Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)
Debounce Pinc.5 , 0 , Untermenu , Sub

If Links_boolean = 1 Then
   Incr Menu
   Links_boolean = 0
End If


If Rechts_boolean = 1 Then
   Decr Menu
   Rechts_boolean = 0
End If


If Menu > 7 Then Menu = 0

Select Case Menu
  Case 0:
  Cls
  Locate 1 , 1
  Lcd "Home"

  Case 2:
  Cls
  Locate 1 , 1
  Lcd "LED"

  Case 4:
  Cls
  Locate 1 , 1
  Lcd "Rolllaeden"

  Case 6:
  Cls
  Locate 1 , 1
  Lcd "Licht Haus"


End Select

Loop



Sub Untermenu:


Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)


If Links_boolean = 1 Then
   Incr Untermenu
   Links_boolean = 0
End If


If Rechts_boolean = 1 Then
   Decr Untermenu
   Rechts_boolean = 0
End If


If Untermenu > 3 Then Untermenu = 0


If Menu = 0 Then

Select Case Untermenu
Case 0:
       Cls
       Locate 1 , 1
       Lcd "Home Untermenu"

Case 2:
       Cls
       Locate 1 , 1
       Lcd "Home Untermenu2"
End Select
End If
End Sub


Links:
Incr Links_boolean
Return

Rechts:
Incr Rechts_boolean
Return


End

Besonders bei dem Debouncen und der Subroutine bin ich mir noch unsicher wie das geht. Vielleicht könnt ihr mir ja helfen

Mfg Blacksun

Edit: Ich bin auch dankbar bei Tipps zur Quellcodeverkürzung oder Quellcodeumgestaltung