-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: If Then und Else If

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.12.2008
    Beiträge
    30

    If Then und Else If

    Anzeige

    Hallo leute,
    ich habe ein kleines Problem und zwar hab ich mir schon die Hilfe durchgelesen aber ich komme nicht weiter.

    Code:
    $regfile = "m8def.dat"
    
     $crystal = 4000000
    
     $baud = 9600
    
     Config Portc.0 = Output                                    
     Config Portc.1 = Input
     Config Portc.2 = Input
     
    
     Led Alias Portc.0
     Taster Alias Portc.1
     Tastera Alias Portc.2
    
    do
    
    If Taster = 1 Then
    Led = 1
    Else If Taster = 0 Then
    Led = 0
    Else If Tastera = 1 Then
    eins:
    Led = 1
    Waitms 100
    Led = 0
    Waitms 100
    Goto eins
    End IF
    
    Loop
    Das soll so Funktionieren das wenn ich den einen Taster drücke die Led an ist also Dauerhaft und wenn ich sie los lasse wieder aus geht. Wenn ich aber nun den andere Taster drücke soll die Led anfangen zu Blinken und das in einer dauerschleife warum geht das nicht so ich hab das ganze nur auf ne andere art und weise hinbekommen und zwar so

    Code:
    $regfile = "m8def.dat"
    
     $crystal = 4000000
    
     $baud = 9600
    
     Config Portc.0 = Output
     Config Portc.1 = Input
     Config Portc.2 = Input
     Config Portc.3 = Output
    
     Led Alias Portc.0
     Leda Alias Portc.3
     Taster Alias Portc.1
     Tastera Alias Portc.2
    
     Do
     D:
     If Taster = 1 Then
     Led = 1
     Else
     Led = 0
     End If
    
     E:
     If Tastera = 1 Then
     Goto L
     Else
     Goto D
     End If
    
     L:
     Leda = 1
     Waitms 1
     Leda = 0
     Waitms 1
     Goto E
    
     Loop
    Kann mir einer von euch da helfen.
    danke schonmal
    Mfg P.Gnauck

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    Hallo

    schreib mal waitms 500 dann wirst du das Blinken sehen vorher nicht weil es viel zu schnell ist für dein Auge.

    oder schreibe

    z.b. toggle portb.0

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Hab grad ein kleines Verständnisproblem, was das Ding genau tun soll.
    Aber evtl. gehts ja, wenn du in einer IF 2 Abfragen prüfst, also etwa so:
    If Taster1 = 0 AND Taster2 = 0 Then...
    If Taster1 = 1 AND Taster2 = 0 Then...
    If Taster1 = 0 AND Taster2 = 1 Then...
    If Taster1 = 1 AND Taster2 = 1 Then...

    Wären dann 4 Zustände, je nach dem welcher Taster gedrückt/nicht gedrückt ist.
    #ifndef MfG
    #define MfG

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hallo,
    also erst mal, würd ich die ganzen gotos weg lassen, da blickt ja keiner durch, was da wann wo hin springt.
    dann kann ich mir nicht vorstellen, dass des 2. geht, weil da blinkt die led ja mit 500hz, glaub net, dass man des sehen kann.
    und beim 2. sollte ja dann das blinken ja wieder aufhören, wenn man den taster los lässt, beim ersten nicht.
    allerdings wird beim ersten deine led nie anfangen zu blinken, weil die bedingung nie abgefragt werden wird.
    mfg jeffrey

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    17.12.2008
    Beiträge
    30
    Den zweiten Code hab ich mit einem AVR Simulator Getestet da kann man die geschwindigkeit einstellen von daher seh ich die LED Blinken *gg* nur mien Problem ist oder auch die Frage wie das richtig Funktioniert mit den
    IF befehlen weil wenn ich das so mache mit

    If .....Than
    ......
    Else If ...... Than
    ......
    Else If ...... Than
    End If

    da sagt mein Bascom Compiler immer Error aber warum ??

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2005
    Ort
    nähe Hannover
    Beiträge
    8
    Zitat Zitat von Bqube
    If .....Than
    ......
    Else If ...... Than
    ......
    Else If ...... Than
    End If

    da sagt mein Bascom Compiler immer Error aber warum ??
    Schau mal in die Hilfe:

    Syntax
    IF expression THEN
    [ ELSEIF expression THEN ]
    [ ELSE ]
    END IF


    evtl. wäre es einfacher und übersichtlicher wenn Du das per:

    Syntax
    SELECT CASE var
    CASE test1 : statements
    [CASE test2 : statements ]
    CASE ELSE : statements
    END SELECT


    versuchst zu lösen. So viele If then / ElseIf...End if machen das ganze sehr unübersichtlich. Ist aber nur meine persönliche Meinung

    Gruss // André

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hi,
    also da sind schreibfehler drin. probier mal elseif ... then.
    gn8 jeffrey

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    17.12.2008
    Beiträge
    30
    Ich hab alles versucht ich weiß nicht ob ich zu doof dafür bin aber ich will das ich Eine Led mit einem Taster an und ausschalten kann und wenn ich einen anderen Taster drücke soll sie Blinken nur ich bekomme es so hin

    Code:
     D: 
     If Taster = 1 Then 
     Led = 1 
     Else 
     Led = 0 
     End If 
    
     E: 
     If Tastera = 1 Then 
     Goto L 
     Else 
     Goto D 
     End If 
    
     L: 
     Leda = 1 
     Waitms 1 
     Leda = 0 
     Waitms 1 
     Goto E
    Aber mit Elseif und die sache mit dem Case versteh ich schonmal garnet ?

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Mal abgesehen davon, dass du dir die Goto's besser abgewöhnen solltest, ist deine Leuchtzeit von 1ms (1/1000 sec) schon recht kurz, ebenso die Auszeit.
    Das können deine Augen nicht erkennen. Mach mal Wait 1, dann siehst du was blinken.

    Gruß

    Rolf

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hi,
    probier des doch mal so:

    Code:
     If Taster = 1 Then 
     Led = 1 
     Else 
     Led = 0 
     End If 
    
     while Tastera = 1
    toggle Led
    waitms 500
    wend
    mfg jeffrey

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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