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

Thema: Grundlegende Frage zu SUB's

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.06.2008
    Ort
    Kiel
    Alter
    41
    Beiträge
    42

    Grundlegende Frage zu SUB's

    Anzeige

    LiFePo4 Akku selber bauen - Video
    kann mir einer agen warum das nicht geht ?

    zur info: einfache 6x5 led matrix an porta 0-5 und portc 0-4

    Code:
    declare sub led(x as byte, y as byte)
    
    call led(1,1)
    
    sub led(x as byte, y as byte)
       porta = 0       'erstmal alle leds auf 0 setzen
       portc = 0
       x = x - 1
       y = y - 1
       porta.x = 1
       portc.y = 1
    end sub
    dabei sagt er immer ich soll byval benutzten, wenn ich das mache läuft aber auch nicht!

    es leuchtet immer 2,2 egal was ich einstelle

    edit: kan mir einer mal byval und byref näher erklären die hilfe kapier ich nciht so ganz....

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377

    Re: Grundlegende Frage zu SUB's

    Zitat Zitat von PhoenixTS82
    edit: kan mir einer mal byval und byref näher erklären die hilfe kapier ich nciht so ganz....
    Hallo PhoenixTS82!

    http://halvar.at/elektronik/kleiner_..._mit_computer/
    Suche nach "byval".

    mfg
    Gerold
    :-)

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    hallo phoenix,

    du möchtest wahrscheinlich, dass immer eine led leuchtet?!?!
    dazu benötigst du erstmal eine schleife..... entweder du machst das mit einer do-loop schleife (was bei Bascom allerdings schwierig wird, da du nur 1 eine schleife gleichzeitig laufen lassen kannst) oder du machst es mit einer bestimmten anzahl an durchläufen, z.b.:

    local i as word
    for i = 1 to 10 '10 durchläufe
    porta = &b00000000 'alle pins von porta auf 0
    portc = &b00000000 'alle pins von portc auf 0
    x = x - 1
    y = y - 1
    porta.x = 1
    porta.y = 1
    next i


    das "porta = 0" funzt so nicht, du kannst entweder alle ports einzeln auf 0 setzen:

    porta.0 = 0
    porta.1 = 0
    porta.2 = 0
    usw.

    oder aber so wie ich es gerade in dem beispiel gemacht habe:

    porta = &b00000000

    gruß
    chris

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.06.2008
    Ort
    Kiel
    Alter
    41
    Beiträge
    42
    hallo che, danke erstmal für deine antwort aber ich meinte eher was anderes.

    also porta = 0 fuktioniert,
    porta = 0 ist gleich porta = &B00000000
    porta = 7 ist gleich porta = &B00000111
    das übersetzt er automatisch


    mein problem lag eher dadran, das er die werte der aub nciht übernimmt, ich weiss nciht wie das byval funktioniert...
    ohne gibt es ne fehlermeldung....

    btw: was ist/ macht local ?

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    local ist im prinzip fast das gleiche wie dim , nur das local eine variable nur innerhalb einer sub declariert, das bedeutet, du kannst i in mehreren subs unabhängig voneindander verwenden!!

    ich würde das so machen:

    x = 1
    y = 1
    call led( x , y )

    gruß

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377

    Re: Grundlegende Frage zu SUB's

    Zitat Zitat von PhoenixTS82
    Code:
    declare sub led(x as byte, y as byte)
    
    call led(1,1)
    
    sub led(x as byte, y as byte)
       porta = 0       'erstmal alle leds auf 0 setzen
       portc = 0
       x = x - 1
       y = y - 1
       porta.x = 1
       portc.y = 1
    end sub
    Hallo PhoenixTS82!

    Mir ist gerade eingefallen, dass ich auch mal so ein Problem hatte. Ich glaube das liegt an Bascom und man muss das Problem über eine **externe** Variable (unschön) lösen.

    Code:
    dim tmp as byte
    
    sub led(x as byte, y as byte)
       tmp = x - 1
       porta.tmp = 1
       ...
    end sub
    Probier es mal aus. Vielleicht funktioniert es.

    mfg
    Gerold
    :-)

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    25.06.2008
    Ort
    Kiel
    Alter
    41
    Beiträge
    42
    ok es funktioniert, der fehler war recht banal


    ich hatte im haupt programm nur geschireben

    call led(1,1)


    OHNE do und loop, deswegen hat er sich aufgehangen, weil er nur einmal das programm und die sub durchgelaugen ist und danach stehen blieb.

    funktioniert also so wie oben beschrieben.....

    p.s. gibt es einen befehl wie INPUT, den ich NICHT mit enter bestätigen muss ?

    ich wil quasi mit w,a,s,d die led wandern lassen

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    du möchtest also mit 4 tastern(für die vier richtungen) die led, die leuchten soll, auswählen?!?!

    wenn ich das so richtig verstanden habe, dann probiers mal so:

    if pind.0 = 0 then
    waitms 200
    if x < 6 then
    x = x + 1
    else
    x = 1
    endif
    elseif pind.1 = 0 then
    waitms 200
    if x > 1 then
    x = x - 1
    else
    x = 6
    endif
    endif
    if pind.2 = 0 then
    waitms 200
    if y < 5 then
    y = y + 1
    else
    y = 1
    endif
    elseif pind.3 = 0 then
    waitms 200
    if y > 1 then
    y = y - 1
    else
    y = 5
    endif
    endif

    gruß

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    25.06.2008
    Ort
    Kiel
    Alter
    41
    Beiträge
    42
    hmm ok, ich hab mich falsch ausgedrückt...

    nicht über pins sondern tasten auf der tastatut (entweder courortasten oder w,a,s,d)

    im moment muss ich
    w (enter)
    s (enter)

    ect. tippen

    ich will gerne ohne mit enter zu bestätigen die aktion ausführen.

    bei pascal hiess das mal readkey oder so, geht das auch überhaupt mit nem terminal fenster oder muss ich doch auf tasten umsteigen ???

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad