-
Nochmals Timer Problem.
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.
Code:
$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.
Code:
$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