PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nochmals Timer Problem.



Blamaster
29.02.2008, 12:44
Hi,

ich hatte vor einiger Zeit schonmal wegen einem Timer Problem gepostet. Nun konnte der Fehler schonmal weiter eingegrenzt werden.

Dieser Code geht. Avr auf dem display erscheint eine 0 die sich dann halt im sekundentakt erhöht.



$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600

Config Portb.3 = Input

Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
Config Lcd = 24 * 2
Initlcd
Cursor Off


Dim Minuten As Byte
Dim Sekunden As Byte
Sekunden = 0


Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Timer1 = Timervorgabe
Enable Interrupts

Do
Gosub Automodus
Loop

Automodus:

Enable Timer1

Do
Locate 2 , 1
Lcd Sekunden
If Sekunden = 5 Then
Locate 1 , 1
Lcd "5 sek"
End If
Loop

End

Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return


Sobald ich nun aber einen Taster mit einbaue, der den zählvorgang startet fängt er bei 1 an zu zählen anstelle von 0.



$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600

Config Portb.3 = Input

Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
Config Lcd = 24 * 2
Initlcd
Cursor Off


Dim Minuten As Byte
Dim Sekunden As Byte
Sekunden = 0


Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Timer1 = Timervorgabe
Enable Interrupts

Do
If Pinb.3 = 1 Then
Gosub Automodus
End if
Loop

Automodus:

Enable Timer1

Do
Locate 2 , 1
Lcd Sekunden
If Sekunden = 5 Then
Locate 1 , 1
Lcd "5 sek"
End If
Loop

End

Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return


Jemand eine Idee wodran das liegen kann ?

mfg Blamaster