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

[AVR][C] Rozpoczynanie programu po naciśnięciu przycisku - Błąd

micex123x 16 Mar 2013 21:51 1314 4
REKLAMA
  • #1 12070340
    micex123x
    Poziom 9  
    Chciałem zrobić aby po wciśnięciu przycisku zaczynał się program.
    Jeśli przycisk jest nie naciśnięty to świeci dioda.

    Ten program ma jakiś błąd nie mam pojęcia jaki.

    PS
    Mam mikrokontroler atmega8 taktowany zegarem 8Mhz
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Bardzo proszę forumowiczów o pomoc.
  • REKLAMA
  • #2 12070392
    Sparrowhawk
    Poziom 22  
    Przede wszystkim instrukcja if(...) nie kończy się średnikiem.

    Po drugie instrukcje po if, a przed else jak się domyślam mają się wykonać tylko wtedy gdy przycisk zostanie wciśnięty, a więc warto by było napisać
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 12070885
    micex123x
    Poziom 9  
    Program ma sie cały wykonać po wciśnięciu raz przycisku
  • REKLAMA
  • #4 12071658
    Sparrowhawk
    Poziom 22  
    Skoro ma się wykonać raz, to twój blok instrukcji nie powinien znajdować się w pętli
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jeśli program ma działać jeden raz, to najpierw należy oczekiwać w programie na wciśnięcie przycisku, czyli:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Następnie mają wykonać się twoje instrukcje. A na końcu po instrukcjach powinien znaleźć się blok:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Właściwie to jak jeszcze raz przeczytałem twoje posty, to nie wiem, czy program ma się wykonać tylko jeden raz, czy ma się wykonać zawsze, gdy naciśniesz przycisk. Jeśli to drugie, to wystarczy zamienić instrukcję if(!(PINB & (1<<PB5))) na while(PINB |= (1<<PB5)), który napisałem wyżej i usunąć instrukcję else i to co jest po niej. Myślę, że teraz już powinieneś sobie poradzić.
  • #5 12076279
    dondu
    Moderator na urlopie...
    Ponieważ z tego co widzę dopiero zaczynasz zabawę z mikrokontrolerami i w swoim przykładzie używasz dużych opóźnień, więc nie odczuwasz problemu, ale w innych programach możesz się natknąć na drgania styków: http://mikrokontrolery.blogspot.com/2011/04/przycisk-drgania-stykow-debouncing.html
REKLAMA