Hi
Bin grade dabei eine Art Zeitschaltuhr mit LCD zu bauen.
Ist im Grunde fertig nur ein kleines Problem besteht:
Es ist wie folg aufgebaut:
So sieht die Anzeige aus
00:00:00
01:29:01 z.b.
usw
die Variablen sind so aufgebaut:
hms = hour minute sec so nebenbei ^^
Lcd Hms(1) ; Hms(2) ; ":" ; Hms(3) ; Hms(4) ; ":" ; Hms(5) ; Hms(6)
Das Problem sieht so aus:
Ich drücke auf OK dann sollte eigentlich umgehend der Timer anfangen runter zu zählen,... tut er aber nicht.
Es dauert jedesmal rellativ genau 5 sec bis angezeigt wird das der wert abgezogen wurde.
Aber der angezeigte wert stimmt also es wird keine Sekunde vergessen oder übersprungen.
Nur das LCD Display zeigt es 5 sec verzögert an.
Hat jemand eine erklärung/Lösung hierfür? oder ein Vorschlag wie man soetwas einfacher realisiert?
Hier der Code:
Code:
Do
Locate 2 , 7 'Cursor auf 1 Zeile, 1 Spalte
Lcd Hms(1) ; Hms(2) ; ":" ; Hms(3) ; Hms(4) ; ":" ; Hms(5) ; Hms(6) 'String auf Display anzeigen
Waitms 100
If Bumm = 1 Then
Portb.2 = 1
Bumm = 1
End If
Loop
'-------------------------------------------------------------------------------
'------- Timer 1 ISR
'-------------------------------------------------------------------------------
Isr_von_timer1: 'ISR von Timer1
Dim Nr_z(2) As Byte 'zusammenzähl Variable
Timer1 = 34285 'Timer auf 1 Sec einstellen
If Hms_frg = 1 Then 'freigaben Abfrage
If Hms(6) = 0 Then 'fang von hinten an
Hms(6) = Hms_max(6)
If Hms(5) = 0 Then 'Ziffer 5 = 0 => auf max(5) setzen
Hms(5) = Hms_max(5)
If Hms(4) = 0 Then 'Ziffer 4 = 0 => auf max(4) setzen
Hms(4) = Hms_max(4)
If Hms(3) = 0 Then
Hms(3) = Hms_max(3) 'Ziffer 3 = 0 => auf max(3) setzen
If Hms(2) = 0 Then 'Ziffer 2 = 0 => auf max(2) setzen
Hms(2) = Hms_max(2)
If Hms(1) = 0 Then 'Ziffer 1 = 0 => auf max(1) setzen
Hms_frg = 0
Bumm = 1 'Alles 0 Ende Verlauf
Cls
Else
Decr Hms(1)
End If
Else
Decr Hms(2)
End If
Else
Decr Hms(3)
End If
Else
Decr Hms(4)
End If
Else
Decr Hms(5)
End If
Else
Decr Hms(6)
End If
If Zuend(1) < 3 Then
If Zuend(1) = 1 Then
Portb.1 = 1
Waitms 200
Portb.1 = 0
Else
Nr_z(2) = 0
For Nr_z(1) = 1 To 5
Nr_z(2) = Nr_z(2) + Hms(nr_z(1))
Next Nr_z(1)
If Nr_z(2) = 0 Then
Portb.1 = 1
Waitms 200
Portb.1 = 0
End If
End If
End If
End If
Return
End
mfg
Lesezeichen