PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sekunden Anzahl in Minuten:Sekunden umrechnen



Björn
12.08.2005, 12:22
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

Marco78
12.08.2005, 12:56
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.

mx3
12.08.2005, 13:12
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

Björn
12.08.2005, 13:44
Jo vielen Dank! Funktioniert.

Gruß, Björn

oe9vfj
12.08.2005, 15:15
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.