Перед
while(1) оставил
OFF(BUZZER);.
Идем дальше...
В режиме аларма при нажатии любой кнопки мигание прекращается и бузер отключается.
Если
не нажимать кнопки, регулятор отключается (на индикаторе три прочерка -
[---] ).
Но при этом бузер начинает пищать непрерывно, что с
OFF(BUZZER); перед
while(1), что без него .
При нажатии любой кнопки бузер отключается, на индикаторе три прочерка -
[---], дальше можно управлять регулятором, как обычно - выбрать фиксированную настройку, перейти в настройки и т.д.
Конечно, постоянный писк бузера после отключения регулятора можно рассматривать как незапланированную фичу, типа, если в режиме аларма не была нажата любая кнопка, регулятор отключается и бузер начинате пищать постоянно, требуя от имени регулятора - "отключите меня от питания!!!"

.
Может, оно и полезно в плане общей безопасности. Но как-то неправильно

.
Видимо, надо еще вставить
OFF(BUZZER);, когда регулятор отключен, но где это в коде - не нашел.
Также при срабатывании аларма в режиме
FI – фазоимпульсный в такт бузеру слегка мигает подключенная лампа накаливания.
Добавлено after 1 hour 49 minutes 7 seconds:Как бы вылечилось так:
Код: Выделить всё
//----------=----------.1-Sek---------------------------------------
if ( --Tim100msek==0 ) //0.1sek
{
Tim100msek=100;
TimeState--;
if (TimeState==0) {
regim=0;
OFF(BUZZER);//выключен
}
if (--ViewReg==0) Flag&=~VIEWREG;
// ...
После выключения регулятора бузер выдает ~2-секундный непрерывный сигнал, умолкает и переходит в режим
[---], это уже более-менее похоже на промышленный функционал

. Возможно, достаточно поставить отключение бузера только при
if (regim==0) {OFF(BUZZER);}, пока не проверял.
Оригинальный код:
Спойлер
Код: Выделить всё
//----------=----------.1-Sek---------------------------------------
if ( --Tim100msek==0 ) //0.1sek
{
Tim100msek=100;
TimeState--;
if (TimeState==0) regim=0;
if (--ViewReg==0) Flag&=~VIEWREG;
// ...
... ардубино и наебиэкспресс убивают творчество в зародыше.