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:
mfgCode: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
Lesezeichen