[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
1. Вычисление бита четности (в AVR нет аппаратного):
Вариант-1:
.macro CRC2 ; 10clk CRC2 regValue,tmp
mov @1,@0
swap @1
eor @1,@0
mov @0,@1
lsr @0
eor @0,@1
mov @1,@0
lsr @0
lsr @0
eor @0,@1 ; result in bit0
.endmacro
Вариант-2 (на 2 команды короче):
.macro CRC2 ; 10clk CRC2 regValue,tmp
mov @1,@0
swap @1
eor @1,@0
mov @0,@1
lsr @0
eor @0,@1
sbrc @0,2
subi @0,1 ;result in bit0
.endmacro
Вариант-3 на Си:
Так правильно. Флаг четности в младшем бите.
//x - unsigned char
#define mParityEven(x){\
x^=x>>4;\
x^=x>>2;\
x^=(x>>1);\
}
E-mail: info@telesys.ru