C언어 > 매크로 포트제어

TODAY224 TOTAL2,275,333
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | C언어 | C언어 | 매크로 포트제어

페이지 정보

작성자 키트 작성일2017-09-12 12:57 조회1,472회 댓글0건

본문

#define sbit(x,y) (x |= (1<<y)) //비트를 1

sbit는 set bit의 약어입니다.
특정 비트를 1로 만들기 위한 매크로 선언입니다.
비트마스크 방법으로 OR 연산자를 사용하면 특정 비트를 1로 만들 수 있습니다.
예를들면
PORTA = PORTA |  (1<<3); // 1<<3 은 1을 왼쪽으로 3 시프트하면 비트3 위치가 됩니다.
포트A의 비트3을 1로 set 시키는 문장입니다.
PORTA = PORTA |  (1<<3); 이 문장은
PORTA  |=  (1<<3); // 이렇게 줄여 쓸 수 있습니다.
위 문장을 매크로 처럼 표현 하면
sbit(PORTA,3); // PORTA  |=  (1<<3);를 매크로로 바꾼 문장
//------------
 
#define cbit(x,y) (x &= ~(1<<y))//비트를 0
cbit는 clear bit의 약어입니다.
특정 비트를 0으로 만들기 위한 매크로 선언입니다.
비트마스크 방법으로 AND 연산자를 사용하면 특정 비트를 0으로 만들 수 있습니다.
예를들면
PORTA = PORTA &  ~(1<<3); // 1<<3 은 1을 왼쪽으로 3 시프트하면 비트3 위치가 됩니다.
~는 비트 반전연산자 입니다. 0은 1로 1은 0으로 만듭니다.
포트A의 비트3을 0으로 clear 시키는 문장입니다.
PORTA = PORTA &  ~(1<<3); 이 문장은
PORTA  &=  ~(1<<3); // 이렇게 줄여 쓸 수 있습니다.
위 문장을 매크로 처럼 표현 하면
cbit(PORTA,3); // PORTA  &=  ~(1<<3);를 매크로로 바꾼 문장

//---------

#define tbit(x,y) (x & (1<<y)) //비트가 1인지를 검사

tbit는 test bit의 약어입니다.
특정 비트를 체크하기 위한 매크로 선언입니다.
비트마스크 방법으로 AND 연산자를 사용하면 특정 비트만 남긴 후 로직레벨을 체크 합니다.
예를들면
PINA &  (1<<3); // 포트A의 비트3을 제외한 나머지 비트는 모두 0이 됩니다.
if(PINA & (1<<3)){} // 입력포트A의 비트3이 0이 아니면 실행
위 문장을 매크로 처럼 표현 하면
if( tbit(PINA,3) ){} // 입력포트A의 비트3이 0이 아니면 실행
 
0인 것을 체크 할 때엔
if( tbit(PINA,3)==0){} // 입력포트A의 비트3이 0이면 실행

댓글 0

조회수 1,472

등록된 댓글이 없습니다.

C언어HOME > C언어 > C언어 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기