Альтернативы нет, но вопрос количества остается. А можно пример функциональности? У меня в основном цикле обычно только несколько автоматов в явном или неявном виде ну и максимум десяток вложено в эти автоматы или прописаны в прерывания.
while(1)
{
CheckTimeAndResetWDT();
SlaveDompService();
event=GetTimerEvent();
switch (event)
{ case ev500ms:
ShowStateConsole();
break;
case ev10ms:
AverageLoadService();
ScanKey();
break;
}
run_LED();
function[device.state]();
function[head.state]();
function[feet.state]();
function[bed.state]();
event=0;
}