728x90
이번에는 Led Bar를 버튼을 사용하여 동작을 구현할것이다.
동작을 구현할 코드는 다음과 같다.
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC = 0xff; // DDRC는 항상 출력한다.
DDRD &= ~(1<<0); // 1을 왼쪽으로 0번 이동하니까 0000 0001
// ~ 연산 걸어주면 1111 1110
// D포트 초기값은 0이니까 and 연산 걸어주면, 0000 0000
while(1)
{
if (PIND & (1 << 0)) //D포트가 0이 되었을 때
{
PORTC &= ~(1 << 4); // 0001 0000
// ~ 걸어주면 1110 1111
// and 연산 걸어주면 0000 0000
}
else
{
PORTC |= (1 << 4); // 0001 0000 이니까 5번쨰 LED 점등
}
}
}
LED Bar가 달려있는 DDRC는 항상 출력으로 하여 포트의 동작에 따라 LED가 동작할수있도록 설정하였다.
여기서 버튼은 Pull up 저항의 원리를 사용하여 진행하였다.
Pull up 저항은 평상시에(스위치가 눌리지 않았을 때에) 입력된 상태를 유지하며, 스위치가 눌렸을 때에 전압을 차단하는 원리로 작동된다.
728x90
'Language > AVR' 카테고리의 다른 글
ATmega 128 : Led Bar 버튼 인터럽트 동작 구현 (0) | 2024.05.29 |
---|---|
ATmega 128 : Led Bar 버튼 3개 동작 구현 (0) | 2024.05.29 |
ATmega 128 : LED Bar 구조체 동작 구현 (0) | 2024.05.28 |
ATmega 128 : LED Bar 포인터 동작 구현 (1) | 2024.05.26 |
ATmega 128 : LED Bar 배열 동작 구현 (0) | 2024.05.25 |