PDA

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



rici35
03.04.2007, 07:02
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

x-ryder
07.04.2007, 10:35
da iss glaubich wohl einiges falsch ^^
1. nen timer muss man meiner meinung nach auch starten
2. du hast kein return-jump in deiner isr, d.h. das programm beendet sich im prinzip nach dem ersten jump beim timerüberlauf
3. du willst portd.0 setzen und configst dafür c.2 als output?


$regfile = "m32def.dat"
$framesize = 40
$swstack = 10
$hwstack = 32
$crystal = 8000000
$baud = 9600

Config Portd.0 = Output 'definiert Portd als Output
Dim Zaehler As Byte
Zaehler = 0


Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1
Enable Interrupts
Enable Timer1 'schalte den Timer1 ein
On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
Timer1 = 34285 'Timer1 soll schon von 34285 wegzählen
Start Timer1

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
Toggle Portd.0
Incr Zaehler
Return

Uhrzeit:
Print "Uhrzeit"

Datum:
Print "Datum"

Temperatur:
Print "Temperatur"

so, ich gloob des sollt besser funzn ^^

Maddin

rici35
11.04.2007, 15:19
Vielen Dank Maddin.

Gruß aus Franken

Rici

[quote="x-ryder"]da iss glaubich wohl einiges falsch ^^
1. nen timer muss man meiner meinung nach auch starten
2. du hast kein return-jump in deiner isr, d.h. das programm beendet sich im prinzip nach dem ersten jump beim timerüberlauf
3. du willst portd.0 setzen und configst dafür c.2 als output?