while(1) // funkcja pętli nieskończonej (gdyby zamiast "1" było jakieś wyrażenie to funcja działa do momentu kidy wyrażenie przestale byc prawdziwe = czyli przestalje być logiczna "1") { if(bit_is_clear(PINB, 0)) // jeśli na wyprowadzeniu (wejście) B0 jest logiczne 0 to wykonaj to co pomiędzy { i }; PINB to w skrócie PINB0 można, napisać np. PINB1?? { PORTA=PORTA^0b00000001; // wyjaśnienie tego na samym dole _delay_ms(160); // opóźnienie eliminujące "trzaski" przycisku } } } /* naciskajcie przycisk i zobaczcie co się dzieje, a dzieje sie tak dzieki zastosowaniu operatora "^" czyli bitowej alternatywy wykluczającej (XOR). wyjasnia to przykład: 0 1 0 1 0 1 0 1 to wartość rejestru PORTA: Dlaczego taka?? ^ 0 0 1 1 0 0 1 1 to wyrażenie "zmieniające" zawartość tego rejestru; skąd się wzięło?? = 0 1 1 0 0 1 1 0 to nowa wartość rejestru PORTA (po wykonaniu polecenia) PORTA to jeden z wielu rejestrów Atmegi, odpowiada on za to co jest na ośmiu wyprowadzeniach PORTU A DDRC to rejest odpowiadający za kierunkowość wyprowadzeń PORTU C PIND to rejestr, w którym "widać" jakie stany logiczne sa na wyprowadzeniach PORTU D Możecie sobie sciągnąć .pdf z opisem Atmegi (niestety po angielsku) jest tam pełny spis wszystkich rejestrów autor: SP4EJT nie zastrzega sobie praw autorskich, pod warunkiem że nie czerpiesz z tego korzysci materialnych, możecie kopiować i zmieniać ten plik */