Hi Marco78,
Ich sehe gerade, das ich zwei Zeilen vergessen habe.
Richtig wäre :
Sinn und Zweck des Ganzen ist folgender.Code:: Anfang 'Anfang der Endlosschleife If Pind 1.0 = 1 then 'Wenn der Einschalttaster betätigt wird -> Merker setzen Merker = 1 If Pind 1.1 = 1 then 'Wenn der Ausschalttaster betätigt wird -> Merker löschen Merker = 0 If merker = 1 then 'Wenn Merker gesetzt ist -> in Subroutine verzweigen gosub Subroutine Goto Anfang 'Rücksprung zum Anfang : Subroutine hier steht der Code für die Subroutine End Of Programm
Zwischen ':Anfang' und 'Goto Anfang' ist der Programmcode, der die Abfrage der Taster vornimmt. In diesem Fall ist es eine Endlosschleife, die sehr schnell abgearbeitet wird, bis ...
... die Bitvariable 'Merker' gesetzt ist. Wenn der Merker gesetzt ist wird in die Subroutine verzweigt. In der Subroutine muss jetzt gewährleistet werden, daß diese so schnell wie möglich abgearbeitet wird. Das ist zwingend notwendig, damit die Taster so oft wie möglich abgefragt werden können. Waitbefehle sollten so klein wie möglich gewählt werden. Die Kombination eines kurzen Waitbefehles mit einem Zähler führt zu einem langen Wartezeitraum. Mit dem 'Select Case' - Befehl kann der Zählerstand und damit die abgelaufene Zeit in der Subroutine verwendet werden. Das hat jetzt aber nichts mehr mit dem Tasterproblem zu tun.
Grüße Klaus







Eine verrückte Idee ist besser als keine
Zitieren
Lesezeichen