-
Timer und Zähler
Hallo,
was mache ich da eigentlch falsch?
Der Zähler müsste doch im Sekundentakt hochzählen, oder?
Code:
$regfile = "m32def.dat"
$framesize = 40
$swstack = 10
$hwstack = 32
$crystal = 8000000
$baud = 9600
Config Portc.2 = Output 'definiert Portd als Output
Dim Zaehler As Byte
Zaehler = 0
Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1
Enable Timer1 'schalte den Timer1 ein
On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
Enable Interrupts
Timer1 = 34285 'Timer1 soll schon von 34285 wegzählen
Do
Print "Zaehler =" ; Zaehler
If Zaehler = 2 Then
Goto Uhrzeit
End If
If Zaehler = 4 Then
Goto Datum
End If
If Zaehler = 6 Then
Goto Temperatur
End If
Loop
End
Isr_von_timer1: 'ISR von Timer1
Timer1 = 34285 'Timer1 soll wieder von 34285 wegzählen
On Timer1 'schaltet Portd.0 im Sekundentakt
Incr Zaehler
'EIN und AUS
'....oder z.B. incr Variable
Uhrzeit:
Print "Uhrzeit"
Datum:
Print "Datum"
Temperatur:
Print "Temperatur"
Gruß
Richad
-
Hallo,
was soll denn der Befehl
"On Timer1 'schaltet Portd.0 im Sekundentakt"
in der ISR bewirken? Mich wundert, dass der Compiler nicht das fehlende Label anmeckert.
Im schlechtesten Fall führt dies dazu, dass vom ersten Aufruf ab keine ISR mehr definiert ist. Und was hat das mit Portd.0 zu tun?
Gruß
Rolf
-
Hallo Rolf,
mittlerweile habe ich es geschafft die Variable Zähler im Sekundentakt hochzuzählen.
Aber vielleicht kannst du mir mit meinem Grundproblem helfen.
Ich habe mehrere Programme die einzeln alle funktionieren.
Das ist zu einem ein Programm zur Temperaturmessung, eines zur Uhrzeitanzeige (DCF77), eines zur Datumsanzeige (DCF77) und als letztes eines zur I2C Übertragung.
Einzeln funktioniert das alle super. Nun möchte ich alle Werte hintereinander auf ein LED Display übertragen.
Ich hatte versuchtes so zu lösen:
Die Temperatur auslesen; anzeigen:
Wait 3
Uhrzeit anzeigen
Wait 3
Datum anzeigen
Wait 3
das scheint nicht die richtige Vorgehensweise zu sein, da ich durch Wait den Prozessor stoppe und das DCF77 nicht mehr weiter verarbeitet wird.
Also müsste ich da wohl anders lösen:
Mir fallen da die Timer ein. Wie macht man sowas?
Leider bin ich Anfänger.
Gruß
Richard