Проблема общая и стара как мир - недостаточно проработанная структура данных и алгоритм решения. Хватаешься за понятные куски: тут мы сделаем индикацию, тут структуру для канала управления... А общей, детально проработанной структуры данных, взаимодействия, требований по времени - нету. Пока. Потом придумаем. Потом оказывается, что написанные куски не очень складываются в кучу, начинается прилаживание подпорок, обходов, "тут играйте, тут не играйте". Хорошо бы всё переписать заново. но время уже потрачено, да и жалко себя, любимого. Значит, "чаще переворачивай стило", а чтобы не закиснуть за этим занятием, нарисуй сначала структуру решения, начиная с вершины "надо управлять станком" и до нижней веточки "зажечь лампочку L3". Кстати,
вот пример из жизни, когда один удачный рисунок хорошо проясняет.
Про си vs ассемблер (сам сижу на ассемблере :)). Писатель на си отдаёт приказы ротам и полкам, а асеемблерщик сам на боевом коне с шашкой наголо, в гуще событий. Оно конечно здорово, всё видишь сам, и каждый солдат как родной, но крупную баталию так не поднять.