DuMAM napisał(a):
Sprawdzanie flag jest jak najbardziej poprawne (nawet w książce tak było robione)
A w którym miejscu książki jest tak robione? Bo szukam i nie mogę znaleźć.
Jak na moje to masz błędne sprawdzanie flag. Jeśli będziesz miał ustawioną flagę minut, godzin i dni czyli clock_flag będzie miała wartość 0b00000111. I teraz w pierwszym warunku if robisz coś takiego
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
czyli
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
clock_flag - 0b00000111
(DT_MIN | DT_HOUR) - 0b00000011
Sprawdź co będziesz miał w zmiennej clock_flag po takiej operacji 0b00000111 & 0b00000011
Flaga dni niechcący zostanie wyzerowana
Aby to potwierdzić napisałem króciutki programik, który na lcd wyświetla sekundy, minuty, godziny i dni. Jeśli sprawdzałem flagi ifami w zaremowanych liniach to wyświetlało mi tylko sekundy, minuty i godziny. Po zmianie warunków sprawdzania flag zaczęło wyświetlać mi wszystkie zmienne.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.