본문 바로가기

AVR 기초/LED 제어하기

[AVR 기초] 스위치를 눌렀을때 LED 점등하기

*키트는 Atmega128A를 사용하였습니다*

 

스위치를 눌렀을 때 LED를 점등하는 코드입니다.

 

#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>

int main(void)	//main함수
{
    /* Replace with your application code */
	unsigned char LED[5] = {0xff, 0x7e, 0x3c, 0x18, 0x00};	//LED라는 이름의 배열 5개 생성. 배열 안의 각각의 값은 LED를 몇개 킬 것인지의 대한 값을 HEX로 나타낸값
	DDRA = 0xff;	//PORTA 사용 (LED 8개)
	DDRE = 0x00;	//PORTE 사용
    while (1)		//무한반복
    {
		  if ((PINE & 0x10) == 0x00){		//회로도에서 위의 스위치가 4번.(PE4) 눌려지지 않았을 때는 1, 눌려졌을때에는 0
			  for (int i = 0 ; i<5 ; i++)
			  {
				  PORTA = LED[i];		//LED[i]의 값을 PORTA에 넣음
				  _delay_ms(1000);		//딜레이 1초
			  }
	  }else
		  PORTA = 0x00;		//스위치가 눌려지지 않았다면 LED OFF
    }
}

Atmega128A에서 데이터시트를 보게 되면 스위치1은 PE4입니다.

DDRE = 0x00은 포트 E를 입력으로 사용한다는 의미입니다.