본문 바로가기

AVR

토글스위치3개를 이용해 LED ON / OFF 조절

토글스위치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;
		}
	}
}