티스토리 뷰

# 위와같이 코드를 작성하면 우리가 앞서 하나하나 작성해주며 하나의 비트씩 밀며

LED를 제어했던것을 반복문을 통해 제어할 수 있다.






# 특정 비트만 1로 만들기


먼저 PortD에 f0이라는 값을 써 준다. 

16진수 f 는 2진수의 1111에 해당된다. 따라서 PORTD에는 0b11110000의 값이 써 지게 된다.

우리가 16진수를 주로 사용하는 이유는 16진수 한자리가 2진수 4자리를 표현 할 수 있기 때문이다.


이렇게 셋팅되어있는 상태에서 다른 값들은 유지한채 

특정비트 여기서는 0번쨰비트 (b0)만을 1로 바꾸고싶을때는 어떻게 해야할지 알아보도록 하자.


비트연산자중에 OR이 있다. 논리연산의 OR과는 다르다. 

비트연산의 OR은 | 이고, 논리연산의 OR는 ||이다.


따라서 우리가 알다시피 OR연산을 사용하면 나머지 값을 유지한 채 특정 비트만 1로 만들 수 있게된다.


그러므로 PORTD |= 1<<0 은 나머지를 그대로 둔 채 0번비트만 1로 만드는 것이다.


앞으로 우리가 코딩을 할때 OR연산은 특정비트를 1로 만드는 연산 이라고 알고있으면 된다.






# 위와같이 작성하면 여러개의 특정비트를 제어할 수 있다.

OR연산을 이용해서

0b00000010

0b00001000

0b00100000

0b10000000

이 네가지를 OR연산을 하면 0b10101010이 된다.

따라서 1로 표시된 비트에만 불이 켜지게 된다.






# 원래의 값을 유지 한 채 특정 비트만 1로 바꿀떄 위와같이 사용하면 된다.











댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함