Hab mich schlecht ausgedrückt. Ich meinte, ob es so sein SOLL ?
Ich weiß nicht, wie du das meinst, mit dem Hochzählen von Anzahl bis 75 ?
Du hast doch nur 5 Zustände (=anzahl Tastendruck)

Dann muß deine Schleife aus zwei Teilen bestehen:
1) Soll sich der Zustand ändern ? (Tastenabfrage)
2) das tun, was gerade anliegt.

bei 1) kanst du nicht reagieren, WÄHREND die Taste gedrückt ist, sondern nur, wenn sich was ÄNDERT.
(sonst ratterst du durch alle sub's, solange du den Finger auf der Taste
hast. )
Code:
'du brauchst noch ein Feld
DIM tastealt as byte
' Abfrage in der schleife (Das debouncing ignorier' ich mal)
   if pinb.0 = 1 and tastealt.0 = 0 then
            incr zustand
' also nur, wenn die Taste von "NICHT GEDRÜCKT" auf "GEDRÜCKT" wechselt
   end if
   tastealt =   pinb  ' so oder so merken
2)
Code:
 select case zustand
 case 0:     ' nix
 case 1:   gosub lauflicht
 case 2:  gosub allean
 case 3:  gosub nacheinander
 case 4:  gosub startrek
 case else:
             zustand = 0   ' wieder von vorn
 end select
Deine Subs dürfen natürlich keine Dauerschleifen sein, sie müssen immer wieder zurückkommen