PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein Menü funkioniert nicht richtig



MAxK
05.01.2005, 13:04
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



$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

MAxK
06.01.2005, 00:21
Hat niemand eine Idee wie man das Programm ausbessern könnte?
schade

Stromi
11.03.2005, 21:28
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...

Stromi
11.03.2005, 21:46
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.

Stromi
11.03.2005, 21:56
Beim Menuewechsel sollte das Display CLS bekommen. Aber das siehst du dann im Simu.