- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: Mein Menü funkioniert nicht richtig

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.06.2004
    Beiträge
    61

    Mein Menü funkioniert nicht richtig

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich habe versucht ein Menü zu schreiben. Das Problem ist, dass ein Unterpunkt aufgerufen wird, auch wenn ich diesen gar nicht aufrufe; er erscheint immer .
    Kann man das ganze Menü vielleicht eleganter programmieren, oder bin ich so auf dem richtigen Weg?
    Gruß Max

    Code:
    $regfile = "2313def.dat"
    $crystal = 4000000
    
    Config Portb = Output
    Config Portd = Input
    Dim Vorvari As Byte
    Dim Menue As String * 10
    Dim Best As Byte
    
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Config Lcd = 16 * 4
    
    
    Portd = &B11111111
    Portb = &B11111111
    
    
    Initlcd
    Cls
    Cursor On
    Deflcdchar 1 , 32 , 32 , 4 , 8 , 31 , 8 , 4 , 32            ' pfeil nach links
    Deflcdchar 2 , 32 , 32 , 4 , 2 , 29 , 2 , 4 , 32            ' pfeil nach rechts
    Deflcdchar 3 , 10 , 32 , 17 , 17 , 17 , 19 , 13 , 32        ' ue
    Deflcdchar 4 , 32 , 32 , 14 , 17 , 21 , 17 , 14 , 32        ' ok
    Deflcdchar 5 , 10 , 32 , 14 , 1 , 15 , 17 , 15 , 32         ' "ae"
    Deflcdchar 6 , 32 , 12 , 18 , 18 , 12 , 32 , 32 , 32        ' °
    
    
    
    '-----Startbildschirm------
    Locate 1 , 1
     Lcd "*Steuerung*"
    Locate 2 , 6
     Lcd "*Start*";
    Locate 3 , 3
     Lcd Chr(4) ; "=Best" ; Chr(5) ; "tigen"
    Locate 4 , 1
     Lcd Chr(1) ; "=Zur" ; Chr(3) ; "ck | " ; "Vor=" ; Chr(2)
    Gosub Eingabe                                               'wenn taster2 gedrück-> weiter
    Cls
    '------Hauptprogramm------
    Do
     Vorvari = 1                                               
     Best = 0
     Do
      Home
      Debounce Pind.0 , 0 , Zurueck , Sub
      Debounce Pind.1 , 0 , Vor , Sub
      If Vorvari = 1 Or Vorvari = -3 Then Gosub Ausw1
      If Vorvari = 2 Or Vorvari = -2 Then Gosub Ausw2
      If Vorvari = 3 Or Vorvari = -1 Then Gosub Ausw3
      If Vorvari = 4 Or Vorvari = 0 Then Gosub Ausw4
     Loop Until Vorvari = -3 Or Vorvari = 5
    Loop
    '---------------
    
    Ausw1:
     Locate 1 , 1
     Lcd "Temperatur "
    'If Pind.2 = 0 Then
     Cls
     Locate 2 , 1                     'HIer werden später dann die Temperaturen per Variablen eingefügt
     Lcd "Innen:"
     Locate 3 , 1
     Lcd "Außen:"
     Locate 4 , 1
     Lcd "3.Fühler:"
    Return
    
    Ausw2:
     Lcd "Beleuchtung"
    Return
    
    Ausw3:
     Lcd "Strom      "
    Return
    
    Ausw4:
     Lcd "Ende       "
    Return
    
    
    '---------Routinen-----------
    Zurueck:
    Vorvari = Vorvari - 1
    Return
    
    Vor:
    Incr Vorvari
    Return
    
    Eingabe:
    Do
    Loop Until Pind.2 = 0           'Erst beim Drücken der Taste läuft das Programm weiter

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.06.2004
    Beiträge
    61
    Hat niemand eine Idee wie man das Programm ausbessern könnte?
    schade

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.08.2004
    Beiträge
    197
    Am Ende fehlt im der Sub ein Return und am Schluss ein End. Dann würde ich die LCD-Anzeige nicht dauernt Clearen "CLS"
    Du benutzt ja schon Locate, setze nur die Änderungen mit genauen Locates.
    Ich schau mal den Code weiter an...

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.08.2004
    Beiträge
    197
    Probierst du das im Simulator ? Dann debonce mal mit Logisch 1.
    Denke dran der Tastenbediener muss gerade dann gedrückt haben, wenn das Program abfragt, fragt es dann wieder ab und er drückt immer noch, zählt deine Variable weiter hoch? Setze ein Flag, einen kleinen Merker, das hilft.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.08.2004
    Beiträge
    197
    Beim Menuewechsel sollte das Display CLS bekommen. Aber das siehst du dann im Simu.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen