Vit (02.10.2015 09:24 - 09:30, просмотров: 180) ответил symbions на Вопрос по С для АВРок (и прочих малых МК)
По указателю структуру передавать не годится? Можно вместо структуры массив использовать с именованными индексами, ну или запихнуть его в структуру
что-то типа (ну и поправлю int, который подметили коллеги)
enum DS3231{
SECONDS,
MINUTES,
HOURS,
DS3231_QTY
};
typedef struct TIME_DS3231{
char t[DS3231_QTY];
}TIME_DS3231;
unsigned long T2i (TIME_DS3231 * TimeOrAlarm)
{
unsigned long i;
i = *(TimeOrAlarm->t + SECONDS) && 0x0f;
i+=(*(TimeOrAlarm->t + SECONDS)>>4)*10;
i+=(*(TimeOrAlarm->t + MINUTES) && 0x0f)*60;
i+=(*(TimeOrAlarm->t + MINUTES)>>4)*600;
i+=(*(TimeOrAlarm->t + HOURS) && 0x0f)*600*60;
i+=(*(TimeOrAlarm->t + HOURS)>>4)*600*60*10;
return(i);
}
void i2T (TIME_DS3231 * TimeOrAlarm, unsigned long iTimeOrAlarm )
{
*(TimeOrAlarm->t + SECONDS) = iTimeOrAlarm % 600;//для примера просто приведено
//чего-то ещё
*(TimeOrAlarm->t + HOURS) = iTimeOrAlarm>>8;//для примера просто приведено
}
TIME_DS3231 TimeIndic;
TIME_DS3231 TimeAlarm;
//вызов
i2T(&TimeIndic, iTimeIndic);
i2T(&TimeAlarm, iTimeIndic);