Hallo zusammen,
ich habe ein kleines Problem mit meinem Code (zu mindestens hoffe ich, dass es nur klein ist ). Habe das Beispiel von https://www.roboternetz.de/wissen/in...e_Machine_Menu auf meine Bedürfnisse umgestellt um es auf einem Display darzustellen.
Das Problem ist, wenn ich in U110 gehe, soll je nach dem aus welchem Menüpunkt ich komme, die entsprechende Zeile farblich hervorgehoben werden. Nur leider klappt das nicht so wie ich mir das vorstelle, bzw. wird die richtige Zeile erst gehighlighted wenn ich eine Taste drücke, die keine Auswirkung auf die Darstellung des Menüs hat.



Code:
Dim Keycode_string As String * 6
               'Key_plus|key_minus|key_prev|key_next
Keycode_string = "{056}{050}{052}{054}{057}{055}"
Dim Keycode(6) As Byte At Keycode_string Overlay

Do
   Debounce Pinc.6 , 0 , Up_press , Sub                'Keycode zuweisen hoch
   Debounce Pinc.7 , 0 , Down_press , Sub                   'runter
   Debounce Pinc.4 , 0 , Minus_press , Sub                  'links
   Debounce Pinc.3 , 0 , Plus_press , Sub                   'rechts
   Debounce Pinc.5 , 0 , Ok_press , Sub                     'OK
   Debounce Pinc.2 , 0 , Abbort_press , Sub                 'Abbrechen
Loop


Change_state:
    lds R8, {State}
    lds R9, {State + 1}
    For I = 1 To 6
      Read W
      'Print Key
      If Key = Keycode(i) Then
           If W <> Loadlabel(null) Then
              State_renew = 1
              Key = Key_null                                
              State = W
           End If
      End If
    Next I

    Read State_gosub     
    Read Lcd_textbuffer                                    
    Read Test_id
Return



    S110:                                                   'Programm 1
           Adr2 Null : Adr2 Null : Adr2 Null : Adr2 S111 : Adr2 S120 : Adr2 S100
           Adr2 U110                                        'Subroutine for current State
           Data " UMenu 1_10  "
           Data 1%


       S111:                                                'Programm 1
             Adr2 Null : Adr2 Null : Adr2 S110 : Adr2 S112 : Adr2 S120 : Adr2 S100
             Adr2 U110                                      'Subroutine for current State
             Data " UMenu 1_11"
             Data 2%

       S112:                                                'Programm 1
             Adr2 Null : Adr2 Null : Adr2 S111 : Adr2 S113 : Adr2 S120 : Adr2 S100
             Adr2 U110                                      'Subroutine for current State
             Data " UMenu 1_12"
             Data 3%



Caller:
   LDS R31, {State_gosub+1}                                 'High see Bascom-Doc Mixing ASM and BASIC
   LDS R30, {State_gosub}                                   'Low
   LSR R31                                                  'Division durch 2 (Alternativ ADR verwenden)
   ROR R30
   'Call zum Sub
   ICALL
Return


U110:
   Label_count = 1
   For Point = 20 To 60 Step 10
     If Test_id = Label_count Then                       
      Call Lcd_print(text(label_count) , 10 , Point , 1 , 1 , 1 , Black , Green)
     Else
      Call Lcd_print(text(label_count) , 10 , Point , 1 , 1 , 1 , White , Dark_red)
     End If
      Label_count = Label_count + 1
   Next Point
Return


Down_press:  'label für eine gedrückten Button 
   Key = "{054}"                                            
   Gosub Change_state_by_sub
   Gosub Caller
Return
Ich hoffe es ist Verständlich was ich da an Code gepostet habe.....