[an error occurred while processing this directive] [an error occurred while processing this directive]
UNIX-время в контроллере: как получить минуту и секунду в обычном времени?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено VR 20 мая 2002 г. 07:43

Имеется 4 байта времени в UNIX-формате (секунды). Требуется получить текущую минуту и секунду отдельными значениями. С ходу напрашиваются 2 варианта.
Если поделить 4 байта времени на 3600 (2 байта), то в остатке получим секунды.
Другой вариант - определить три константы (например, 180 дней, 12 часов и 1 час) и вычитанием в цикле сначала первой, затем второй, затем третьей, прийти к тому же результату. Естественно, время с 70-го года не требуется, достаточно с 2002-го, поэтому можно сразу привести к 2001 или 2002 году, что уменьшит число вычитаний.
Весь вопрос в том, что на ассемблере (51-й МК) делить 4 байта на 2 байта неинтересно, а вычитать долго и становится ещё дольше с течением времени. Может, кто-то подскажет более оптимальное решение?
ВременнЫе и ресурсные затраты критичны.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru