To może od początku... Nie wiem co jaki czas wywoływane jest przerwane ( taktowanie mikroklocka, prescaler) ale zakładając że z częstotliwością 100Hz'ów, przy taktowaniu 1Mhz...
1 000 000 Hz / 100 Hz daje nam wywołanie przerwania 10 000 razy na sekundę. W każdym przerwaniu ustawiasz flagę ms5_flag i zerujesz ms5_cnt. Te dwie zmienne nie są w warunkach więc wykonują się w każdym przerwaniu.
Warunek ze zmienną ms_cnt wykonuje się 5 razy, czyli (10000 / 5 = 5000) 5000 razy na 1Mhz czyli 5000 razy na sekundę...
W tym warunku ustawiasz s1_flag i postinkrementujesz zmienną sekundy. Następny warunek to zabezpieczenie przed przepełnieniem licznika sekund.
Zmienna sekundy dodaje się co (60 sek / 5000 razy. inkrementacji = 0.012s ) hmm coś nie tak...
Sporo się napisałem, więc podepnę się pod temat i czekam na sprostowanie mojego toku myślenia ;D
Tapnięte ze smartfona

[url='http://tapatalk.com/m?id=10']now Free[/url]