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 - Program nie wykonuję się według planów

henryxxl 06 Gru 2013 20:01 1005 2
REKLAMA
  • #1 13032238
    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: text
    Zaloguj się, aby zobaczyć kod

    Pozdrawiam[/code]
  • REKLAMA
  • Pomocny post
    #2 13032826
    Mateusz@
    Poziom 18  
    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.
  • Pomocny post
    #3 13047767
    tank_driver
    Poziom 17  
    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!
REKLAMA