PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stopuhr fertig aber zeigt nur sekunden an!!!



der noob
17.08.2004, 14:12
So ich habe mein prog fertig nur ich weiss nicht ganz genau wie ich das hinkriege wenn der zähler über 60sek. das er minuten anzeigt könnt ihr mir helfen!!

'1. auslesen des CPU - timers
'2.abfrage wenn "start-taste" gedrückt ist
'3.starten des timer
'4.abfrage wenn "Stop" gedrückt ist
'5.Auslesen den neuen timers
'6. neuen timer vom alten berechnen
'7.Auslesen der egebnisse






define port1 port[1]
define port2 port[2]
define port3 port[3]
define starttimer word
define stoptimer word

#an
Print "Zum einschalten Port2"
wait port2 = on

#anfang
pause 5
print "Stopuhr ist eingeschaltet"
print "Starten mit port1"
print "Stoppen mit port1"
pause 5
wait port1=on

#tastestart
pause 2
if port1 = on then goto start

#tastestop
pause 2
wait port1 = on
goto ausgabe

#ausgabe
gosub stop
print "Zeit="; stoptimer
print "weiter mit port1"
goto tastereset

#tastereset
pause 5
wait port1 = on
goto anfang

#Start
starttimer = timer
print "Uhr läuft!"
goto tastestop

#stop
stoptimer = (timer-starttimer) / 50
return

Florian
17.08.2004, 14:19
Hi!
Rechne es doch einfach um!?
Wieviele Sekunden hat eine Minute, und wieviele Minuten hat eine Stunde? ;o) *lol*

der noob2
18.08.2004, 09:02
Trotzdem kann ich das nicht!!!
HILFE!°!°!°!°!°!°!°!°!°! 8-[

Matthias
18.08.2004, 10:53
Was hat dir an meinem Program nicht gefallen... hat doch perfekt gefuntzt (wenn man im simulator die funktion uhr automatisch stellen oder so deaktiviert)

Mach doch einfach nochne variable die dann das macht:

if timer-starttimer=60 then minuten=minuten+1
if timer-starttimer=60 then starttimer=timer

BlueNature
18.08.2004, 11:00
Dein Timer hat 20ms-Schritte. Also 50 Schritte pro Sekunde. Nach 50*60 Schritten brauchst du eine Minutenumschaltung, also bei 3000. Da der Timer von -32000 bis ca. +32000 läuft und dann wieder nach -32000 springt, hast du maximal ca. 10 Minuten die du damit in 20ms Genauigkeit (eher schlechter) messen kannst.

Der Timer ist aber freilaufend und kann so nicht auf einen Startwert gesetzt werden. Damit weist du nicht ob du am Ende oder dem Anfang deines Wertebereichs bist und o der Umsprung bald komt. Das muss man eben auch mit abfragen und eintsprechend verrechenen.

xSek = Timer / 50
xMin = Timer / 3000

Grüsse Wolfgang

Matthias
18.08.2004, 11:01
Oh, mist... hab ich ja ganz vergessen...

BlueNature
18.08.2004, 11:10
Was hat dir an meinem Program nicht gefallen... hat doch perfekt gefuntzt (wenn man im simulator die funktion uhr automatisch stellen oder so deaktiviert)

Mach doch einfach nochne variable die dann das macht:

if timer-starttimer=60 then minuten=minuten+1
if timer-starttimer=60 then starttimer=timer

So geht das nicht sicher ;)

Wenn der Timer in dem Moment erhöht in dem das Programm noch in der ersten Zeile ist, dann ist in der zweiten Zeile eine "61" und dem If alles so ziemlich gleichgültig...

Also besser:

...
If Timer - StartTimer < 3000 then GoTo IstKleinerMin
Minuten = Minuten + 1
' Ende des Timers erreicht?!?
If IstStartTimer < 32000 Then IstStarttimer = IstStarttimer + 3000
#IstKleinerMin
...

Dei 32000 ist der maximale Timerwert Minus 3000, da dort der Timer eh von vorne beginnt. Also darauf prüfen! Sonst ist mal Der IstStertTimer > Timer und es dauert ganze 11 Minuten bis eine Minute erkannt wird!

Grüsse Wolfgang