#define test_bit(var, bit_no) (var & (1 << bit_no))
/////////////////////////////////////////////
EXTERN xdata UCHAR check;
#define result 1 0
#define result 2 1
////////////////////////////////////////////////
캡쳐모드를 이용해서 외부 입력 신호를 카운트해서 분석하는 프로그램을 보고있습니다..
아직 경험이 많지않고 익히지못해서 질문드립니다.
set_bit( check, result1) ckeck중 result1을 1로 셋해라.. 라고 해석했습니다.틀리면...음...
! test_bit(check,result2) check중 result2가 1이아니면.. ''
이렇게 해석한다고 생각이 됩니다.
여기서 질문드리고 싶은 것은
result1은 0으로 대체한다고 되어있는데... 어떻게 1로 셋한다는것인지와
result2rk 1인데 어떻게 아니면이라는 형식을 취하는지 잘모르겠습니다..
간단한 설명과 사용이유 부탁드립니다.. 몇일 고민을해도 이유를 모르겠습니다.ㅜㅜ
미리 감사드리며, 감기유의하세요..
/////////////////////////////////////////////
EXTERN xdata UCHAR check;
#define result 1 0
#define result 2 1
////////////////////////////////////////////////
캡쳐모드를 이용해서 외부 입력 신호를 카운트해서 분석하는 프로그램을 보고있습니다..
아직 경험이 많지않고 익히지못해서 질문드립니다.
set_bit( check, result1) ckeck중 result1을 1로 셋해라.. 라고 해석했습니다.틀리면...음...
! test_bit(check,result2) check중 result2가 1이아니면.. ''
이렇게 해석한다고 생각이 됩니다.
여기서 질문드리고 싶은 것은
result1은 0으로 대체한다고 되어있는데... 어떻게 1로 셋한다는것인지와
result2rk 1인데 어떻게 아니면이라는 형식을 취하는지 잘모르겠습니다..
간단한 설명과 사용이유 부탁드립니다.. 몇일 고민을해도 이유를 모르겠습니다.ㅜㅜ
미리 감사드리며, 감기유의하세요..
set_bit( check, result1) //ckeck중 result1을 1로 셋해라..
if(! test_bit(check,result2)) //check중 result2가 1이아니면..
result1이 0으로 정의되잖아요..근데 어떻게 1로 셋하라는건지 이해가되질않아서요...
네 감사합니다.. 차분하게 다시 찾아보겠습니다~~^^
set_bit() <--- 여기에 대한 #define 값이 빠져 있네요... 하지만 대략 추론해보면 해당 비트를 1로 셋시키는 매크로 함수 인듯 합니다.. 예를 들어 set_bit( check, result1) 이라면 chek로 대신하는 해당포트(여기서는 xdata unsignedchar로 선언된 것을 보아 외부 메모리쪽의 해당되는 8bi를 가리키는 것 같습니다.)의 result1비트 즉 0번째 비트를 1로 SET시키는 매크로 함수 입니다. 그리고 test_bit(check,result2)라는 매크로 함수는 #define 된 것을 보면 check를 대신하는 해당포트의 result2비트 즉 1번째 비트가 1인지 0인지를 확인하는 매크로 함수 입니다. & 라는 비트 연산자에 의해 result2비트 즉 1번째 비트가 1이면 1로 ....0이면 0으로 확인됨을 알 수 있습니다.
친절한 답변 다시한번 감사드립니다.. 추운겨울 건강하게 보내세요~