Пт янв 11, 2019 14:10:34
unsigned char butt_on_state=WAVE_ALW_ON_LOW,
butt_off_state=WAVE_ALW_OFF_LOW,
st_t=0;
signed char lc=-1;
int tmrLo=0, //счетчик таймера понижения яркости
tmrOff=0, //счетчик таймера включения/отключения света
tmrTun=0; //счетчик таймера настройки света
unsigned char is_tune=0, //признак того что регулируют яркость и не надо выключать свет
state_butt; //Состояние главного конечного автомата кнопки (общий для двух)
switch (state_butt) {
case BUTTON_NOT_PRESS:
if ((BUTT_LOW_PRESS)||(BUTT_HI_PRESS)) {
tmrLo=200;
state_butt=BUTTON_PRESS;
}
if (BUTT_LOW_PRESS) {
butt_on_state=WAVE_ALW_ON_LOW;
butt_off_state=WAVE_ALW_OFF_LOW;
st_t=0;
lc=-1;
}
if (BUTT_HI_PRESS) {
butt_on_state=WAVE_ALW_ON_HI;
butt_off_state=WAVE_ALW_OFF_HI;
st_t=SP_COUNT-1;
lc=1;
}
tmrTun++;
if (tmrTun>100) is_tune=0;
break;
case BUTTON_PRESS:
tmrLo--;
if (tmrLo<0) {
if (lvl>0) {
lvl--;
Led_Correct(lc);
}
tmrLo=10;
is_tune=1;
tmrTun=0;
}
// if ((!(BUTT_LOW_PRESS))&&(!(BUTT_HI_PRESS))) {
if (!(PINA&0b11)) { /* если ни одна кнопка не нажата*/
tmrOff=100;
state_butt=BUTTON_UNPRESS;
}
break;
case BUTTON_UNPRESS:
tmrOff--;
if (tmrOff<0) {
if (!is_tune) { /* одиночное нажатие кнопки*/
if ((state<WAVE_ALW_ON_LOW) || (state>WAVE_ALW_ON)) state=butt_on_state;
else state=butt_off_state;
st=st_t;
}
state_butt=BUTTON_NOT_PRESS;
}
// if ((BUTT_LOW_PRESS)||(BUTT_HI_PRESS)) {
if (PINA&0b11) { /*если нажата любая кнопка*/
if (lvl<245) {
lvl+=10;
Led_Correct(lc);
}
is_tune=1;
tmrTun=0;
state_butt=BUTTON_NOT_PRESS;
}
break;
}
Пт янв 11, 2019 15:04:19
Пт янв 11, 2019 15:10:47