Цитата(Merovey @ Oct 27 2009, 15:40)

Но насколько работоспособен сам принцип формирования такой задержки?
Вы не привели начало программы... Но, если инициализация проведена "правильно", и пределитель = 1024, то 30 * 80 * 1024 = 2457600. Вроде всё правильно. Насколько это жизнеспособно? Имхо, такие (по продолжительности) задержки в программе - самоубийство (разве, что что-то совсем простое проектируется, но таких устройств в жизни не бывает). Ставить задержки в программу можно (нужно) только если требуемая задержка сопоставима по продолжительности со временем работы процедуры обработки прерывания. Учебный пример может быть далёк от жизни, поскольку он иллюстрирует некий приём, метод работы.
Цитата(Merovey @ Oct 27 2009, 16:46)

Код
subi Mark80, -80
на 4 итерации, следовательно мы превысим 255
Регистр таймера - 8 бит, и переменная Mark80 - тоже. В переменной Mark80 хранится значение регистра таймера, уменьшенное на 80. Т.е. через 80*1024 тактов генератора счетный регистр таймера примет значение, такое же как и Mark80, значение в Mark80 "отодвинем" ещё на 80 и счетчик Count30 уменьшим на единицу. И так 30 раз (первоначальное значение счетчика). Итого: через 30*80*1024 тактов покинем TimeLoop (если строго говорить, то плюс ещё сколько-то тактов).