479
2016-05-10 15:24:19
0
// 개인적으로는 TRISB = 0x0F; PORTB= 0x0F;가 이해하기 쉬울거라 봅니다.
딴지는 아니예요, 조심 스럽게..
PORTB &= 0x0f 하고 PORTB &= ~0xf0 하고 알아보기엔 not 안한게 편합니다만,
PORTB의 사이즈가 1바이트가 아닐때, 그리고, 니블(4비트)빼고 나머지 비트를 사용 중이라면 결과가 달라집니다.
short int o = 0xffff;
//unsigned char o = 0xff // 1byte형일때는 밑에 결과가 같습니다.
#if 1
o &= ~0xf0; // 결과가 0x ff 0f 가 됩니다.
#else
o &= 0x0f; // 결과가 0x 00 0f 가 됩니다
#endif
printf("sizeof(%d) %xn", sizeof(o), o);
즉, PORTB의 크기를 알수 없을때 원하는 4비트만 조절하고 나머지 비트는 건들지 말아야 합니다.
~ 사용하는것은 읽기 힘드니 나쁘다라는 생각도 하시고,
왜 굳이 ~을 사용했을까 하는 의문도 품어야 합니다. 댓글 다신 분은 당연히 알고 계시리라 믿지만,
원글 작성자 분이 ~의 정확한 용도를 알고 갔으면 합니다.