Hallo Reinhard,
hier hats alle möglichen Leute, vom absoluten Anfänger bis zum
erfahrenen Profi. Das sieht man den Leuten aber nicht an, deswegen ist
es wichtig, daß man sagt, wie die eigenen Vorkenntnisse sind.
Tastenprellen ist das Phänomen, daß beim Drücken eines Tasters der
Kontakt nicht einfach geschlossen wird, sondern die Kontaktzunge zuerst
Kontakt bekommt, dann aber abprallt (Kontakt öffnet wieder), wieder
nach unten kommt (Kontakt schließt wieder) usw. usf.
Das Ganze wiederholt sich ein paarmal, bis der Kontakt sauber
geschlossen wird. Wenn man mit dem Taster einfach ganz normal z.B. eine
LED schaltet, dann fällt das nicht auf, weil das menschliche Auge dafür
viel zu träge ist. Hat man aber einen Microcontroller, dann macht es
plötzlich einen Unterschied. Die Lösung ist dabei, daß man schaut wie
lange der Taster betätigt wird. Kein Mensch kann einen Taster nur für 2
Millisekunden drücken, also kann man das ignorieren.
Tasten werden nicht automatisch entprellt wenn Du den Pin als Eingang
setzt, weil der Microcontroller ja nicht wissen kann, was Du eigentlich
damit machen möchtest.
Dein eigentliches Problem ist aber ein anderes:
Wenn Pinb.1 = 1 ist, dann setzt Du SchaltindexLinks auf 1, aber Pinb.1
bleibt danach solange auf 1, bis Du die Taste losläßt. Nachdem die
Variable gesetzt wurde, fängt Deine Schleife (Hauptprogramm) wieder von
vorne an, er geht in den "If SchaltindexLinks = 1 Then" - Teil rein,
macht die beiden LEDs an und Pinb.1 ist immer noch 1 (das Ganze hat nur
ein paar Microsekunden gedauert!) und deswegen wird SchaltIndexLinks
jetzt auf 2 gesetzt. Dann läuft bei Dir die innere Schleife (Pinb.1 ist
immer noch 1), SchaltindexLinks wird auf 3 gesetzt, die innere Schleife
verlassen, die LEDs wieder ausgeschalten (das alles hat jetzt weniger
als eine Millisekunde gedauert), daraufhin wird das große if verlassen,
die Pinb.1 wieder überprüft, die ist immer noch 1 und das Spielchen
geht von vorne los.
War das soweit verständlich und hilft Dir die Erklärung weiter?
Markus