Sterowanie programem - instrukcja if
 

www.uC51.pl

elektronika | mikrokontrolery MCS-51 | programowanie

  • Increase font size
  • Default font size
  • Decrease font size
Home Programowanie w C

Sterowanie programem - instrukcja if

Tym razem zajmiemy się instrukcją if (ang. 'jeżeli'). Jest to instrukcja, której zawartość zostanie wykonana tylko wtedy, gdy pewne wyrażenie będzie prawdziwe.

Wyrażenie jest prawdziwe tylko wtedy, gdy jest (logicznie) różne od zera lub ma wartość true. Wyrażenie fałszywe ma wartość logiczną 0 lub inaczej false.

 

PROSTY ZAMEK SZYFROWY

Przypuśćmy, że mamy zamek blokujący drzwi, który jest sterowany jednym bitem danych. Jeśli podajemy 0 na wejście układu elektronicznego zamka, będzie on pozostawał zamknięty. Jeśli podamy 1, zamek otworzy drzwi.

Nasz zamek będzie podłączony do portu P2.0 naszego mikrokontrolera.

Kod otwierający drzwi będzie wprowadzany za pomocą portu P0 i będzie się składał z 8 bitów. Mając do dyspozycji 8 bitów, będziemy mieli 256 różnych możliwych kombinacji. Tylko jedna z tych kombinacji będzie otwierała drzwi i niech to będzie 01011111b.Kod będziemy wprowadzać za pomocą przełącznika 8-pozycyjnego.

Program będzie się składał z nieskończonej pętli while() - taką pętlę tworzymy wpisując np. while(true) lub while(1), co spowoduje, że zawartość pętli będzie wykonywana w nieskończoność. W tej pętli znajdzie się nasz kod obsługujący zamek.

 

INSTRUKCJA IF

Najprostsza wersja instrukcji if ma następującą postać:

if(wyrażenie) {

 funkcja1();

 funkcja2();

}

Funkcje funkcja1() i funkcja2() zostaną wykonane tylko wtedy, gdy wyrażenie będzie spełnione.

Wyrażeniem może być dowolne porównanie, np. i > 3 lub c == 7. Może nim być funkcja zwracająca wartości true lub false - np. możemy napisać funkcję czy_czerwony(char *kolor), która przyjmuje ciąg znaków i sprawdza, czy jest on równy słowu "czerwony" - jeśli tak, zwraca wartość true, jeśli nie - false.

Mamy też bardziej rozbudowaną postać instrukcji if, uzupełnioną o else - czyli if...else... (ang. jeśli...to, w przeciwnym razie...). Polega ona na tym, że w przypadku niespełnienia warunku z instrukcji if zostanie wykonana zawartość instrukcji else. Czyli albo to, albo to.

Instrukcje if else mają następującą postać:

if(wyrażenie) {

 funkcja1();

} else {

 funkcja2();

}

Tutaj funkcja2() zostanie wykonana tylko wtedy, gdy wyrażenie nie zostanie spełnione.

 

PROGRAMOWANIE ZAMKA SZYFROWEGO

Nasz zamek ma się otwierać tylko wtedy, gdy użytkownik wprowadzi kod 01011111b. Zastosujemy instrukcję if else, która będzie sprawdzała wprowadzony kod i otwierała lub zamykała zamek.

while(1) {

 if(P0 == 01011111b) {

  P2.0 = true; // otwieramy zamek

 } else {

  P2.0 = false; // zamykamy zamek

 }

}