반응형
Atmel Studio 를 사용하다보면 Port 출력 및 입력이 조금 불편합니다.
다른 컴파일러 같은경우
PORTA.1 = 1
이런식으로 가능하지만 Atmel Studio 의 경우는 지원하지 않아 복잡하죠
어떤곳은 Bit 를 Set 하거나 Clear 하는 함수를 사용하기도 합니다.
C언어에서 if 문 대신 간단하게 사용할 수 있는 삼항 연산자라는게 있습니다.
if문
if(비교)
{ 참}
else
{거짓}
삼항연산자
비교 ? 참 : 거짓
이걸간단하게 응용하면
#define outb(x,y,z) (z ? (x |= (1<< y)) : (x &= ~(1<< y)))
#define inb(x,y) ((x >> y) & 1)
#define inb(x,y) ((x >> y) & 1)
사용법
Output
#define LED(x) outb(PORTA,7,x) //Port A 7번 핀
LED(1); // LED 켜기
LED(0); // LED 끄기
Input
#define SWITCH inb(PINB,2) //Port B 2번 핀
if(SWITCH)
{
}
int status = SWITCH;
위와 같이 사용가능합니다.
반응형
'프로그래밍 언어' 카테고리의 다른 글
printf 로 uart 출력방법(AVR) (0) | 2023.09.14 |
---|---|
AVR EEPROM 읽고 쓰기 (0) | 2023.09.14 |
[C#] 파일다이얼로그 , OpenFileDialog, SaveFileDialog (0) | 2023.08.14 |
volatile & Cache (0) | 2023.07.13 |
[DOS CMD] 환경변수 SET ECHO (0) | 2023.07.06 |