переписываю программу с ассемблера на Си
столкнулся с такой проблемкой:
реализация некоторой подзадачи на асме выполняется так:
-в регистр загоняем число в двоичном формате и посредством команды rol сдвигаеми побитово и анализируем..
если ноль, выполняем одно если единица, то делаем другое
Код:
|
ldi tmp,0b00000011
rol tmp
brcc ‹подрограмма1› # переход если не было переноса
.... |
на Си я реализовал, но функционал несколько не универсален и работает уже по другому принципу.
пока реализовано статично, в массив:
Код:
|
int DAC[8];
....
DAC[0] = 0;
DAC[1] = 0;
DAC[2] = 0;
DAC[3] = 0;
DAC[4] = 0;
DAC[5] = 0;
DAC[6] = 1;
DAC[7] = 1;
...
for(i=0;i‹=7;i++){ // анализ DAC[] 0b00000011
tmp = DAC[i] & 1; // сравниваем с 1
if(tmp == 1){
trans_dac_loop2();
}else{
trans_dac_loop1();
}
} |
Вопрос: есть ли способ в Си (пакет CodeVisionAVR) работать с регистром переноса нечто функционала команды rol?
потому как потом число инкрементируется и в Си не понимаю как побитово его проанализировать