Первая ваша строчка:
#define bitset(var,bitno) ((var) |= 1 << (bitno))
Ну, define ,уверен что знаете как работает.
((var) |= 1 << (bitno)) то же что var=var|(1<<bitno);
все конструкции типа:
|=
&=
^=
+=
-=
и.т.д
означают следующее:
a|=b означает a=a|b;
a&=b означает a=a&b; и.т.д
(1<<bitno) bitno-заданная вами переменная
т.е как бы получается что в числе 0
в двоичном 0000 0000
вы сдвигаете еденицу на bitno,
к примеру bitno=3;
результатом (1<<3)
будет 0000 1000 или число 8
счет начинается с 0
т.е (1<<0) будет равняться 0000 0001(единица)
(1<<7) соответственно 1000 0000 (128)
Последняя строчка:
#define get_miso() ((PINB & (1 << PB6)) ? 1 : 0)
(PINB&(1<<PB6))-выражение
? результат выражения истинный-подставляем 1
: результат ложный подставляем 0
ну а потом в теле программы что-то типа:
if(get_miso()){some actions...}
else{other actions...}
вроде бы все
Сообщение отредактировал Axxel - Apr 12 2007, 05:47
Если боишься - не говори. если сказал - не бойся. ©