- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: Basic: If - Then - Else Verschachtelungen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311

    Basic: If - Then - Else Verschachtelungen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    da ich mich mit der Programmiersprache Basic bisher noch nie "herumgeschlagen" habe (meistens habe ich mit Pascal oder C gearbeitet) kommen mir beim Zusammenbasteln meines ersten Programms ein paar kleine Fragen.
    In C ist es selbstverständlich (in Basic sicher auch) If-Bedingungen zu verschachteln à la
    Code:
    if (a>b) {
     if (x!=y) {...}
    } else  {
     ...
    }
    Wie bekomme ich analoges mit Basic hin? Ich werde aus der spärlichen Hilfe zu Bascom und der aus dem Internet nicht sehr schlau.
    Mein erster Entwurf war
    Code:
     If Secs = 0 Then
      Secs = 59
      Decr Mins
      If Mins = 0 Then
       Mins = 59
       Decr Hours
       If Hours = 0 Then
        Hours = 23
        Dchge = 1
       Else Decr Hours
      Else Decr Mins
     End If
    Der Compiler sagt Unknown Statement ["Else Decr" ...]
    Deswegen komme ich im Moment nicht weiter. Welchen Fehler mache ich?

    Vielen Dank,
    Simon
    P.S.: Ich habe auch schon umgestellt, alles hinter's betroffene IF zu schieben und überall eine End If Anweisung zwischenzuschieben etc. hänge aber fest.

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Der Schlingel will das "ELSE" in einer eigene Zeile haben, wenn ich mich nicht täusche.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.07.2006
    Ort
    Berlin
    Beiträge
    439
    Hallo Simon,

    mach aus
    Else Decr Hours
    Else Decr Mins
    End if

    Else
    Decr Hours
    End if
    Else
    Decr Mins
    End if

    dann klapt's.
    1. Else muss alleine in einer Zeile stehen
    2. Die innere If-Schleife braucht ein eigenes End if

    Gruß
    Detlef

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Aaaah, wieder was gelernt.
    Vielen Dank, steht leider nirgends, dass das in eine eigene Zeile will.
    Noch etwas: ich habe mir mal die Beispiele angesehen wie man einen sekundengenauen Timer einrichtet. Auf einem LCD lasse ich die Sekunden herunterzählen. Mir fällt aber auf, das während der Simulation eine Sekunde circa 3 Sekunden dauert. Liegt das an der falschen Programmierung (habe die Konfiguration des Timers einfach aus dem Wiki übernommen) oder daran, dass der Simulator zu langsam ist?
    Grüße Simon

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.07.2006
    Ort
    Berlin
    Beiträge
    439
    Hallo Simon,

    kann es sein, dass du die Quarzfrequenz nicht oder falsch angegeben hast?

    Gruß
    Detlef

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Eigentlich nicht, weil ich habe das Beispiel ja direkt übernommen:
    Code:
     
    $regfile = "m8def.dat"
     $crystal = 8000000
    
     Config Lcd = 16 * 2
     Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
     Config Lcdbus = 4
     Config Timer1 = Timer , Prescale = 256                     'Konfiguriere Timer1
     Enable Timer1                                              'schalte den Timer1 ein
     On Timer1 Isr_von_timer1                                   'verzweige bei Timer1 überlauf zu   Isr_von_Timer1
     Enable Interrupts
     Timer1 = 34285                                             'Timer1 soll schon von 34285 wegzählen
    Simon

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.07.2006
    Ort
    Berlin
    Beiträge
    439
    Hallo Simon,

    ich bin auch noch nicht richtig fit in Bascom. Was ich sehe ist, dass eine Quarzfrequenz von 8 MHz angegeben ist. Falls du einen anderen Quarz verwendest, musst du die Zeile

    $crystal = 8000000

    entsprechend ändern.

    Falls das nichts hilft, solltest du deine Frage unter einem neuen Themennamen noch einmal stellen.

    Gruß
    Detlef

  8. #8
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Hm.
    Ich verwende im Prinzip ja keinen Quarz sondern benutze gerade den Simulator der bei Bascom dabei ist.
    Meinst du nicht, dass der einfach saulahm sein könnte? Immerhin braucht er 99% CPU-Leistung an diesem Rechner.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    ich benutze bei Bascom den simulator zwar nich aber in der uni aufm hc6811 simulator isses genau das gleiche, 99% cpu und richtig langsam

  10. #10
    @veit,

    füge deinem Listing doch mal die Compiler-Direktive $sim hinzu, dann sollte es mit der Simulation klappen.

    cu
    Matula

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad