Hallo,

ich versuche gerade ein eigentlich einfaches Programm zu schreiben doch es gelingt mir nicht.
Eine Led soll eingeschaltet werden sobald einer der Dip-Schalter eingeschaltet wird. Danach soll die Led einfach nur an bleiben egal wie die Schalter hin und her geschaltet werden solange nur ein Dip auf on steht. Sobald dann alle Schalter Off sind soll die Led aus gehen.

Ich habe es bereits mit dem Debounce-Befehl versucht aber irgendwas ist nicht korrekt da bei verschiedenen Schalterkombinationen die Led unterschiedlich schnell an und aus geht. Ich denke es hat was mit den 25ms zu tun die gewartet werden.

Ich weiß für diese Aufgabe bräuchte man eigentlich keinen µC aber jeder Schalter soll später auf einem LCD mit "ON" "OFF" angezeigt werden.

Hier mal mein Versuch:
Code:
$regfile = "M8def.dat"
$crystal = 1000000




Config Portc = Input

Dip1 Alias Pinc.0
Dip2 Alias Pinc.1
Dip3 Alias Pinc.2
Dip4 Alias Pinc.3

Portc = 1

Config Portd.0 = Output
Led Alias Portd.0


Do

 Debounce Dip1 , 0 , Led_on , Sub
 Debounce Dip1 , 1 , Led_off , Sub

   Debounce Dip2 , 0 , Led_on , Sub
   Debounce Dip2 , 1 , Led_off , Sub

      Debounce Dip3 , 0 , Led_on , Sub
      Debounce Dip3 , 1 , Led_off , Sub

         Debounce Dip4 , 0 , Led_on , Sub
         Debounce Dip4 , 1 , Led_off , Sub
 Loop
End

Led_on:

 Led = 0



Return

Led_off:

 Led = 1

Return
Mit if-then Schleifen hab ich es auch schon probiert aber ich denke das ist zu umständlich und funktioniert hat es nicht richtig da die Led beim Schalten in der Helligkeit variiert hat.