Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak sprawdzić wartość zmiennej w określonym czasie w BASCOM

Sękuła Tomasz 26 Mar 2012 23:37 1400 2
  • #1 26 Mar 2012 23:37
    Sękuła Tomasz
    Poziom 12  

    Witam, da się jakoś sprawdzić czas trwania wartości zmiennej?
    Chodzi mi konkretnie o to że mamy jakąś zmienną powiedzmy
    I=8
    jeśli zmienna ta nie przekroczy wartości 8 przez 3 sekundy wykonuje się podprogram poprzez polecenie Gosub hamować

    0 2
  • #2 27 Mar 2012 00:06
    biglolo94
    Poziom 16  

    tak najszybciej i najałatwiej

    Code:
    dim x as integer, i as integer
    
    x=0
    do
    if i < 8 then
    wait 1
    x = x+1
    if x >=3 then
    call hamować
    x = 0
    end if
    end if
    loop
    end


    Nie jestem pewny czy to bd działać , ale powinno. Wymyśliłem to tak na szybko, zobacz czy śmiga, a jak coś to bd kombinować dalej.

    0
  • #3 27 Mar 2012 19:11
    Sękuła Tomasz
    Poziom 12  

    Niestety wyskoczyły błędy Error:111 Line 158 Sub or Function non declared. Ale może ja bardziej sprecyzuje mikroprocesor odbiera impulsy do impulsatora na zmiane niski, wysoki i je liczy codzi o to że jak impulsator się zatrzyma i impulsy przestają płynąć to mogą sią zatrzymać na logicznej jedynce albo zerze i teraz chce utworzć jakąś zmięnną do której będą zliczane impulsy np do 8 i jeżeli w ciągu 3 sek zmięna nie zapisze więcej niż 8 bo impulsator się zatrzymał to procesor go wyłączy uruchomi podprogram (wyłączy napęd). poniżej przedstawiam fragment programu


    Waitus 300 'opóźnienie o 5ms
    Incr Wyswietlacz 'następny wyświetlacz co około 5ms
    If Wyswietlacz = 4 Then 'co około 20ms
    Wyswietlacz = 0 'skróć cykl właśnie do 20ms
    If Pina.0 = 0 Then 'jeśli niski
    T1 = 1 'ustaw bit pomocniczy
    Else ' jeśli wysoki
    If T1 = 1 Then 'po zmianie
    T1 = 0 'żeby zwiększyć licznik raz
    Gosub Zwieksz 'zwiększ licznik
    End If
    End If
    End If

    Hamulec:
    Portc.7 = 0 'treść procedury - zmień stan wyjścia
    Waitms 1 'czekaj 1
    Portc.7 = 1 'powróć do pętli
    D = 1
    A = 0 : B = 0 : C = 0
    Return

    0