- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 39

Thema: Uhr mit Tagen

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

    Powerstation Test
    Mhhh.... Das n bisschen merkwürdig. Musst noch mal ein wenig rumprobieren, aber schon schön zu sehen, das du anscheinend die switch anweisung verstanden hast, haste ja auch gleich oben reingepackt cool. Für solche sachen is die gedacht.
    ahh mom, ich glaube du brauchst immer ein Else Case, schreib einfach nix dahinter, einige Proggersprachen brauchen das.
    Probier einfach mal

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    hallo
    jo, habe die oben reingepackt, für die tastenabfrage, läuft gut

    habe es jetzt so (mit else case)
    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

    geht nicht. Auch wenn ich end select rausmache, geht nicht.
    immer die selben fehler

  3. #23
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    wenn ich die doppelpunkte zwischen case 1 und wochentag weglasse kommt bei den errors: 2x error 35 in der case 1 & 2 Zeile
    und einmal 269 in der case 2 zeile.

    hier nochmal der komplette 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 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 Wochentag As Word
    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
    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
    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
    
    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
    
    
    
    
    
    
    
    
    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                                       ' + 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 Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    Sekunde = Sekunde + 1
    Toggle Portc.0
    Return

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Wenn ich anstat Der Namen zahlen hinschreibe geht es, aber es geht doch gerade um die namen

    Kann es sein das man bei vairablen nur zahlen machen kann?
    weil das mit den wörtern ist eigentlich genau das ,was ich wollte.


    Edit: So, habe herausgefunden das word variablen keine wörter speichern können, also den type oben auf byte gesetzt, da die dan buchstaben speichern können.
    Nun kommen keine error meldungen meer aber im terminal steht:
    0:2:25:68
    0:2:26:68
    0:2:27:68
    0:2:28:68
    0:2:29:68

    Warum 68? da müsster doch ein Tag stehen!

    Der gesammte 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 Byte
    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
    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 = "Dönnerstag"
    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 Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    End Sub
    
    Sub Plusminute()
    Minute = Minute + 1
    Print Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    End Sub
    
    Sub Plusstunde()
    Stunde = Stunde + 1
    Print Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    End Sub
    Sub Plustag()
    Tag = Tag + 1
    Print Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    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 Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    Sekunde = Sekunde + 1
    Toggle Portc.0
    Return
    
    
    
    
    
    
    
    
    
    Isr_von_timer1:                                             'ISR von Timer1
    Timer1 = 68570
    'Sound Portd.7 , 400 , 550
    'Print "Stunde" ; Stunde ; "  Minute:" ; Minute ; "  Sekunde:" ; Sekunde
    Print Stunde ; ":" ; Minute ; ":" ; Sekunde ; ":" ; Wochentag
    Sekunde = Sekunde + 1
    Toggle Portc.0
    Return

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Verstehe nicht, wieso eine Hochsprache genutzt wird, wenn eh alles zu Fuss gemacht wird..
    Wenn die Uhr im synchron Modus laufen soll, dann einfach statt config clock ein config dcf

    oben die Bascom Uhr Routinen aktivieren

    Dim Wochentag As String * 12
    dim wtag as byte
    config clock = modus

    weiter unten den Wochentag ausgeben:

    Wtag = Dayofweek()
    If Wtag = 0 Then Wochentag = " Montag "
    If Wtag = 1 Then Wochentag = " Dienstag "
    If Wtag = 2 Then Wochentag = " Mittwoch "
    If Wtag = 3 Then Wochentag = " Donnerstag "
    If Wtag = 4 Then Wochentag = " Freitag "
    If Wtag = 5 Then Wochentag = " Samstag "
    If Wtag = 6 Then Wochentag = " Sonntag "
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    also bei deinem code kommen nur immer weiter errors
    kansst du vieleicht einen code reinstellen der besserfunktioniert, als zu fuss?

    bei diesem test code kommt auch immer nur 77 im terminal raus
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    
    
    Dim Wochentag As Byte
    
    
    Do
    Wochentag = "Montag"
    
    Print Wochentag
    Wait 2
    Loop
    wenn ich da abc eingwbe kommt im terminal 97.

  7. #27
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    77 ist der ASCII des ersten Zeichens von "Montag", also des M.
    Du musst Wochentag schon als String definieren, wenn du der Variablen einen String zuweisen willst.
    So, wie das bei Peterfido auch steht.

  8. #28
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Ich habe nur die Wochentags"geschichte" gepostet. Natürlich muss die Uhr und vor Allem das Datum gestellt werden, damit es richtig läuft. Doch dafür verweise ich lieber auf die Bascom-Hilfe. >config clock; >config dcf77
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  9. #29
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    32
    Beiträge
    391
    Mhh gib ma deinen kompletten Code her, dann hau ich das mal bei mir rein, kann soetwas doch besser, wenn ich es live sehe.

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Köln
    Beiträge
    460
    Danke habe es geschaft ! Vielen dank
    habe oben Dim Wochentag As String * 12 reingeschrieben und das wars.

    dim wtag as byte
    config clock = modus
    hatt fehler verursacht, jetzt da's raus ist läufts super.

    Den code poste ich morgen, nach getaner arbeit lege ich mich jetzt erstmal schlafen

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress