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







Zitieren

Lesezeichen