티스토리 뷰
# 위와같이 코드를 작성하면 우리가 앞서 하나하나 작성해주며 하나의 비트씩 밀며
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로 바꿀떄 위와같이 사용하면 된다.
'EMBEDDED > 8-bit AVR' 카테고리의 다른 글
7) AND연산을 이용하여 특정비트를 0으로 만들기 (0) | 2018.04.23 |
---|---|
5) 이진수 표현과 쉬프트 연산자 사용 (0) | 2018.04.20 |
4) LED 제어 (0) | 2018.04.18 |
3) LED켜기 & 시뮬레이터 디버깅 (0) | 2018.04.18 |
2) Atmel Studio 7.0 설치&프로젝트 생성 (0) | 2018.04.12 |