Hallo
Ich bin dabei eine Uhr u proggen.
Hier der Code:
Werde ihn auch in die Wiki schreiben, ist für manch anfäger bestimmt hilfreich.Läuft perfekt, aber ich brauche etwas mehr.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 Showdigitalporta() Declare Function Tastenabfrage() As Byte Dim I As Integer Dim N As Integer Dim Ton As Integer Dim Sekunde As Word Dim Minute As Word Dim Stunde As Word Dim Taste As Byte 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 'Pullup Widerstand ein Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Call Plussekunde Case 2 Call Plusminute Case 3 Call Plusstunde Case 4 Call Clockstart End Select Sound Portd.7 , 400 , 500 'BEEP End If Waitms 100 If Sekunde = 60 Then Sekunde = 0 Minute = Minute + 1 Sound Portd.7 , 400 , 550 Else End If If Minute = 60 Then Minute = 0 Stunde = Stunde + 1 Else End If If Stunde = 24 Then Stunde = 0 Else End If If Stunde = 1 Then Portc.0 = 0 Elseif Stunde > 1 Then Portc.0 = 0 Else End If 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 Sub Plussekunde() Sekunde = Sekunde + 1 Print Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Plusminute() Minute = Minute + 1 Print Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Plusstunde() Stunde = Stunde + 1 Print Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Clockstart() Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1 Enable Interrupts Enable Timer1 Sekunde = Sekunde + 1 ' + 2Sekunden 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 End Sub Isr_von_timer1: 'ISR von Timer1 Timer1 = 68570 'Sound Portd.7 , 400 , 550 'Print "Stunde" ; Stunde ; " Minute:" ; Minute ; " Sekunde:" ; Sekunde Print Stunde ; ":" ; Minute ; ":" ; Sekunde Sekunde = Sekunde + 1 Return
Mir ist es wichtig das die Tage (Mo,Di,Mi,Do,Fr,Sa,So) miteingestellt, bzw. gezählt werden.
Quasie If Stunde = 24 then
stunde = o
tag = tag + 1
Dann müsste die werte von 1-7 für Mo-So stehen.
Aber wie bekomme ich das hin, das so zu speichern bzw. auszugeben?
Gruß
Dominik
P.S.: Das ganze soll später mal änlich wie eine zeitschaltuhr laufen.
Lesezeichen