Da ist erstmal ein Problem mit der Syntax.
Das, was du geschrieben hast, müßte rein formal erstmal so aussehen:
Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
Config Portd.7 = Output
Config Pinc.2 = Input
Portc.2 = 1
Led Alias Portd.7
Taster Alias Pinc.2
Dim Hallo As Double
Hallo = 0
Do
If Taster = 0 Then
Hallo = Hallo + 1
End If
If Hallo = 1 Then
Led = 1
End If
Loop
End
Deswegen funktioniert es aber auch nicht
1 Wieso meinst du, ein DOUBLE für "Hallo" verwenden zu müssen ? Hast du eine Ahnung, was das ist ?
2 Wenn du eine LED auf- und abdrehen willst, müßte wohl irgendwo auch
"LED = 0" vorkommen. Tut es aber nicht ?
3 Computer wollen es immer ganz genau wissen.
Du willst LED = 1, wenn :
LED = 0 UND Taste gedrückt.
Du willst LED = 0, wenn :
LED = 1 UND Taste gedrückt.
Taste gedrückt ist aber auch komplizierter:
du fragst in einer Schleife ab, ob der Tasten-Pin = 0. Wenn du die Taste nun eine 1/2 Sekunde lang drückst, kommt dir bei der Abfrage ein paar hundert mal eine Null raus. So geht's wohl nicht.
Du mußt also den Moment erwischen, wo die Taste vorher =1 war und jetzt = 0. Dadurch stellst du sicher, daß dir dein "IF" nur einmal je Tastendruck aufgeht
Es gibt verschiedene Lösungen, je nachdem, was das Progamm sonst noch zu tun hat
Eine Möglichkeit, wenn sonst nix zu tun ist:
Code:
LED = 0
DO
' abfragen, bis die Taste ausgelassen wurde
while taster <> 1
wend
' jetzt ist taster = 1
' warten, bis die Taste gedrückt wird
while taster <> 0
wend
' jetzt ist taster = 0
if Led = 0 THEN
led = 1 ' is LED = aus, dann aufdrehen
else
led = 0 ' is LED = ein, dann abdrehen
end if
LOOP
END
Bei LED 0/1 kommst drauf an, wie die angeschlossen wurde
Lesezeichen