Ни хрена понять не могу. То ли лыжи не едут. Уже давно использую следующие куски кода -> А сегодня не могу понять, почему не работает тот же принцип.
; Давно использую этот кусок. Работает.
ldix ST_CNT
ldi CNT,ST_SIZE
sec
in RSREG,SREG
System_Timer_Cycle:
ld r16,X
out SREG,RSREG
adc r16,RCLR
in RSREG,SREG
st X+,r16
dec CNT
brne System_Timer_Cycle
; Сегодня попробовал. Работает.
ldix SPI_RECEIVE_BUFFER
ldiy INPUTS_PREV
ldi CNT,INPUTS_BYTES_LENGHT
clc
in RSREG,SREG
Process_Inputs_None_Cycle_0:
out SREG,RSREG
ld r16,X+
ld r17,Y+
cpc r16,r17
in RSREG,SREG
dec CNT
brne Process_Inputs_None_Cycle_0
out SREG,RSREG
breq Process_Inputs_End
; Сегодня, после второго примера переписал. Не работает.
; Хотя до этого, простое сравнение нескольких регистров работало.
Process_Inputs_Change:
Set_State _PROCESS_INPUTS,_PROCESS_INPUTS_NONE
cbr FLAGS,1<<INPUTS_CHANGE_FLG
ldix (INPUTS_CURRENT+INPUTS_BYTES_LENGHT)
ldiz (Table_Inputs*2)
Process_Inputs_Change_Cycle:
lpm r16,Z+
cp r16,RSER
lpm r16,Z
cpc r16,RSER
breq Process_Inputs_Change_End
sbiw ZL,1
ldi CNT,INPUTS_BYTES_LENGHT
in r16,SREG ; Ни так не работает.
andi r16,0b10000000
mov RSREG,r16
clc ; ; Ни так не работает.
Process_Inputs_Change_Cycle_0:
out SREG,RSREG
lpm r16,Z+
ld r17,-X
cpc r16,r17
in RSREG,SREG
dec CNT
brne Process_Inputs_Change_Cycle_0
out SREG,RSREG
breq Process_Inputs_Equal ; Упорно не видит равенства.
adiw ZL,2
adiw XL,INPUTS_BYTES_LENGHT
rjmp Process_Inputs_Change_Cycle
Process_Inputs_Equal:
lpm r17,Z+
lpm r16,Z
movw ZH:ZL,r17:r16
ijmp
Process_Inputs_Change_End:
ret
Тут же написал проверочный код. Работает.
in r16,SREG
andi r16,0b10000000
out SREG,r16
clc
clr r16
clr r17
cpc r16,r17
ldi r16,1
ldi r17,1
cpc r16,r17
breq Main
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
sei ; Ãëîáàëüíîå ðàçðåøåíèå ïðåðûâàíèé.
;=========================================================================
;=========================================================================
Main:
Ни фига не въезжаю...