Hi,
ich habe eine Sekunden Anzahl, z.B. 300. Diese möchte ich umrechnen in 5:00. Also Minuten:Sekunden. Gibt es in Bascom dafür irgendwelche Funktionen oder so?
Gruß, Björn
Hi,
ich habe eine Sekunden Anzahl, z.B. 300. Diese möchte ich umrechnen in 5:00. Also Minuten:Sekunden. Gibt es in Bascom dafür irgendwelche Funktionen oder so?
Gruß, Björn
Nur tote Fische schwimmen mit dem Strom...
Ich denke das geht nur umständlich über die Systemzeit.
Du kannst beim Sekunden zählen ja gleich die Minuten beachten.
z.B.
Aber ich denke mal du willst rückwärts zählen.Code:blablabla Code der ISR Incr Sekunden If Sekunden = 60 then Sekunden = 0 Incr Minuten End If blabla Code der ISR Return
Also...
Minuten = Sekunden / 60
Sekunden = Sekunden - ( Minuten * 60 )
Dazu sollten die Sekunden der ISR aber einen anderen Namen haben als Sekunden. Den Namen musst du in der Formal dem entsprechend auch ändern
Und Bascom kann pro Zeile nur eine Operation. Das musst du dann aufteilen und Hilfvariablen benutzen.
PS: Zuviel zum Thema du hast den Rest schon vorbereitet :P
Benutzt du die Demo von BASCOM? Ich könnte mir vorstellen, das du über die Grenze von 2KB kommst. Die neuste Demo kann angeblich 4KB. Das dürfte für deine Anwendung schon reichen.
Hallo!
In Basic(VB) heißt die Funktion MOD für Divisons-Rest hab aber auf
die schnelle sowas in Bascom nicht gefunden.
Versuchsmal mal so.
Print B und Print D ist das Ergebnis
mfg,MX3
$regfile = "2313def.dat"
$crystal = 4000000
Baud = 9600
Dim A As Word
Dim B As Word
Dim C As Word
Dim D As Word
A = 450
B = A / 60
C = B * 60
D = A - C
Do
Print A ' Sekunden Gesamt
Print B ' nur Minuten
Print C ' nur Minuten aber auf Sek gerechnet
Print D ' Rest Sekunden
Wait 2
Loop
Jo vielen Dank! Funktioniert.
Gruß, Björn
Nur tote Fische schwimmen mit dem Strom...
Auch in Bascom AVR gibt es den MOD Befehl, sodass sich obiges Beispiel so darstellt:
BASCOM-AVR hat aber auch einiges an Zeitfunktionen zu bieten.Code:A = 300 B = 300 / 60 ' Minuten C = 300 MOD 60 ' Sekunden
mit String = TIME(LONG)
kann man der Funktion TIME die Sekunden in einer LONG-Variablen übergeben und erhält einen Zeitstring mit der umgerechneten Zeit in Stunden:Minuten:Sekunden
Die Ausgabe ist 00:05:00Code:dim lSeconds as Long Dim StrTime as String * 8 $Lib "DateTime.lbx" lSeconds = 300 strTime = time(lSeconds) print strTime
Leider wird hier die 16-Bit Division Routine (noch) nicht automatisch gelinkt, daher muss, wenn nicht schon eine solche irgendwo sonst im Programm vorkommt (Word oder Integer-Division) mit z.B.
Dim W1 as Word
W1 = W1/W1
etwas getrickst werden.
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
Lesezeichen