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

Atmega8 - Jak sprawdzić stan diody i warunek średnia > 500?

krzysiekwfd 27 Mar 2015 13:46 891 10
  • #1 14565746
    krzysiekwfd
    Poziom 11  
    Witam. Wiem, że jest dużo już takich tematów i je przeglądałem, ale nie znalazłem dokładnej odpowiedzi. Chciałbym sprawdzać stan diody, czy jest w stanie wysokim, jeśli tak to ma nic nie robić, jeśli nie ma ponownie sprawdzić stan i jednocześnie sprawdzić warunek:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Tylko nie wiem, czy dobrze to wykonuję pisząc takie coś :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 14565761
    rrytel
    Poziom 14  
    Jeśli wykonujesz to w programie głównym to "return 1" powoduje zakończenie programu.
  • #3 14565762
    szelus
    Poziom 34  
    Skąd Ci przyszedł do głowy taki zapis?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Ja się domyślam, co chciałeś uzyskać :) ale dla kompilatora jest to równoważne !(PB0), co w rezultacie daje 1.
    Poprawne sprawdzenie, czy port jest w stanie wysokim robisz przez odczyt i "wycięcie" właściwego bitu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Poczytaj jak działa operator &.
  • #4 14565772
    krzysiekwfd
    Poziom 11  
    Tak zaszła pomyłka :) Chciałem napisać tak jak wyżej, a wracając do pierwszego sprawdzenia, jeśli jest prawda to mam zrobić tak?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 14565792
    szelus
    Poziom 34  
    Raczej
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Poza tym, trzymaj się konsekwentnie jednej konwencji nawiasów klamrowych, a taki średnik po "if" może dużo napsuć...
  • #6 14565806
    krzysiekwfd
    Poziom 11  
    szelus napisał:
    Raczej
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Poza tym, trzymaj się konsekwentnie jednej konwencji nawiasów klamrowych, a taki średnik po "if" może dużo napsuć...

    Ale chodzi mi o to, że gdy sprawdzi stan i będzie 1 to ma nic nie robić czyli mam zostawić tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Nic tam nie wpisywać?
  • #7 14565848
    szelus
    Poziom 34  
    To znaczy, że kod ma się wykonać jak port jest w stanie niskim.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #8 14566517
    krzysiekwfd
    Poziom 11  
    a co do 2 warunku to dobrze to robie ??
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #9 14566626
    Michał458
    Poziom 17  
    nie jeśli chcesz "jesli 1=1 i 2=2 to wykonaj to" to dajesz if (1=1 && 2=2) {}
  • #11 14567144
    krzysiekwfd
    Poziom 11  
    teraz wydaje mi sie ze jest juz dobrze
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA