Moin Rolf,

vom reinen Code her würde ich auf den ersten Blick auch sagen, dass das Programm eigentlich in der "Piepen"-Schleife landen müsste, wenn keiner der vier Taster geschlossen wird. Auch wenn man den Code hier & da noch etwas verschlanken könnte - aber darum geht´s im Moment ja (noch) nicht

Ich hatte einmal ein ähnliches Problem, als ganz am Anfang des Programms (noch vor der Do-Loop-Schleife) ein komplettes Byte mittels DIP-Schalter eingestellt und eingelesen werden sollte. Dabei kamen auch ganz andere Werte heraus, als mit dem Schalter eingestellt wurden.

Das Problem ließ sich beheben, indem ich nach der Aktivierung der PullUp-Widerstände eine kurze Wartezeit programmiert habe (waitms 50). Irgendwie scheinen sich diese High-Pegel nicht unmittelbar sofort einzustellen, warum weiß ich auch nicht genau, denn die Zeitkonstante aus dem PullUp-Widerstand und der Eingangskapazität ist schon sehr kurz. Aber nach dieser kleinen initialen Pause ging´s einwandfrei: Taster offen = 1, Taster geschlossen = 0.

Versuch´s einfach mal!


Gruß,

Daniel