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.

Bascom - Program nie wykonuję się według planów

henryxxl 06 Gru 2013 20:01 804 2
  • #1 06 Gru 2013 20:01
    henryxxl
    Poziom 26  

    Witam.
    Napisałem program w którym przyciskami chcę zmieniać wartość zmiennej A o +5 lub -5 w zależności od kliknięcia przycisku. Problem polega na tym ze podprogram po naciśnięciu s3 zapala diody w podprogramie a=55 a przycisk s2 nic nie chce robić. Chcę aby program po wejściu do ustawień umożliwił zmianę zmiennej A od 20 do 55 i zapalił odpowiednie diody i zapisał je do pamięci eeprom a później można było ją odczytać w pętli do loop.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Pozdrawiam[/code]

    0 2
  • Pomocny post
    #2 06 Gru 2013 22:10
    Mateusz@
    Poziom 17  

    Kolego mikroprocesor jest na tyle szybki że jak ty naciśniesz przycisk to on zdąży kilka razy zwiększyć zmienną A. Spróbuj w pętli ustawień wstawić jakieś opóźnienie np. 1 sekundę. Zobacz jak się zmieni działanie programu. Nie masz tez ograniczonej zmiennej A. Trzymając przycisk możesz sobie zmieną A zwiększyć lub zmiejszac że może przyjąć wartości liczby integer czyli od –32768 do +32767.

    0
  • Pomocny post
    #3 10 Gru 2013 23:05
    tank_driver
    Poziom 16  

    Odpowiedzią na twoje kłopoty jest instrukcja DEBOUNCE, gdyż:

    1. Potrafi wywoływać podprogramy przy dowolnym stanie linii portu,
    2. Przycisk raz naciśnięty i puszczony wywołuje podprogram tylko jednorazowo,
    3. Filtruje drgania styków przycisków które potrafią narobić niełego bigosu początkującym,
    4. Jest elegancka, pewna i uszyta "na miarę".

    PS. Atmega nie ma wewnętrznego kwarcu tylko kalibrowany oscylator RC. Zamiast 100*elseif w pętlach wyboru polecam instrukcję: SELECT CASE. Stosując odpowiednie, specjalizowane instrukcje program staje się przejrzysty, a jego modyfikacja - prostsza.

    Pozdrawiam!

    0