В условиях встречается совершенно разный код. Где-то работа с еепром, где-то её нет, где-то какие-то условия дополнительные, в других - нет, ...
О каких одинаковых кодах ТС говорил ?
опыт подсказывает, что как-раз в подобном коде и можно очень здорово все оптимизировать. только начинать придется не с этого местаАlex писал(а):Что там можно вообще соптимизировать, не понятно ?
Код в условиях примерно одинаков, отличаются пункты меню. Один из вариантов, мне коллега предлагал хранить параметры таймеров в многомерном массиве, в соответствии с пунктами меню и считывать либо записывать настройки с помощью цикла.Аlex писал(а):Сколько условий, кошмар ...![]()
Сделайте лучше через switch-case, быстрее код будет выполняться.
По поводу таймеров и оптимизации кода - не понятно. Что Вы хотите соптимизировать ?
Хоть и код в условиях примерно одинаковый, условия то разные. Единственное, что напрашивается, - таблица с перебором в цикле. Но, время выполнение такого кода будет даже больше текущего варианта.
Спасибо, не знал, подкорректирую кодARV писал(а):да, кстати... проверку eeprom_is_ready() перед вызовом функций работы с EEPROM делать не надо - она там уже встроена. эта проверка требуется только в случаях работы с EEPROM в обработчиках прерываний и/или перед тем, как перевести МК в режим SLEEP_POWER_DOWN.
Вот этот фрагментАlex писал(а):Посмотрел повнимательнее код. Что там можно вообще соптимизировать, не понятно ?
В условиях встречается совершенно разный код. Где-то работа с еепром, где-то её нет, где-то какие-то условия дополнительные, в других - нет, ...
О каких одинаковых кодах ТС говорил ?
Если Вам не сложно немного подсказать, был бы рад услышать замечания и критику.ARV писал(а):[опыт подсказывает, что как-раз в подобном коде и можно очень здорово все оптимизировать. только начинать придется не с этого места
что в ней делать - это вам виднее. например, если пункт меню служит для изменения настроек ЧАСОВ ВКЛЮЧЕНИЯ таймера, то функция будет какой-то такойmelandr писал(а):не могу сообразить, что в функции делать и как ее вызывать из пунктов меню
Код: Выделить всё
void Function(timer *t){
unsigned char tmp = t->on_hour; // запоминаем текущее значение часов включения
if(!edit_hour(t.on_hour)) t->on_hour = tmp; // если редактирование не завершено корректно, восстанавливаем прежнее значение
}чтобы подсказывать, надо быть в курсе ваших планов.melandr писал(а):Если Вам не сложно немного подсказать
Код: Выделить всё
return 0; по-моему, делать динамическую индикацию в главном цикле разумно только на конкурсе "самый дикий код"Dimon456 писал(а):динамическая индикация такого рода индикатора должна располагаться в прерывании таймера, а не в основном коде?
формально - это правильно сказано. но для МК это не имеет никакого значения.melandr писал(а):следовательно, если программа завершилась корректно, то должно быть возвращено значение 0
окончание, может, смысл и имеет (например, если предусмотрен WDT), но вот возврат значения бессмысленен однозначноmelandr писал(а):окончание программы не имеет смысла
вермя в часах вы задаете какой-то функцией - так? время для таймера чем отличается? только номером таймера.melandr писал(а):А то пока ничего не получается
формально - это правильно сказано. но для МК это не имеет никакого значения.[/uquote]0-FALSE-Ложьmelandr писал(а):следовательно, если программа завершилась корректно, то должно быть возвращено значение 0