Привожу кусок программы, где пересчитываются переменые 8 каналов в зависимости от их приоритета (CH). Высший приоритет - 0. Писал в CodeVisionAVR. Контроллер Мега16.
Пока не додумал что-нибудь попроще, но работает эта лесенка (программно проверил) только до комментария. То есть просчитывает только до 4-го уровня.
Какие-то есть на это ограничения, просветите, пожалуйста? Если да, то как можно извернуться?
for (a=0;a‹=7;a++)
if (CH[a]==0)
for (b=0;b‹=7;b++)
if (CH[b]==a)
{
Mas[b]=Mas[b]+Mas[a];
for (c=0;c‹=7;c++)
if (CH[c]==b)
{
Mas[c]=Mas[c]+Mas[b];
for (d=0;d‹=7;d++)
if (CH[d]==c)
{
Mas[d]=Mas[d]+Mas[c];
// Глубина = 4
for (e=0;e‹=7;e++)
if (CH[e]==d)
{
Mas[e]=Mas[e]+Mas[d];
for (f=0;f‹=7;f++)
if (CH[f]==e)
{
Mas[f]=Mas[f]+Mas[e];
for (g=0;g‹=7;g++)
if (CH[g]==f)
{
Mas[g]=Mas[g]+Mas[f];
for (h=0;h‹=7;h++)
if (CH[h]==g)
Mas[h]=Mas[h]+Mas[g];
}
}
}
//
}
}
}
Для удобства восприятия текста я прилагаю скриншот.
-- Прилагается рисунок: --