이 블로그 검색

2023년 12월 11일 월요일

임베디드 비트연산자.

함수를 만들면 함수까지도 다, 메모리를 차지해서, 
임베디드에서는 매크로를 엄청 쓴다. 

#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 같은 것도 처음 생각하는거만 어렵지 알면 간단하다.

댓글 없음:

댓글 쓰기

가장 많이 본 글