[uquote="RoboC",url="/forum/viewtopic.php?p=4671007#p4671007"]Есть место в МК?[/uquote]
По моему пара - тройка строк осталась.
Добавлено after 53 minutes 35 seconds:
[uquote="Matvey6191",url="/forum/viewtopic.php?p=4671024#p4671024"]
SLvik, а можете ответить на вопрос по алгоритму работы часов?
В режиме с плавной сменой цифр периодически происходит пропуск секунд. Полагаю, это происходит потому, что алгоритм смены цифр написан таким образом, чтобы он длился не меньше секунды. Поэтому постепенно накапливается разница между временем в RTC и на лампах, и в какой-то момент происходит пропуск.
Например, мк запрашивает и получает время 12:34:56,95 (доли секунды он не знает, они тут для понимания ситуации), производит смену показаний с 12:34:55 на 12:34:56 за 1,1 секунды (условно, на самом деле анимация смены показаний длится меньше, иначе пропуски были бы каждые 10 секунд), снова запрашивает и получает время 12:34:58,05. И тут он уже производит смену показаний с 12:34:56 на 12:34:58 - так и пропадет 57 секунда в данном случае.
Всё верно?[/uquote]
Алгоритм такой:
Старт.
Сразу заряжает таймер на счёт секунд.
При отображении часов программка при прерывании выходит в адрес 0х04
и там просто ставится флажок и возвращается назад в индикацию.
Это происходит настолько быстро что глаз не замечает этой подпрограммы.
В каком месте программы индикации сработало прерывание неизвестно,
но в конце программы стоит проверка флажка и это перенаправляет на чтения времени,
календаря, опрос клавы и т.д. в конце стираем флаг и опять переходим на отображению нового времени.
До нового срабатывания прерывания, т.е. секунды.
Считывание времени всегда сделано на конце кадра чтобы не было мигания кадра.
При прерывании на 3й цифре и переходе на 1ю и будет мигать кадр каждую секунду.
