Archiv verlassen und diese Seite im Standarddesign anzeigen : Sekunden Anzahl in Minuten:Sekunden umrechnen
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
Ich denke das geht nur umständlich über die Systemzeit.
Du kannst beim Sekunden zählen ja gleich die Minuten beachten.
z.B.
blablabla Code der ISR
Incr Sekunden
If Sekunden = 60 then
Sekunden = 0
Incr Minuten
End If
blabla Code der ISR
Return
Aber ich denke mal du willst rückwärts zählen.
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 :-b
$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
Auch in BASCOM AVR gibt es den MOD Befehl, sodass sich obiges Beispiel so darstellt:
A = 300
B = 300 / 60 ' Minuten
C = 300 MOD 60 ' Sekunden
BASCOM-AVR hat aber auch einiges an Zeitfunktionen zu bieten.
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
dim lSeconds as Long
Dim StrTime as String * 8
$Lib "DateTime.lbx"
lSeconds = 300
strTime = time(lSeconds)
print strTime
Die Ausgabe ist 00:05:00
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.