Hallo DerSchatten,

da ich kein C beherrsche, werde ich mal versuchen, dir ein einfaches Beispiel (also die Funktionsweise) zu erklären:
Wenn der Taster gedrückt worden ist, geht das Programm in eine kleine Schleife, in welcher 1ms lang gewartet wird und dann wird eine Variable erhöht. Wenn der Taster wieder losgelassen wurde, verlässt der µC die Schleife. Nun wird die Variable abgefragt, ob sie größer als 2000 (also 2000ms entspricht 2s) ist. Anschließend soll der µC darauf reagieren und die Variable muss wieder auf 0 gesetzt werden. Allerdings ist das ganze nicht gerade "schnell", da der µC ziemlich lange in der Schleife feststecken kann. Außerdem musst du aufpassen, dass die Variable nicht überläuft.
Hier mal ein Pseudocode:
Code:
wenn taster1 = gedrückt dann
 solange taster1 gedrückt
 1ms warten
 variable xy um 1 erhöhen
 wenn nicht mehr gedrückt, schleife verlassen
 wenn variable xy >= 2000 
  taster = mindestens 2s lang gedrückt
 allenfalls
  taster = maximal 2s lang gedrückt
 ende wenn
 varaible xy = 0
ende wenn
Hier mal das ganze in BASCOM, ist meiner Meinung nach leicht verständlich:
Code:
if t1 = 0 then
while t1 = 0
waitms 1
xy = xy + 1
wend
if xy >= 2000
taster = 2
else
taster = 1
endif
xy = 0
endif
Ich hoffe, ich konnte dir helfen.
Wenn du das ganze allerdings schneller programmieren möchtest, solltest du einen timer so einstellen, dass er jede millisekunde (am besten) überläuft und dann das ganze in die ISR packen.

Gruß
Chris