VLLV (12.04.2019 16:44, просмотров: 330) ответил NAUT на а где такое подсмотрели, как называется механизм? биты выставленные по условиям потом разворачиваются в результат?
В этом проекте биты не разворачиваются, а используются внутри функций обработки состояния просто с помощью маски. Альтернативный вариант такой: допустим, эти биты в found_event
char GetEvent(void)
{ char i;
char my_mask=(char)1;
for (i=1; i<=kbdQty-1; i++)
{ if (found_events&my_mask)
{ found_events&=~my_mask;
return(i);
}
my_mask=my_mask<<1;
}
return(0);
}
функция возвращает номер события, привязанный к биту условия.
Тогда обработка состояния происходит так:
function[actual_state][GetEvent()].
Но я от этого сейчас отказался, я использовал такой вариант, когда в одном приборе было несколько одинаковых логических автоматов.
С одним автоматом нагляднее писать через switch