PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer und Zähler



rici35
03.04.2007, 07:22
Hallo,

was mache ich da eigentlch falsch?

Der Zähler müsste doch im Sekundentakt hochzählen, oder?


$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

for_ro
03.04.2007, 09:18
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

rici35
03.04.2007, 19:53
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