Не понимаю, о чем Вы, но мой диалог здесь
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Vladimir Ljaschko 30 ноября 2005 г. 19:52
В ответ на: Поделится кто нибудь диалогом на Си установки /изменения времени Real Time для мк, желательно , как на бытовых часах(минимум кнопок) .? отправлено DimaS 30 ноября 2005 г. 19:42

void RtcAdjustment(void)
{ char i;
//return;
if (!rtc_adjustment) return;
if (!((rtc_key==evEnter)|(rtc_key==evDn)|(rtc_key==evUp)|(rtc_key==evStA)|(rtc_key==evStAB))) return;
// for (i=0; i// rtc_write_buf[i]=rtc_read_buf[i];
switch (rtc_key)
{ case evEnter: switch (rtc_adjustment)
{ case 1: buf_index=nDate; // after start nothing
max=3; min=0;mask=0x30; // prepare HI date
break;
case 2: buf_index=nDate;
if ((rtc_buf[buf_index]&mask)==0x30)
{ max=1;
if ((rtc_buf[buf_index]&0x0f)>max)
rtc_buf[buf_index]=(rtc_buf[buf_index]&0x30)+max;
}
else max=9;
min=0; // HI date
break; // prepare LO date
case 3: buf_index=nMonth; // LO date
max=1;min=0;mask=0x10; // prepare HI Month
break;
case 4: if ((rtc_buf[buf_index]&mask)==0x10)
{ max=2;
if ((rtc_buf[buf_index]&0x0f)>max)
rtc_buf[buf_index]=0x10+max;
}
else max=9;
min=0; // HI month
break; // prepare LO Month
case 5:
buf_index=nYear; // LO month
max=3; min=0;mask=0x30; // prepare HIYear
break;
case 6: max=9; min=0; // HI year
break; // prepare LO year
case 7: buf_index=nHour; // LO year
max=2;min=0;mask=0x30; // prepare HI Hour
break;
case 8: if ((rtc_buf[buf_index]&mask)==0x20)
{ max=3;
if ((rtc_buf[buf_index]&0x0f)>max)
rtc_buf[buf_index]=0x20+max;
}
else max=9;
min=0; // HI hour
break; // prepare LO hour
case 9:
buf_index=nMinute; // LO hour
max=5; min=0;mask=0x70; // prepare HI minute
break;
case 10: max=9; min=0; // HI minute
break; // prepare LO minute
case 11: buf_index=nSecond; // LO minute
// prepare HI sec
break;
case 12: rtc_buf[buf_index]=0; rtc_adjustment=0; // clear sec
// if (show_RTC==2) show_RTC=0;
break;
}
rtc_adjustment++;
break;
case evUp: if (rtc_adjustment>1)
{ if (rtc_adjustment&1)
{ i=rtc_buf[buf_index];
if ((0x0f&i) rtc_buf[buf_index]=i;
}
else
{ i=rtc_buf[buf_index];
if ((mask&i)<(max<<4)) i=i+0x10;
rtc_buf[buf_index]=i;
}
}
break;
case evDn: if (rtc_adjustment>1)
{ if (rtc_adjustment&1)
{ i=rtc_buf[buf_index];
if (0x0f&i) i--;
rtc_buf[buf_index]=i; ;
}
else
{ i=rtc_buf[buf_index];
if ((mask&i)>(min<<4)) i=i-0x10;
rtc_buf[buf_index]=i;
}
}
break;
case evStA: WriteDefaultRtc();
buf_index=nDate;
min=0;max=3;mask=0x30;
rtc_adjustment=2;
break;
case evStAB: show_RTC1=0;
ClrScr();
printf("Keyboard is waiting");
break;
}
rtc_key=0;
(void) WriteRtc();
(void) ReadRtc();

}

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

Ответы



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

E-mail: info@telesys.ru