Я не вижу проблемы. Если флаги у вас все равно выставляются в прерываниях, то и обработаются. Как-то так:
void main(void){
wdt_enable(6);
sei();
while(1)
{
led1_blink();
Proc_ADC();
Proc_1();
Proc_2();
sleep_enable();
}
}
Прерывание разбудило проц, он пробежался по всем функциям, автоматам. И снова уснул. Пока новое прерывание не разбудит его. В си я не очень. Примерно накидал. На асме так и делаю.
Main:
rcall Func_1
rcall Func_2
sleep
nop
rjmp Main