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

[bascom] Select case i kilka instrukcji na jeden wrunek

klops_mops 17 Sie 2008 15:09 5894 4
REKLAMA
  • #1 5447237
    klops_mops
    Poziom 17  
    Witam mam taki problem:

    Zrobiłem isntrukcję select case, lecz od czasu gdy ją umieściłem w programie (w pętli głównej) to ona mi się zawiesza (pętla) dochodzi do selsct case i stop... Co robię nie tak?

    Porszę wziąść po uwagę to, że jestem dopiero początkującym..

    Z góry dziękuję za pomoc i pozdrawiam!
    
     ...
    
    
    
      Aa = I1 / 10
        Locate 1 , 9
        Lcd Aa
    Stan = 0
    
    Select Case Aa
        Case 48 To 100 : Portc = &B00111111
        Set Portd.1
        Set Portd.2
        Set Stan
        Case 42 To 47 : Portc = &B00111111
        Set Portd.1
        Set Portd.2
        Reset Stan
        Case 36 To 41 : Portc = &B00111111
        Set Portd.1
        Reset Portd.2
        Reset Stan
        Case 30 To 35 : Portc = &B00111111
        Reset Portd.1
        Reset Portd.2
        Reset Stan
        Case 24 To 29 : Portc = &B00111110
        Reset Portd.1
        Reset Portd.2
        Reset Stan
        Case 18 To 23 : Portc = &B00111100
        Reset Portd.1
        Reset Portd.2
        Reset Stan
        Case 12 To 17 : Portc = &B00111000
        Reset Portd.1
        Reset Portd.2
        Reset Stan
        Case 6 To 11 : Portc = &B00110000
        Reset Portd.1
        Reset Portd.2
        Reset Stan
        Case 1 To 5 : Portc = &B00100000
        Reset Portd.1
        Reset Portd.2
        Reset Stan
        Case 0 : Portc = &B00000000
        Reset Portd.1
        Reset Portd.2
        Reset Stan
    End Select
    
    If Stan = 1 Then
    Do
    Set Portd.3
    Waitms 100
    Reset Portd.3
    Loop
    Else
    Reset Portd.3
    End If
    
        Locate 2 , 9
        Lcd Stan
    
       End If
    
  • REKLAMA
  • #2 5448597
    grafiksaba
    Poziom 11  
    a co to jest Aa, pokaż definicje zmiennej
  • REKLAMA
  • #3 5448678
    klops_mops
    Poziom 17  
    Już znalazłem błąd...

    Aa - liczba (temperatura z DS18B20)

    I na starcie wynosi ona 85 *C

    Więc zgodnie z programem:

    
    Select Case Aa
        Case 48 To 100 : Portc = &B00111111
        Set Portd.1
        Set Portd.2
        Set Stan
    


    STAN = 1

    więc spełnia się:

    
    If Stan = 1 Then
    Do
    Set Portd.3
    Waitms 100
    Reset Portd.3
    Loop
    Else
    Reset Portd.3
    End If
    


    Pętla nie skończona w pętli głównej programu...

    Nie dawno na to wpadłem...
    Dzięki za pomoc

    Dodano po 15 [minuty]:

    A teraz jak rozwiązać to mruganie diody? Jakiś podprogram?
  • REKLAMA
  • #4 5448938
    Kabuto15
    Poziom 19  
    jeśli chcesz żeby dioda mrugała kiedy wynik pomiaru z DSa jest niepoprawny to wyrzuć po prostu pętle Do...Loop z tego warunku If Stan=1. Skoro wszystko jest i tak w pętli głównej to dioda będzie migać jeśli wynik będzie 85, a jeśli inny to przestanie migać.
  • #5 5452514
    klops_mops
    Poziom 17  
    Kabuto15 napisał:
    jeśli chcesz żeby dioda mrugała kiedy wynik pomiaru z DSa jest niepoprawny to wyrzuć po prostu pętle Do...Loop z tego warunku If Stan=1. Skoro wszystko jest i tak w pętli głównej to dioda będzie migać jeśli wynik będzie 85, a jeśli inny to przestanie migać.


    Masz rację, lecz nie do końca..

    1. Dioda będzie rugała, lecz z inna częstopliwością, niż bym chciał
    2. Dioda nie ma mrugać (ale przez chwile będzie) tylko wtedy gdy wynik z DS'a wynosi 85, co widać z CASE :
    
    Case 48 To 100 :
    


    Dlatego Twój post za dużo nie wnosi...

    Pytanie nadal aktualne - ja rozwiązać problem migającej diody z częstopliwością mrugania co 350ms, pod warunkiem STAN = 1?



    Pozdrawiam
REKLAMA