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:
Hier mal das ganze in BASCOM, ist meiner Meinung nach leicht verständlich: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
Ich hoffe, ich konnte dir helfen.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
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







Zitieren

Lesezeichen