Forum: Mikrocontroller und Digitale Elektronik Timer korrekt?


von Filth _. (filth)


Lesenswert?

Hallo,

ist der Timer so korrekt?
1
$regfile = "m644pdef.dat"
2
$crystal = 16000000
3
$hwstack = 128
4
$swstack = 512
5
$framesize = 128
6
$baud = 38400
7
8
9
10
Enable Interrupts
11
12
Config Timer0 = Timer , Prescale = 64
13
Timer0 = 6
14
15
On Timer0 Stoppuhr
16
Enable Timer0
17
Start Timer0
18
19
Dim Millisekunden As Integer
20
Dim Sekunden As Integer
21
Dim Minuten As Integer
22
23
Do
24
25
   Do
26
      Waitms 10
27
      Print Minuten ; ":" ; Sekunden ; ":" ; Millisekunden
28
   Loop
29
30
Loop
31
32
End
33
34
35
Stoppuhr:
36
   Timer0 = 6
37
38
   Millisekunden = Millisekunden + 1
39
   If Millisekunden = 1000 Then
40
         Incr Sekunden
41
         Millisekunden = 0
42
   End If
43
44
   If Sekunden = 60 Then
45
      Incr Minuten
46
      Sekunden = 0
47
   End If
48
Return

oder habe ich einen Denkfehler drin?

von Peter D. (peda)


Lesenswert?

Ich nehme mal an, auch in Bascom darf man kommentieren.
Besonders, wenn man Fragen hat, sollte man kommentieren, was man sich 
bei den einzelnen Zeilen gedacht hat.
Das sollte die Chancen auf ne helfende Antwort drastisch erhöhen.
Besonders Anfänger sollten kommentieren, damit man logische Fehler im 
Programmablauf schnell erkennt.


Ich weiß nicht, ob Bascom das kann, aber in C lasse ich Konstanden immer 
den Compiler ausrechnen, ich bin dazu zu faul. Auch verrechnet der 
Compiler sich seltener als ich. Alles, was der Compiler schon ausrechnen 
kann, kostet ja keinen Code.
Wenn Bascom das nicht kann, dann sollte man aber wenigstens die Formel 
als Kommentar hinter die Konstantenverwendung schreiben.


Peter

von spess53 (Gast)


Lesenswert?

Hi

>ist der Timer so korrekt?

Hängt immer davon ab, was er machen soll.

MfG Spess

von Filth _. (filth)


Lesenswert?

Der Timer soll einfach eine Stoppuhr sein, sprich die Zeit (mehr oder 
weniger) korrekt zählen

von Karl H. (kbuchegg)


Lesenswert?

Alex G. schrieb:
> Hallo,
>
> ist der Timer so korrekt?

Das soll offenbar eine Uhr sein.

Starte sie um Punkt 22:00 Uhr und sieh um 23:00 Uhr nach, ob die Ausgabe 
60 Minuten lautet. Wenn ja, dann wird es wohl korrekt sein

von Filth _. (filth)


Lesenswert?

Ok schaut gut aus.

Die Idee dahinter:
16.000.000 / 64 = 250.000
Timer wird um 6 Ticks vorgeschoben, also:
250.000 / 250 = 1000

Sub Stoppuhr: wird also genau 1000 mal pro Sekunde aufgerufen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.