Halo
habe noch ein kleines problem.
Habe den code etwas benutzerfreundlicher gemacht.
Nur springt die Uhr jetzt nach dem einstellen am anfang immer auf den n#chsten tag (also ich stelle mittwoch 11:11:11 ein und sie springt auf donnerstag 11:11:12)

Vieleicht könnt ihr mir nochmal helfe?

Hier der Cide
Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600


Declare Sub Plussekunde()
Declare Sub Plusminute()
Declare Sub Plusstunde()
Declare Sub Clockstart()
Declare Sub Plustag()
Declare Function Tastenabfrage() As Byte
Dim I As Integer
Dim N As Integer
Dim Ton As Integer
Dim Tag As Word
Dim Taste As Byte
Dim Wochentag As String * 12
Dim Stunde As Word
Dim Minute As Word
Dim Sekunde As Word

Tag = 2


Config Portc = Output
Portc = 11111111
Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input                                       'Für Tastenabfrage
Porta.7 = 1




Sound Portd.7 , 400 , 450                                   'BEEP
Sound Portd.7 , 400 , 250                                   'BEEP
Sound Portd.7 , 400 , 450                                   'BEEP
Wait 1
Print
Print "Zeitschaltuhr -Test"
Print
Wait 1
Print
Print "Bitte Uhrzeit und Wochentag einstellen!"
Print
Wait 1
Print
Print "Bitte Wochentag eingeben"
Print
Wait 1
Print "Anleitung:"
Print "Wochentag einstellen: Taste-1"
Print "OK: Taste-5"
Wait 1
Print
Print "Aktueller Tag:"
Print "Montag"
Do



Select Case Tag
Case 1
Wochentag = "Montag"
Case 2
Wochentag = "Dienstag"
Case 3
Wochentag = "Mittwoch"
Case 4
Wochentag = "Donnerstag"
Case 5
Wochentag = "Freitag"
Case 6
Wochentag = "Samstag"
Case 7
Wochentag = "Sonntag"
Case 8
Wochentag = "Montag"
End Select

If Tag > 7 Then
Tag = 1
End If
 Taste = Tastenabfrage()
   If Taste <> 0 Then

      Select Case Taste
         Case 1
             Tag = Tag + 1
             Waitms 200
             Print Wochentag
         Case 5
            Exit Do
      End Select
      Sound Portd.7 , 400 , 500                             'BEEP
   End If

Loop



Sound Portd.7 , 400 , 500                                   'BEEP
Print
Print "Bitte Uhrzeit einstellen"
Wait 1
Print
Print "Anleitung:"
Print "Stunden einstellen : Taste-1"
Print "Minuten einstellen : Taste-2"
Print "Sekunden einstellen: Taste-3"
Print "OK : Tase-5"
Wait 1
Print
Print "Akutelle Zeit:"
Print "0:0:0"

Do



   Taste = Tastenabfrage()
   If Taste <> 0 Then

      Select Case Taste
         Case 1
            Stunde = Stunde + 1
            Waitms 50
            Print Stunde ; ":" ; Minute ; ":" ; Sekunde:
         Case 2
            Minute = Minute + 1
            Waitms 50
            Print Stunde ; ":" ; Minute ; ":" ; Sekunde
         Case 3
            Sekunde = Sekunde + 1
            Waitms 50
            Print Stunde ; ":" ; Minute ; ":" ; Sekunde
         Case 5
            Exit Do
      End Select
      Sound Portd.7 , 400 , 500                             'BEEP
   End If

If Sekunde = 60 Then
Sekunde = 0
End If

If Minute = 60 Then
Minute = 0
End If

If Stunde = 24 Then
Stunde = 0
End If

Loop

Sound Portd.7 , 400 , 500                                   'BEEP
Config Timer1 = Timer , Prescale = 256                      'Konfiguriere Timer1
Enable Interrupts
Enable Timer1
Sekunde = Sekunde + 1                                       ' + 1Sekunden für Timerausgleich
On Timer1 Isr_von_timer1                                    'verzweige bei Timer1 überlauf zu   Isr_von_Timer1
Enable Interrupts
Timer1 = 68570                                              'Timer1 soll schon von 34285 wegzählen

Do


If Sekunde = 60 Then
Sekunde = 0
Minute = Minute + 1
Else
End If

If Minute = 60 Then
Minute = 0
Stunde = Stunde + 1
Else
End If

If Stunde = 24 Then
Stunde = 0
Tag = Tag + 1
End If

If Tag > 7 Then
Tag = 1
End If



Select Case Tag
Case 1
Wochentag = "Montag"
Case 2
Wochentag = "Dienstag"
Case 3
Wochentag = "Mittwoch"
Case 4
Wochentag = "Donnerstag"
Case 5
Wochentag = "Freitag"
Case 6
Wochentag = "Samstag"
Case 7
Wochentag = "Sonntag"
End Select




Loop
End








Function Tastenabfrage() As Byte
Local Ws As Word
   Tastenabfrage = 0
   Ton = 600
   Start Adc
   Ws = Getadc(7)

   If Ws < 500 Then
      Select Case Ws
         Case 400 To 450
            Tastenabfrage = 1
            Ton = 550
         Case 330 To 380
            Tastenabfrage = 2
            Ton = 500
         Case 260 To 305
            Tastenabfrage = 3
            Ton = 450
         Case 180 To 220
            Tastenabfrage = 4
            Ton = 400
         Case 90 To 130
            Tastenabfrage = 5
             Ton = 350
      End Select
      Sound Portd.7 , 400 , Ton
   End If
End Function







Isr_von_timer1:                                             'ISR von Timer1
Timer1 = 68570
'Sound Portd.7 , 400 , 550
Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
Sekunde = Sekunde + 1
Toggle Portc.0
Return