logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATMega8][Bascom]Program wykonuje się tylko raz.

stoper17 01 Sty 2011 19:28 1438 7
REKLAMA
  • #1 8944419
    stoper17
    Poziom 20  
    Witam. Mam prosty program który nie do końca działa ok;/
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portd = Output
            Portd = &B00000000
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    
    
    Led1 Alias Portd.1
    Led2 Alias Portd.2
    S1 Alias Portb.0
    S2 Alias Portb.1
    
    
    If S1 = 1 Then
    Gosub Ledon
    End If
    
    If S2 = 1 Then
    Gosub Ledof
    End If
    
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    
    Ledon:
       Do
    Led1 = 0
    Led2 = 1
    Loop
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Ledof:
    Do
    Led1 = 1
    Led2 = 0
    Loop
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


    Problem jest taki że wykonuje go zaraz po odpaleniu;/ Proszę o pomoc

    Zmieniłem tytuł.
    [zumek]
  • REKLAMA
  • #2 8944498
    sp3ots
    Poziom 38  
    Witam !
    Trochę zmieniłem program:
    
    regfile = "m8def.dat"
    $crystal = 1000000
    Config Portd = Output
            Portd = &B00000000
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    
    Led1 Alias Portd.1
    Led2 Alias Portd.2
    S1 Alias Portb.0
    S2 Alias Portb.1
    
    do
    
    If S1 = 1 Then
    Gosub Ledon
    End If
    
    If S2 = 1 Then
    Gosub Ledof
    End If
    
    loop
    end 
    
    Ledon:
    Led1 = 0
    Led2 = 1
    return
    
    Ledof:
    Led1 = 1
    Led2 = 0
    return
    

    Pozdrawiam. Stefan
  • REKLAMA
  • REKLAMA
  • #4 8944707
    Wojtek75
    Poziom 24  
    W Aliasach też namieszane.
  • REKLAMA
  • #5 8944830
    Konto nie istnieje
    Poziom 1  
  • #6 8946213
    xury
    Specjalista automatyka domowa
    Mimo, że program statyczny to debouncing być powinien. Inna sprawa jaką zauważyłem to brak ustalonych stanów początkowych wejść. Czyli brak w tym wypadku pulldown'a do masy. No chyba, ze jest zrobiony sprzętowo.
  • Pomocny post
    #7 8949353
    t_tom
    Poziom 12  
    Proponuję przy aliasach przycisków wpisać nie port a pin, bo to są wejścia. No i faktycznie aby stany na wejściach nie szalały podciągnąć wejścia do plusa.
    Moze być np. tak:

    regfile = "m8def.dat"
    $crystal = 1000000
    Config Portd = Output
    Portd = &B00000000
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    
    Led1 Alias Portd.1
    Led2 Alias Portd.2
    S1 Alias Pinb.0
    S2 Alias Pinb.1
    set portb.0
    set portb.1
    
    do
    
    If S1 = 0 Then
    Gosub Ledon
    End If
    
    If S2 = 0 Then
    Gosub Ledof
    End If
    
    loop
    end
    
    Ledon:
    Led1 = 0
    Led2 = 1
    return
    
    Ledof:
    Led1 = 1
    Led2 = 0
    return
  • #8 8951661
    stoper17
    Poziom 20  
    Super:) o to mi chodziło:D dzięki wielkie:))
REKLAMA