Hi Marco78,

Ich sehe gerade, das ich zwei Zeilen vergessen habe.

Richtig wäre :
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
Sinn und Zweck des Ganzen ist folgender.
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