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

[C] 8051 C – regulacja czasu świecenia LED przyciskiem, zmienna nie wpływa na pętlę

spy89 06 Paź 2012 16:11 1974 4
REKLAMA
  • #1 11383222
    spy89
    Poziom 12  
    Posty: 100
    Mam mały problem z zaprogramowaniem mojego 8051. Otóż napisałem program, który ma generować mi na porcie miganie diody o zmiennym czasie wypełnienia. Wszystko działa fajnie. Ale chciałby, abym mógł przyciskami regulować sobie ten czas (na razie tylko dodawać czas) i już prawie to zrobiłem, ale natrafiłem na problem. Wciskając przycisk dodaje do zmiennej +1 a potem ta zmienna jest używana w pętli do odmierzenia czasu. Lecz okazuje się że tak naprawdę wciskając przycisk nic się nie dzieje. Postanowiłem że to ominę i sprawdzę czy wogole dodaje do tej zmiennej +1 i rzeczywiscie dodaje, ale gdy już używam tą zmienną w pętli to nie działa. Prezentuję poniższy program:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W powyższym przykładzie zakomentowałem odcinek odpowiedzialny na miganie diody, aby sprawdzić czy do zmiennej off jest wpisywana jakaś wartość. Sprawdziłem to jak widać wyświetlając bity w porcie P2. I wszystko działa jak należy. Ale jak już odkomentuję dany odcinek i usunę P2=off; to już program nie reaguje na naciskanie przycisku. Macie może jakieś sugestie?
  • REKLAMA
  • #2 11383256
    excray
    Poziom 41  
    Posty: 5501
    Pomógł: 739
    Ocena: 656
    Popraw ten program zgodnie ze sztuką programowania. Dodatkowe nawiasy, klamry, tabulatory, int-y. Wstydziłbyś się coś tak niechlujnego wklejać na forum.
  • REKLAMA
  • #3 11387404
    spy89
    Poziom 12  
    Posty: 100
    Mało istotne ale Ok. Poprawione.
  • REKLAMA
  • #4 11387575
    excray
    Poziom 41  
    Posty: 5501
    Pomógł: 739
    Ocena: 656
    Jeśli piszesz sam dla siebie i Ci to nie przeszkadza to mało istotne ale jeśli udostępniasz kod publicznie to pisz tak aby to było dla innych zrozumiałe i proste do czytania.
    Moje uwagi:
    1. Używaj typów char skoro piszesz program pod 8-mio bitowy procesor.
    2. Jak wspominałem uzupełnij nawiasy. Popraw swój sposób pisania:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    na taki
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    i tak we wszystkich warunkach. A w szczególności w takich jak ten:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Poczytaj sobie o priorytetach operatorów w C to zrozumiesz dlaczego ta funkcja nie będzie działać tak jak oczekujesz a najlepiej po prostu stosuj nawiasy.
    3. Jeśli już wklejasz kod na forum to nie stosuj czegoś takiego:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    tylko albo zapisuj tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    albo tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 11391446
    spy89
    Poziom 12  
    Posty: 100
    Dziękuję za odpowiedź. Skorzystałem z twoich wskazówek, ale niestety nic nie pomogło. Dodatkowo zmienną "i" zrobiłem jako globalną (jeżeli to tak w tym programowaniu tak się nazywa). Żeby zilustrować mój problem nagrałem filmik. Może coś pomoże.
    http://www.youtube.com/watch?v=CAr59oswmEA&feature=youtu.be
    W filmie na początku widać jak P2=off;
    a potem to zakomentowałem i odkomentowałem dół. Tak jak opisywałem wyżej.


    Kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA