Команда ldi не влияет на флаги регистра SREG. 4 команды, 4 такта.
.macro cp2i
ldi r16,LOW(@2)
cp @1,r16
ldi r16,HIGH(@2)
cpc @0,r16
.endmacro
cp2i Xh,Xl,(SPI_RECEIVE_BUFFER+SPI_RECEIVE_BUFFER_LENGTH)
Мелькнула у меня одна идейка. Только что прогнал в симуляторе, все работает. Возьму на вооружение.
;----------------------------- Отладка -----------------------------------
outi_sram DISPLAY_BUFFER,DISPLAY_BUFFER_SIZE,ZERO
clr xh
ldi xl,1
clr r16
cpi XL,LOW(1)
cpc XH,r16
breq Main
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
sei
;=========================================================================
;=========================================================================
Main:
wdr
Итого 3 команды, 3 такта.