Language/AVR

ATmega 128 : LED Bar 중앙에서 밀어내는 동작 구현

짱도르딘 2024. 5. 25. 15:52
728x90

| (OR) 연산자를 사용하여 구현을 해봤다.

OR 연산자는 하나라도 1의 입력이 있으면, 출력은 1로 되는 논리연산자이다.

 

0번부터 3번 LED를 순차적으로 점등하고, 7번부터 4번 LED를 순차적으로 점등한다.

그 후로는 반대로 작동하여 다시 중앙으로 모이는 동작을 진행한다.

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

#define LED_DDR DDRC 
#define LED_PORT PORTC

int main(void)
{
	LED_DDR = 0xff;
	
	while(1)
	{
		for (uint8_t i = 0; i < 4; i++) // 8bit unsigned 선언
		{
			LED_PORT = (0x08 >> i) | (0x10 << i); // 0000 1000 상태에서 1을 오른쪽으로 3번 민다
								// 0001 0000 상태에서 1을 왼쪽으로 3번 민다 
			_delay_ms(200);
		}
		for (uint8_t i = 0; i < 4; i++)
		{
			LED_PORT = (0x80 >> i) | (0x01 << i); // 1000 0000 상태에서 1을 오른쪽으로 3번 민다
								// 0000 0001 상태에서 1을 왼쪽으로 3번 민다
			_delay_ms(200); 
		}
	}
}

 

 

 

LED Bar 중앙에서 밀어내기

 

728x90