Hallo, erst mal die besten Neujahrswünsche an die Roboter-Gemeinde!!!
Ich habe ein kleines problem mit einem Programm:
eine spezielle abfolge von tasterbetätigungen soll einen port ein-und anschließend wieder schalten. Dann neu starten.
(taster1, dann taster2, und während dieser gedrückt gehalten wird nochmal taster1)
wenn die abfolge 2 mal falsch hintereinander erfolgt, dann soll das Programm stoppen.
Eine LED gibt hierüber auskunft.
das problem: das programm funktioniert anfänglich. wenn es aber längere Zeit auf „bereitschaft“ stehen soll (in der ersten do loop schleife), dann verselbständigt es sich. das äußert sich, indem z. B. nach langer Zeit (z.B. 20 stunden oder so) die LED aufleuchtet und das Programm somit gestoppt ist. oder eine richtige eingabe vom programm als falsch quittiert wird.
es scheint, als würde der taster während der (loop)zeit eine (geisterhafte) betätigung erfahren...
nach reset geht wieder alles einwandfrei, bis zur nächsten längeren wartezeit...
was könnte die ursache für dieses phänomen sein?
gruß
Holger
Code:$regfile = "m32def.dat" $crystal = 8000000 '=interner Quarz, 9000000 für externen Quarz $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 Config Portb = Output Config Portd.2 = Output 'leds Config Portd.3 = Output Config Portd.4 = Output Config Portd.5 = Input Config Portd.6 = Input Config Porta = Input 'taster Porta.0 = 1 Porta.2 = 1 Dim A As Word Dim B As Word Program: Portb.1 = 0 'Led Do Loop Until Pina.0 = 0 Or Pina.2 = 0 If Pina.2 = 0 Then Portb.1 = 1 Goto Abbruch Else End If Waitms 300 Do Loop Until Pina.0 = 0 Or Pina.2 = 0 If Pina.0 = 0 Then Portb.1 = 1 Goto Abbruch Else End If Waitms 10 Do Loop Until Pina.0 = 0 Or Pina.2 = 1 If Pina.2 = 1 Then Portb.1 = 1 Goto Abbruch Else End If Waitms 100 Portb.0 = 1 Waitms 1200 'relais an Portb.0 = 0 A = 5 Goto Program Abbruch: Wait A A = A + 5 If A >= 15 Then Stop Else Goto Program End If End
Lesezeichen