함수를 만들면 함수까지도 다, 메모리를 차지해서,
임베디드에서는 매크로를 엄청 쓴다.
#define _BV(bit) (1<<(bit))
#define bit_is_set(sfr,bit) ( SFR_BYTE(sfr) & _BV(bit ) )
#define bit_is_clear(sfr,bit) ( !(SFR_BYTE(sfr) & _BV(bit )) )
#loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit))
#loop_until_bit_is_clear
최적화를 피하기 위해서 이런식으로 작성된 듯하다.
set,clear,invert,read bit
|= _BV(bit)
&= ~_BV(bit)
^= _BV(bit)
|= _BV(bit)
(SFR_BYTE(value) &_BV(bit) ) >> bit)
뭐 어려운 것은 없다. clear bit 같은 것도 처음 생각하는거만 어렵지 알면 간단하다.
댓글 없음:
댓글 쓰기