Powiedzmy ze mam licznik: volatile uint8_t licznik;
i powiedzmy ze gdziestam go zliczam, ale chce by dochodzil wylacznie do pewnej liczby i koniec - zapetlal sie. Czyli zliczanie modulo. Gdy liczba zliczana jest potega 2ki-1 to najprosciej chyba jest zrobic to (np dla zliczania 0-15) licznik++; licznik&=0x0f; (czyli licznik&=15, czyli pozostawienie jedynie 4 ostatnich bitow)
Jak (ze swojego doswiadczenia) sadzicie, czy bardziej przyzwoita metoda (jesli chodzi o sposob wykonania) jest pisanie warunku licznik++; if (licznik > wartosc_maksymalna) licznik=0; czy tez zrobienie tego przez modulo licznik++; licznik%=wartosc_maksymalna; Domyslam sie ze warunek powinien dac wiekszy kod, ale czy operacja asm porownania zmiennej do stalej nie bedzie szybsza niz operacja dzielenia (obliczenia reszty z dzielenia)? Mowa oczywiscie o avr klasy tiny2313/mega16 a nie avr32 ;)