ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
29 сентября
240909 Топик полностью
mazur (27.02.2011 13:11, просмотров: 206) ответил mazur на Ни хрена понять не могу. То ли лыжи не едут. Уже давно использую следующие куски кода -> А сегодня не могу понять, почему не работает тот же принцип.
Решил. Флаги I, T не трогаем. Вдруг задействованы. Флаг Z устанавливаем. Флаг C, в зависимости от надобности, сбрасываем или устанавливаем. Все остальное сбрасываем. Итог-регистр SREG подготовлен к любым манипуляциям. in r16,SREG andi r16,0b11000010 sbr r16,1<<SREG_Z | 1<<SREG_C mov RSREG,r16 System_Timer_Cycle: ld r16,X out SREG,RSREG adc r16,RCLR in RSREG,SREG st X+,r16 dec CNT brne System_Timer_Cycle 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,0b11000010 sbr r16,1<<SREG_Z mov RSREG,r16 Process_Inputs_Change_Cycle_0: lpm r16,Z+ ld r17,-X out SREG,RSREG 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