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
Lesezeichen