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