Код: Выделить всё
typedef struct{
uint8_t turn; // перем. для вкл/выкл будильника on=1, off=0
uint8_t hour;
uint8_t min;
}alarm_t;
alarm_t alarm[7];
это связанно с тем что нумерация будильников начинается с 1
Код: Выделить всё
typedef struct{
uint8_t turn; // перем. для вкл/выкл будильника on=1, off=0
uint8_t hour;
uint8_t min;
}alarm_t;
alarm_t alarm[7];
вот для чего, таким образом номер 1 будильника совпадает с номером 1 дня неделиWiseLord писал(а):А смысл?
Код: Выделить всё
void check_alarms(void){
uint8_t i;
if(f_new_min == 1){
for (i = 1; i <=7; ++i) {
if( day_of_week == i ){
if( alarm[i].hour == hour && alarm[i].min == min ) BUZZER_ON;
}
}
f_new_min = 0; // сбрасываем флаг новой минуты
}
}
Код: Выделить всё
typedef struct{
uint8_t turn; // прем. для вкл/выкл будильника on=1, off=0
uint8_t hour;
uint8_t min;
}alarm_t;
alarm_t alarm[8];
Код: Выделить всё
void check_alarms(void)
{
uint8_t i;
if(f_new_min == 1){
for (i = 0; i <7; ++i) {
if( day_of_week == i + 1 )
if( alarm[i].hour == hour && alarm[i].min == min ) BUZZER_ON;
}
f_new_min = 0; // сбрасываем флаг новой минуты
}
}Код: Выделить всё
for (i = 1; i <7; ++i)Код: Выделить всё
for (i = 1; i <7; i++)Ложное утверждение. Постинкремент и преинкремент различаются тогда и только тогда, когда они используются в выражении, содержащем еще какие-либо члены выражения. Если все выражение состоит только из пост- или пре- (как в примере) , то компилятор сгенерирует один и тот же код для обеих случаев.WiseLord писал(а):Применительно к циклу принципиальной разницы нет, но первый вариант (с преинкрементом) может быть немного быстрее
Вообще-то я там дальше написал, для каких случаев это не ложно. В C++, если инкремент происходит не с простой переменной, а с экземпляром класса (для которого перегружен оператор инкремента), разница может быть. Связано с копированием экзепляра объекта.ptr128 писал(а):Ложное утверждение
Коллега походу покамест не прочуствовал, что этот ноль не просто индекс - а базовый принцип тутошнего Мироздания. Это как таблицу Пифагора называть таблицей умножения. А какие "стихи" выходят из индексов под магией двух делений - целочисленного и по-модулю - ничего лишнего!ARV писал(а):ну вот какая разница, будет понедельник нулем или единицей?
и какие же? продекламируйте, прошу вас!Siarzhuk писал(а):А какие "стихи" выходят из индексов под магией двух делений - целочисленного и по-модулю
[напыщенно так]ARV писал(а):и какие же? продекламируйте, прошу вас!
Код: Выделить всё
buffer[index / 8] & (1 << index % 8)На ночь такой "код" лучше не читать...Siarzhuk писал(а):Код: Выделить всё
buffer[index / 8] & (1 << index % 8)
Код: Выделить всё
for (i = 0; i < 6; ++i) {
eeprom_read_block( &alarm[i], &cp_alarm[i], sizeof(alarm) );
}