[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ы 07 декабря 2005 г. 13:50
В ответ на: Хочу журнал во флэшку писать. Если напрямую с RTC кидать дату - получается расточительно. Как можно упаковать дату, чтоб в 2 - 4 байта влезла? отправлено <font color=gray>1111</font> 07 декабря 2005 г. 13:42

дату в лонг запросто в меге на С.
Декодирование в компе.
Есть дата влонг на asm PIC18

/******************************************************************************
* DESCRIPTION:
* convert Date and Time to long seconds
*****************************************************************************/
u32_t PDRV_DT_Long (PDRV_Time_t *pdt) {
u32_t c ;
u32_t ya ;
u32_t res ;
u16_t year ;
u8_t month;

month = pdt->month;
year = pdt->year;

if(month > 2) {
month -= 3;
} else {
month += 9;
year--;
}

c = year / 100;
ya = year - 100 * c;
res = (146097 * c)/4 + (1461 * ya)/4 + (153 * month + 2)/5 + pdt->day;
return (res - 731000l) * 86400l + (pdt->hour * 60l + pdt->minute) * 60l + pdt->sec;
}
/******************************************************************************
* DESCRIPTION:
* convert long seconds to Date and Time
*****************************************************************************/
void PDRV_Long_DT(u32_t j,PDRV_Time_t *pdt) {
REG_t u32_t d,m,y;
REG_t u32_t dat,t;

dat = j/86400l;
t = j - (dat * 86400l);
dat += 731000;

y = (4 * dat - 1) / 146097l;
d = (4 * dat - 1 - 146097l * y) / 4l;

dat = (4 * d + 3) / 1461;

d = (4 * d + 7 - 1461 * dat) / 4l;
m = (5 * d - 3) / 153;

d = (5 * d + 2 - 153 * m) / 5l;
y = 100 * y + dat;

if (m < 10)
m += 3;
else {
m -= 9;
y++;
}
pdt->month = m;
pdt->year = y;
pdt->day = d;
pdt->sec = t % 60l; t /= 60l;
pdt->hour = t / 60l;
pdt->minute = t % 60l;
}


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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru