Destr,
На обычном, нетурбированом: грубо 3 500 000/50 = 70 000 тактов/кадр.
Реально - плюс минус немного, в зависимости от клона.
Если прерывания включены, то программа обработки своё тоже отжирает.
Сколько тактов затрачивает процедура, делим на 70 000, получаем сколько кадров она будет работать.
А если нужно во время выполнения знать кадр, то:
1. Включить прерывания и считать.
2. Заранее посчитать сколько тратят процедуры времени, и при вызове суммировать.
3. Заранее примерно посчитать сколько тратят процедуры, суммировать. Когда возможно, включать прерывания, и синхронизировать (например считаем в тысячах тактов, пришло прерывание - в счётчике 72 - плюсуем один кадр, в счётчике 230 - плюсуем 3 кадра. Другой вариант - считаем в 273-шках тактов, при прерывании оругляем до второго байта счётчика, который и будет числом кадров. То есть, если младший байт >128, то старшему +1, и младший в любом случае обнуляем.)
4. Не знаю... Терпеть... Попробовать обойтись без счётчика кадров. :)

