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