- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 39 von 39

Thema: Uhr mit Tagen

  1. #31
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    Anzeige

    Powerstation Test
    Tu das, schlaf dich erstmal aus, ich muss noch ein C# Programm für die Schule/Ausbildung schreiben, kann mich also noch net hinlegen

    Gruß Hunni

  2. #32
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Hallo
    Also vielen dank nochmal für die Hilfe.
    Hier der Code:
    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 Sekunde As Word
    Dim Minute As Word
    Dim Stunde As Word
    
    Dim Wochentag As String * 12
    
    
    Dim Tag 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
    
    Tag = 1
    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
             Case 5
                Call Plustag
          End Select
          Sound Portd.7 , 400 , 500                             'BEEP
       End If
       Waitms 100
    
    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"
    'Else Case
    'End Select
    
    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
    
    Sub Plussekunde()
    Sekunde = Sekunde + 1
    Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
    End Sub
    
    Sub Plusminute()
    Minute = Minute + 1
    Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
    End Sub
    
    Sub Plusstunde()
    Stunde = Stunde + 1
    Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
    End Sub
    Sub Plustag()
    Tag = Tag + 1
    Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
    End Sub
    
    
    
    
    Sub Clockstart()
    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
    End Sub
    
    
    
    
    
    
    
    
    Isr_von_timer1:                                             'ISR von Timer1
    Timer1 = 68570
    'Sound Portd.7 , 400 , 550
    'Print "Stunde" ; Stunde ; "  Minute:" ; Minute ; "  Sekunde:" ; Sekunde
    Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
    Sekunde = Sekunde + 1
    Toggle Portc.0
    Return

    Ich werde mal sehen ob ich das noch besser hinbkomme.
    Gibt es ausser der Bascom hilfe noch was wo das beschrieben wird?
    Weil ich verstehe es immre besser wen's auf deutsch istt

    Gruß Dominik

  3. #33
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    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

  4. #34
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    also ich bin mir nicht ganz sicher, aber du machst zuerst:

    Code:
    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
    und dann erst fragste die taster ab.
    Code:
     Taste = Tastenabfrage() 
       If Taste <> 0 Then 
    
          Select Case Taste 
             Case 1 
                 Tag = Tag + 1 
                 Waitms 200 
                 Print Wochentag 
             Case 5 
                Exit Do 
          End Select
    So drückst du im prinzip einmal zu viel drauf. Vielleicht solltest du zuerst die Taster abfragen und dann schreiben, welcher Tag das is.
    Gruß Hunni

  5. #35
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    hi
    also ich habe doch erst den oberen teil und dann den unteren. mit dem unteren muss ich sehen wie ich das löse, weiss noch nicht wie ich das machen soll

  6. #36
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    So, habe jetzt einfach etwas vertauscht:
    Select Case Tag
    Case 1
    Wochentag = "Dienstag"
    Case 2
    Wochentag = "Mittwoch"
    Case 3
    Wochentag = "Donnerstag"
    Case 4
    Wochentag = "Freitag"
    Case 5
    Wochentag = "Samstag"
    Case 6
    Wochentag = "Sonntag"
    Case 7
    Wochentag = "Montag"
    Case 8
    Wochentag = "Dienstag"
    End Select

    was besseres fällt mir momentan nicht ein, bei stunde, minute und sekunde läuftsja supper, nur bei tag nicht

    aber jetzt gehts ja

  7. #37
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    mhh, ansonsten probier mal das:
    Code:
    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 Else : tag= 1
    End Select

  8. #38
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    bringt nichts
    immer noch ein tag zuviel, das andere ist halt gefuscht

  9. #39
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    31
    Beiträge
    391
    mhh..... komisch..... leider kann ich dir jetzt auch net den code ganz neu schreiben, da ich im augenblick gerade etwas viel mit der schule zu tun hab.
    Versuch einfach nochmal den Code neuzuschreiben, ohne den alten anzugucken, so mach ich das auch manchmal, wenns net hilft.
    Ansonsten müsstest du gucken, ob du deinen Taster entprellt hast, aber daran kann das eig net liegen.
    Gruß Hunni

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test