Так как время в "пике" обычно делают с использованием TMR1, а это 16-разрядный счетчик у которого нет возможности задать коэффициент пересчета, поэтому приходится загружать стартовое значение 0х8000, чтобы переполнение наступило через одну секунду, а не через две. Правда, по переполнению нельзя снова загружать тоже самое значение, иначе из-за неминуемой задержки часы будут отставать, причем, совершенно непрогнозируемо. Хотя в AN582 "эти итальянцы" так и сделали.
Вот тут и появилась мысля, а почему прибавлять именно 0х8000? Можно для коррекции прибавлять и иное значение. Тут я прикинул, что будет, если секунду укоротить (или удлиннить) на 1/8 секунды (прибавлять не 0х8000, а 0х9000 или 0х7000), скажем, раз в час? Очень просто, если такое творить раз в час, то в результате 24 таких отклонений, суммарное отклонение составит 3 секунды. А если изменить только младший бит (0х8100 или 0x7F00), то минимальный шаг коррекции будет 0,1875 c. Поэтому я решил, делать коррекцию раз в два часа. Тогда коррекция в 16 единиц составит 1.5 секунды в сутки, а одна единица около 0.1 секунды (0,09375).
Самая большая проблема, как сделать отображение этой настройки на индикаторе часов, на котором нет возможности вывести знак "-" и нет даже запятых? А вот как:
Код: Выделить всё
" 0:0 " -> 0
"01: " -> 1
" :01" -> -1

