język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem polega na tym, że w pętli głównej wykorzystujesz delay 1000ms czyli jak wciśniesz i będziesz trzymał wciśnięty klawisz godzinowy to zmiana godzin (ustawianie godzin) będzie następowała co 1 sekundę. To samo tyczy się ustawiania minut. Tak czy inaczej, godziny i minuty są ustawiane prawidłowo.
Wyżej napisałem Ci uproszczoną wersję twojego programu, zobacz, że przy takim opóźnieniu 1s nawet nie trzeba się martwić o drgania styków.
Pomyśl nad timerem programowym, który będzie inkrementował sekundy w przerwaniu. Wtedy warto wykorzystać obsługę przycisków taką jak masz w swoim kodzie. Teraz napisałeś w sposób bardzo blokujący, uC nie robi nic przez 1s. Nie tędy droga.
Dodatkowo powołałeś zmienną keylock1, której nigdzie nie używasz w kodzie, a powinieneś w obsłudze drugiego przycisku. Obecnie korzystasz z keylock dla obu.
Powołujesz zmienne, które znajdują się w funkcji int main(void), więc są to zmienne lokalne. Zmienne lokalne muszą być zainicjowane, na przykład uint8_t cy1 = 0;
A cóż to za zapis?
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jak zrobisz clean projektu to zobaczysz ile masz warningów. Staraj się pisać tak, by po cleanowaniu, nie było ani jednego.
