Ich habe wahrscheinlich eine Variable Problem bei einem Countdown Timer
Das Problem ist wenn die Sekunden von 00 auf 59 Springen soll beim runter laufen erscheint bei den Sekunden 005
und der Timer bleibt stehen.
Wenn ich alle LCD Befehle heraus nehme läuft der Counter ohne Probleme hat jemand einen Rat.
Alles anzeigen
Das Problem ist wenn die Sekunden von 00 auf 59 Springen soll beim runter laufen erscheint bei den Sekunden 005
und der Timer bleibt stehen.
Wenn ich alle LCD Befehle heraus nehme läuft der Counter ohne Probleme hat jemand einen Rat.
BASCOM-Quellcode
- $regfile = "m16def.dat"
- $crystal = 8000000
- $hwstack = 64
- $swstack = 16
- $framesize = 48
- Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.2 , Db6 = Portd.4 , _
- Db7 = Portd.6 , E = Portd.1 , Rs = Portd.3
- Config Timer1 = Timer, Prescale = 256
- On Timer1 Zeit
- Const Timervorgabe = 34286
- Enable Timer1
- Enable Interrupts
- Config Lcd = 16 * 2
- Cursor Off
- Cls
- Config Pinb.5 = Output
- Sekunde Alias Pinb.0
- Minute Alias Pinb.1
- Stunde Alias Pinb.2
- Setup Alias Pinb.3
- Start_stopp Alias Pinb.4
- Relais Alias Portb.5
- Dim Stunden As String * 2
- Dim Stunden_temp as Byte
- Dim Minuten As String * 2
- Dim Minuten_temp As Byte
- Dim Sekunden As String * 2
- Dim Sekunden_temp As Byte
- Dim Alarm As Bit
- Dim Start_ as Bit
- Programm:
- Do
- Cls
- Locate 1 , 1
- Lcd "Timer"
- Locate 2 , 1
- Lcd "Setup Dr" ; Chr(245) ; "cken"
- Bitwait Setup , Reset
- Gosub Einstellen
- Bitwait Start_stopp , Set
- Gosub Run
- Loop
- Einstellen:
- Cls
- Locate 1 , 1
- Lcd "Zeit einstellen"
- Relais = 0
- Alarm = 0
- Start_ = 0
- Do
- Gosub Grafik
- if Sekunde = 0 Then
- if Sekunden_Temp <59 Then
- incr Sekunden_temp
- Else
- Sekunden_Temp = 0
- end if
- waitms 300
- end if
- If Minute = 0 Then
- If Minuten_Temp <59 Then
- Incr Minuten_Temp
- Else
- Minuten_Temp = 0
- End If
- Waitms 300
- End If
- If Stunde = 0 Then
- If Stunden_Temp <23 Then
- Incr Stunden_Temp
- Else
- Stunden_Temp = 0
- End If
- Waitms 300
- End IF
- Loop Until Start_stopp = 0
- Return
- Run:
- cls
- Locate 1,1
- LCD "Timer L" ; CHR(225) ;"uft"
- Relais = 1
- Start_ = 1
- Do
- gosub Grafik
- If Sekunden_temp <0 Then
- Sekunden_temp = 59
- Decr minuten_temp
- End if
- If minuten_temp < 0 then
- minuten_temp = 59
- Decr stunden_temp
- End if
- If stunden_temp < 0 then
- stunden_temp= 23
- end if
- Loop Until Alarm = 1 Or Start_stopp = 0
- If Alarm = 1 Then
- Cls
- Lcd "Fertig"
- Relais = 0
- End If
- Bitwait Start_stopp , Reset
- Return
- Grafik:
- Locate 2 , 5
- Lcd Stunden;":";Minuten;":";Sekunden
- Stunden = Str(stunden_temp)
- Stunden = Format (stunden , "00")
- Minuten = Str(minuten_temp)
- Minuten = Format(minuten , "00")
- Sekunden = Str(Sekunden_temp)
- Sekunden = Format(sekunden , "00")
- Return
- Zeit:
- Timer1 = Timervorgabe
- if Start_ = 1 Then
- Decr Sekunden_temp
- end if
- Return