это чего микросекунд? миллисекунд? секунд? а может ещё каких попугаев?
Если посмотрите выше по ветке, то увидите диаграмму в скрине, где значения явно в миллисекундах.
то сложности вообще не вижу... даже если их все одновременно запустить придётся...
Здесь не стоит задача просто справиться с задачей. Нужно внедрить задел для дополнительных функций на ближайшее или далёкое будущее. Кроме того, ни кто не утверждает, что это нельзя сделать на таймерах. Здесь вопрос подхода: есть ли смысл усложнять себе задачу и мучиться с таймерами, когда можно использовать макрос с простым вызовом: DELAY_MS 65535 и тем более когда вам не нужно прерываться. Да и разгрузить голову, для решения ёмкой задачи весьма как полезно! Не сложной, т.к. всё решаемо, но большой по объёму, а отсюда и кода до фига!
закрытый... это про наличие/отсутствие развязывающих по постоянке конденсаторов?
Нет. Это когда лента в зоне контакта с головками, с обоих сторон контачит с тонвалами. Коих два, для обеспечения нужного прилегания ленты к головкам. Подушка кассеты отводится "падлифтером" полностью, и она не давит на ленту и головку совсем. Лента в подобных трактах, если её чуть вытянуть, выбирается за несколько секунд. Это обеспечивается разностью вращения тонвалов. Поэтому минимальное захлёстывание ленты перед остановкой, рождает проблему. Решается это смешение по времени момента остановки самой перемотки по отношению к повороту программной шестерни и как следствие тормозов. Но если тормоза срабатывают не одновременно, то можно ввести уже в начале плея подмотку чуть раньше. Просто надо знать что крутить, т.е. не сложно.
"У меня нет 27-и, у меня 11КБ."
проведена большая работа по оптимизации, но для простой переключалки (ни разу не интерактивной) это всё-равно много...

Мне бы проект скинуть для разбора по косточкам, но боюсь конкуренты упрут и будут продавать вместо меня. Просто поверьте, много определений, много пересечений режимов и состояний, много чем нужно точно, до 10мСек, управлять. Ужать можно в 2-3-и раза, но эта задача не стоит. Уверен, что в Японии над запихиванием подобного функционала в маленький LM6402A, целый отдел работал. При этом надо было отточить код до безукоризненного состояния. В данном случае важнее:
подробное описание всех жестов обречённых в функции, кои вызываются часто;
возможность добавления модулей для управления по - USART, ИК, I²C;
скорость исполнения, в данном случае, ни как не важна;
точность задержек так же.
Тут у меня и так до фига чего работает, те же PCINT для 4-х портов обслуживают 13-ь пинов, естественно на оба перепада. Флаги, которые можно менять прерываниями PCINT или в зависимости от данных, полученных по протоколам Т.ч. вес проекта не от плохого написания, а от объёма самой задачи, вес который вы уверен да же близко не понимаете. Это не часики знаете ли, это серьёзный аппарата не малой цены, до 200т.р.! Каждая новая функция д.б. расписана во всех места с которыми пересекается, т.ч. местами прогрессия геометрическая, а не арифметическая.
Т.ч. "но для простой переключалки (ни разу не интерактивной)" и близко не стояло!
Так! Короче хватит разглагольствовать. Раз уж все подтянулись, вот вам ТЗ для реализации DELAY_MS:
1. Отполировать идею и код, аргумент в миллисекундах 1-65535 или около того (решено - макросом)
2. малый вес
3. минимальное кол-во используемой программной памяти за вызов
4. PUSH-POP, что б не париться нубам (решено)
5. точность по времени
6. простой вызов в одну строку (решено)
7. зависимость от частоты (решено - XTAL)
8. учёт времени входа-выхода.
Надеюсь армия нубов, во главе со мной

, вам спецы, скажут спасибо!
Думаю, что как-то так:
цикл1 на 1 мСек при условии, если аргумент >1 мСек (XTAL/1000 - кол-во тактов на вызов);
настраиваемый цикл2 на <1 мСек, т.е. с компенсацией вход-выход (XTAL/1000 - кол-во тактов на вход-выход самого макроса) для последней миллисекунды;
основной цикл, запускает цикл1 N-1 кол-во раз и в конце цикл2;
З.Ы. В принципе всё есть, просто собрать и выложить решение для всех. Ну или будет время, тогда сам займусь, но позже. т.к. пока юзаю то, что выкладывал ранее.