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