PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfragen ...



Blue72
01.07.2008, 23:11
Hi Leute,

ich habe in Bascom eine einfache IF Anweisung geschrieben ...

Config PortA = Input
Config PortB = Output
PortA = 1 'Pullup einschalten

Do
If Taster1 = 0 then PortB = &11000000
If Taster2 = 0 then PortB = &11111001
if Taster3 = 0 then PortB = &10100100
else PortB = &00000000
End If

Loop

Meine Frage lautet nun:
Ist es möglich auf diese Art ein Bitmuster an den PortB zu übertragen ?
Ich habe leider noch keine Controller hier zum ausprobieren, versuche mich aber schon an den ersten "Gehversuchen"

Wenn ich in Bascom den Syntaxcheck ausführe bekomme ich folgenden Fehler:
Source variable does not match the Target variable (bezogen auf die PortB =&xxxxxxxx Anweisung in der If Schleife)

Was ist denn da falsch ?

Danke schonmal.

LG
Blue

linux_80
01.07.2008, 23:35
Hallo,

nach dem & kommt wohl noch ein B.
Dann, wo kommen die Taster-Variablen her ?

Die letzte If-Abfrage wird immer greifen, wenn der Taster3 nicht gedrückt ist, auch wenn vorher einer der andern gedrückt sein sollte.

Zum Thema Taster solltes Du Dir noch den Befehl Debounce ansehen.

Sauerbruch
01.07.2008, 23:55
...und außerdem muss jede "If"-Anweisung entweder mit einem "else" kombiniert sein (wie im letzten Fall), oder aber mit einem "end if" - damit das Programm weiss, was es zu tun hat, wenn die Bedingung nicht zutrifft.

Also z.B.

If PinA.1 = 1 then X = 100 else X = 50

oder

If PinA.1 = 1 then PortB.1 = 0
End if

bzw.

If PinA.1 = 1 then
PortB.1 = 0
X = 100
Stop Timer 0
End if

Wenn Du also drei "If"-Befehle ineinander verschachtelst, muss auch an drei Stellen "End If" stehen.

Blue72
01.07.2008, 23:56
Vielen Dank, ich glaube das B war schon das Problem ;)
Die Taster Variablen kommen vom PortA.1, A.2 und A.3
Der PortB soll immer "0" sein wenn keine Taste gedrückt ist, bzw. der Wert an den Pins A.x low ist. Die variable Taster habe ich jetzt nur frei gewählt.

Ich habe jetzt jede If Anweisung so geschrieben:

Do
If Taster1 = 0 then PortB = &B11000000
Else PortB=&B00000000
End if

If Taster2 = 0 then PortB = &B11111001
Else PortB=&B00000000
End if

etc.

Loop

Anders bekam ich immer Fehlermeldungen beim Syntax-Check.

Edit: @Sauerbruch: Genau, ich hab es einfach mal probiert und jetzt klappt es :)

linux_80
02.07.2008, 20:32
Mit dieser If-Abfragen kombination kommst du aber auch nicht weit, geh mal das durch, für den Fall das Taster1 gedrückt ist !
Spätestens bei der Abfrage zum Taster2 ist alles wieder 0000, wenn dieser nicht auch gedrückt ist.
In diesem Fall musst Du die Werte "verodern", oder alles mit elseif zusammenhängen, damit die nächste if-Abfrage die letzte nicht plattmacht.

Blue72
02.07.2008, 22:34
Hallo,

danke für den Tip.