토글스위치3개를 이용해 LED ON / OFF 조절하기
1번스위치 켜기 2번스위치 끄기 3번스위치 켜기 순으로 켜고 끄기
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#define LED_DDR DDRA // LED_DDR로 설정을 하면 complier 가 DDRA로 바꿔준다.
#define LED_PORT PORTA // PORTA에 출력
#define BUTTON_DDR DDRD
#define BUTTON_PIN PIND //PORTD값을 읽어들이는 register
//1 : 5v 0:0v
#define BUTTON1 4 //PORTD.4
#define BUTTON2 5 //PORTD.5
#define BUTTON3 6 //PORTD.6
//button1 : led 전체켜고
//2 번 all off
//3번 led all on
int main(void)
{
LED_DDR = 0xff; // led는 출력모드로 설정
// BUTTON_DDR &= 0x10001111; ->이렇게 사용해도되지만 아래처럼 사용해도 좋다
BUTTON_DDR &= ~( 1 << BUTTON1 | 1 << BUTTON2 | 1 << BUTTON3);
//위의결과 01110000 를 뒤집어서 10001111
while (1)
{
//4번 pin이 High
//if(BUTTON_PIN & (0x10))
if(BUTTON_PIN & (1 << BUTTON1))
{
LED_PORT = 0xff;
}
if(BUTTON_PIN & (1 << BUTTON2))
{
LED_PORT = 0x00;
}
if(BUTTON_PIN & (1 << BUTTON3))
{
LED_PORT = 0xff;
}
}
}
'AVR' 카테고리의 다른 글
인터럽트를 사용해서 PORTA에 LED 깜빡거리게 켜기 (0) | 2023.03.17 |
---|---|
4자리수 FND 초시계와 분시계 만들기 (0) | 2023.03.16 |
4자리 7세그먼트 표시장치 - 기본 동작 확인 (0) | 2023.03.16 |
토글스위치 3개를 이용해 순차적 점등 및 일괄점등 (0) | 2023.03.15 |
AVR 배열 처리 LED left -> right 순차 ON 동작 (0) | 2023.03.15 |