Da ist erstmal ein Problem mit der Syntax.
Das, was du geschrieben hast, müßte rein formal erstmal so aussehen:
Deswegen funktioniert es aber auch nichtCode:$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
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:
Bei LED 0/1 kommst drauf an, wie die angeschlossen wurdeCode: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






Zitieren


Lesezeichen