Отличается тем, что переходы осуществляются не по SKIP, что дает определенную свободу. Данный прокрустиан заточен на устранение джиттера от разных времен входа в прерывание (или поллинга флага прерывания при других применениях) до 8 тактов. Легко меняется. Просто хозяйке на заметку. Мертвое время для 3-х опрашиваемых бит, когда они равны "111" - 6 тактов.
//
RSEG CODE
// Миниморум тактов до точки "End_Min_Delay"
#define MIN_DELAY ( 11 )
//=========================
TIMER1_COMPA_vect: // 6 min: CALL_vect(4) + JMP_handler(2)
push r16 // 7,8 min
in r16, SREG // 9 min
push r16 // 10,11 min
//==========
End_Min_Delay:
in r16, TCNT1L //for debug: ldi r16, (от 4 до 11)
subi r16, MIN_DELAY
andi r16, 0x07
out SREG, r16
//----------
brbs 2, dig2
lpm r16, Z // kill-3
rjmp dig2 // kill-2
dig2: brbs 1, dig1
lpm r16, Z // kill-3
dig1: brbs 0,dig0
rjmp dig0 // kill-2
dig0: //--- Tут выровнялись и пошли работать.
nop
//................
pop r16
out SREG, r16
pop r16
reti
//====