Morse писал(а):Что-то типа многозадачности.
...
З.Ы. Через switch case пробовал, но получается как-то кривовато, и не красиво.
Не надо изобретать велосипед

, по крайней мере в этом направлении (взятие адреса метки или switсh-многозадачность)
Его уже придумали и неплохо со всех сторон обсудили. Даже если что-то не нравится, лучше стартовать с достигнутого уровня и допиливать до своих требований.
Начните с
http://www.sics.se/~adam/pt/ - один из корней всего этого
http://bsvi.pp.ua/protopotoki-protothreads/ - немного на русском
и вообще гуглить protothreads
Базовая версия именно на switch/case, недостатом есть то, что нельзя в задачах использовать "системные" макросы внутри своих swicth, т.е. свои switch должны стоять только между "системными" вызовами. Достоинство - работает на любом компиляторе языка С.
Говорят, в поледнее время компилятор CodeVision постепенно становится компилятором языка С, так что должно заработать.
Есть вариант на адресах меток и вычисляемом goto, достоинство - отстутстиве ограничений на применение swicth, особенность (а не недостаток

) - компилируется только GCC, в случае AVR это avr-gcc, WinAVR.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.