- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: IF Then Else Probleme

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1

    IF Then Else Probleme

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Kenner des Fachs !

    Nun ich bin nicht gerade ganz "firm" in Sachen Bascom, aber das mir eine if..else solche Probleme macht hätte ich nie gedacht.
    Hier mal mein Code, und ich weiss nicht warum.

    Variablen festlegen usw...
    Code:
    DIM _sec as Byte
    DIM _min as Byte
    DIM _hour as Byte
    ...
    DIM Ph1 as Byte
    DIM Pm1 as Byte
    DIM Ph2 as Byte
    DIM Pm2 as Byte
    ...
    Ph1 = 8
    Pm1 = 30
    Ph2 = 8
    Pm2 = 31
    ...
    Hier nun die Auswertung, es soll entweder PortB.0 HIGH oder LOW sein, bzw PortB.1

    Code:
    TestTime:
    
    If _HOUR = Ph1 AND _MIN = Pm1 then SET PORTB.0
    else RESET PORTB.0
    end IF
    if _HOUR = Ph2 AND _MIN = Pm2 then SET PORTB.1
    else RESET PORTB.1
    end if
    
    return
    worüber sich der Compiler über die IF..Else Auswertungen beschwert : IF THEN expected ???

    Vielleicht ist wer so nett, mir ein wenig helfen zu wollen.

    Mit besten Grüssen und ein grosses Danke schon vorne weg...

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Hey Gerhard,

    ich glaube das muss so lauten:

    Code:
    $regfile = "m32def.dat"
    
    
    Dim A As Byte
    Dim B As Byte
    
    
    A = 10
    B = 11
    
    
    If A = 10 And B = 10 Then
    Print "Hallo"
    Else
    Print "Nicht Hallo"
    end IF
    Geändert von Kampi (28.06.2013 um 19:51 Uhr) Grund: War Mist....Codebeispiel eingefügt.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Es gibt unterschiedliche Formen der Anwendung, als Einzeiler, welcher ohne End If auskommt und als Befehlsabfolge zwischen der If Then / Else /End If Anweisung.
    Mach's einfach so wie in der Hilfe.

    - - - Aktualisiert - - -

    Zitat Zitat von Kampi Beitrag anzeigen
    Und ich kann mich irren aber muss das nicht heißen "If _HOUR == Ph1"?
    Es wird im Moment wieder Bascom gesprochen
    Was Du meinst, ist C, da macht's 'nen Unterschied.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    Hallo

    versuchs mal so:
    Code:
    TestTime:
      
    If _HOUR = Ph1 AND _MIN = Pm1 then 
    SET PORTB.0
    else 
    RESET PORTB.0
    end IF
    if _HOUR = Ph2 AND _MIN = Pm2 then 
    SET PORTB.1
    else
    RESET PORTB.1  
    end if
    
    return
    oh shit ..zu spät
    ..
    Geändert von HeXPloreR (28.06.2013 um 19:57 Uhr)

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    Ich Danke Euch allen !!! Ja ich mach zu wenig in Bascom, sonst GCC oder Arduino-C . Ich habe es schon selber rausgefunden, mit Müseligem Auskommentieren habe ich es so, wie HexPlorer es postete, auch hinbekommen...

    Danke nochmals ging ja l suuperschnell die Hilfe !!

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Es gibt unterschiedliche Formen der Anwendung, als Einzeiler, welcher ohne End If auskommt und als Befehlsabfolge zwischen der If Then / Else /End If Anweisung.
    Mach's einfach so wie in der Hilfe.

    - - - Aktualisiert - - -


    Es wird im Moment wieder Bascom gesprochen
    Was Du meinst, ist C, da macht's 'nen Unterschied.

    Ja auch gerade gesehen
    Hab dann doch mal Sicherheitshalber Bascom angeschmissen und geschaut
    War mir selber nicht ganz so sicher....dann gucke ich lieber noch mal nach!
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    So soll es sein, schön

    ...ich stolper auch manchmal noch darüber das ich hinter dem else immer gerne gleich die Anweisung schreibe möchte.

  8. #8
    Benutzer Stammmitglied Avatar von Ryoken
    Registriert seit
    18.12.2008
    Ort
    bw
    Beiträge
    84
    Was war jetzt der Fehler?
    Zeilenumbruch zwischen then/else und dem Befehl war zwingend, oder wie?


    Gruß Ryoken
    A mistake is evidence that someone tried to do something.
    It`s not impossible - it just costs more

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    @Ryoken: Ja so geht es !

    Code:
    '-------------------------------------------------------------------------------
    TestTime:
    
    If _HOUR = Ph1 AND _MIN = Pm1 then
    SET PORTB.0
    else
    RESET PORTB.0
    end IF
    
    if _HOUR = Ph2 AND _MIN = Pm2 then
    SET PORTB.1
    else
    RESET PORTB.1
    end if
    
    return
    
    '-------------------------------------------------------------------------------
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    @Ryoken: Ja, Zeilenumbruch ist zwingend nötig wenn man über mehrer Zeilen eine einzige IF abhandeln möchte, ansonsten geht es auch noch so wie MagicWSmoke schreibt - dann ohne "end if".
    Das geht aber auch nur wenn jeweils eine einzige Anweisung ausgeführt werden soll:

    Code:
    TestTime:
    If _HOUR = Ph1 AND _MIN = Pm1 then SET PORTB.0 else RESET PORTB.0 'end IF 'kann dann raus bleiben
    If _HOUR = Ph2 AND _MIN = Pm2 then SET PORTB.1 else RESET PORTB.1 'end if 'kann dann raus bleiben
    return

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. I/O probleme
    Von der_typ im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 03.05.2010, 16:20
  2. I²C Probleme
    Von JWehmeier im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 18.06.2008, 23:24
  3. Probleme, Probleme, Probleme
    Von ChrB im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 17.11.2006, 10:22

Berechtigungen

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

LiTime Speicher und Akkus