PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit LCD-ausgabe



ZwieBack
03.07.2007, 20:02
Abend,

wir haben und auf Arbeit zum Spass ne Bewässerungsanlage für 2 Planzen gebaut, Vorratsbehälter mit Standmessung, Schauchpumpe und 2 Ventile das ganze wird mit ner Logo gesteuert. Zu ner bestimmten Zeit läuft die pumpe an , das erste Ventil wird geöffnet dann schließt das erste und das zweite öffnet, schließt und die pumpe stoppt. Zur Veranschauung

http://www.bilder-hochladen.net/files/thumbs/37qx-1.jpg (http://www.bilder-hochladen.net/files/37qx-1-jpg.html)

Nun wollt ich das ganze noch mitn nem LCD ausstatten, mit dem prog


$regfile = "m8def.dat"
$crystal = 7372800

Declare Sub Ventil1
Declare Sub Ventil2
Declare Sub Pumpeaus

Ddrd = &B11111111
Portd.6 = 1
Portd.7 = 1

Dim A As Bit
Dim B As Bit

A = Pind.6
B = Pind.7

Initlcd

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

Cls
Locate 1 , 1
Lcd " V0815 "

Wait 2


Do

If A = 1 And B = 0 Then
Call Ventil1
End If


If A = 0 And B = 1 Then
Call Ventil2
End If


If A = B Then
Call Pumpeaus
End If


Loop

'------------------------------Unterprogramme----------------------------------

Sub Ventil1

Locate 1 , 1
Lcd "Pumpe Ein "
Locate 2 , 1
Lcd "Ventil 1 Auf "

End Sub


Sub Ventil2

Locate 1 , 1
Lcd "Pumpe Ein "
Locate 2 , 1
Lcd "Ventil 2 Auf "

End Sub


Sub Pumpeaus

Locate 1 , 1
Lcd "Pumpe Aus "
Locate 2 , 1
Lcd "Ventile Zu "

End Sub

Eigentlich ganz simpel, es sollen nur immer die Ports abgefragt werden und dann das entsprechende Bild angezeigt werden. Nur hab ich das problem, das ich immer die anzeige der Sub Pumpeaus zu sehen bekomm. Wenn ich dagegen einen Pin wärend der Progübertragung auf GND lege wird mir das richtige Bild am LCD ausgegeben.

zum testen hab ich an die ports erstma je an nem taster (parallel ne Led um den Pegel am pin zu sehen).

Was mach ich falsch?

Gruss ZB

linux_80
03.07.2007, 20:55
Hallo,

ich weiss jetzt nicht ob ich die logik verstanden habe, aber die letzte If-Abfrage vergleicht nur A mit B, wenn beide gleich sind, also 0 oder 1 sind !
Evtl. hilfts auch wenn Du alle If-Abfragen zusammenhängst mit ElseIf, dann tritt pro Loop bestimmt nur eine Sub in Aktion.

Aja, jetzt seh' ich's erst, die Werte für A und B werden ja nie aktualisiert, ausser beim Programmstart !
entweder am Anfang der Loop die Werte setzen,
oder statt dem Dim A .. ein :


A Alias Pind.6
für B genauso, dann wird immer auf die Ports zugegriffen.

ZwieBack
03.07.2007, 21:06
Jetz gehts, danke für die schnelle antwort.