Перейти к содержанию
    

Преобразование даты

Нет ли, у кого исходника для AVR перевода "человеческого" времени в юниксовое на Асме?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет ли, у кого исходника для AVR перевода "человеческого" времени в юниксовое на Асме?

 

Есть, но 2 но.

 

1. На С - откомпилируй, например, иаром, и из листинга возьми асм-код

2. Считает от 1 янв 2000г, а в унихе 1 янв 1970, довольно просто лечится вычитанием/прибавлением константы к количеству секунд.

 

// Количество дней на начало месяца

__flash int DMonth[]={0,31,59,90,120,151,181,212,243,273,304,334,365};

 

// Преобразование времени и даты в количество секунд после 01-01-2000 00:00

unsigned long TimeDate2Long(char hrs, char min,char sec,char day,char mon,char yrs)

{

unsigned long iday;

iday=365*yrs+DMonth[mon-1]+(day - 1);

iday=iday+(yrs>>2);

if (mon>2||(yrs&3)>0)

iday++;

return(sec+60*(min+60*(hrs+24* iday)));

}

 

// Печать даты и времени по количеству секунд с 01-01-2000 00:00

void PrintTimeDate(char *p, unsigned long x)

{

char sec,min,hrs,mon,yrs;

unsigned int day,iday,day4,yrs4;

 

sec=x%60;

min=(x/60)%60;

hrs=(x/3600)%24;

iday=x/86400;

yrs4=x/((4*365+1)*86400);

day4=iday%(4*365+1);

iday=(day4==(31+28));

if (day4>=(31+28)) day4--;

yrs=(yrs4<<2)+day4/365;

day=day4%365;

mon=0;

while (DMonth[++mon]<=day);

day-=DMonth[mon-1];

if (iday) day++;

day++;

if (yrs>99) yrs=0;

sprintf_P(p,(STR)"%02d:%02d:%02d %02d-%02d-%02d",hrs,min,sec,day,mon,yrs);

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...