ИАР-то может и будет ;О) да кто ему даст? ;О) пиши уж всё в АСМе, судя по всему, программа простая и маленькая, но прерывание отметь особо:
N+4(N=1-2-3(LPM SBRx))
in status_holder,spsr 1;!!!!!
in data_reg,port_data 1
st y+,data_reg 2
cp data_buffer_up_limiter_l,yl 1
cpc data_buffer_up_limiter_h,yh 1
brcc pointer_into_buffer 2
movw yl,pointer_dn_addr_container
pointer_into_buffer:
out spsr,status_holder 1
reti 4
итого 15 тактов(18 в хуЧшем), но
status_holder 1
data_reg 1
Y 2
data_buffer_up_limiter 2
pointer_dn_addr_container 2
итого 8 регистров
в остатке ещё 24. Живём!