본문 바로가기
AVR

[AVR] LED 실습 4. LED 일일히 설정하여 Shift On/Off

by hseoy 2020. 6. 4.
반응형

[LED 실습 4. LED 일일히 설정하여 Shift ON/OFF ]

이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다.

# 실습 4. LED 일일히 설정하여 Shift ON/OFF

이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다. 

회로의 경우, 실습1 과 동일하다.

먼저 LED를 모두 키고 500ms동안 대기한다. 그 다음에는 LED를 모두 끄고 500ms만큼 대기한다. 그 다음에는 왼쪽 LED 4개를 키고 500ms만큼 대기하고 LED를 모두 끄고 500ms만큼 대기한다. 이번에는 오른쪽 LED 4개를 키고 500ms만큼 대기하고 LED를 모두 끄고 500ms만큼 대기한다. 그리고 이것을 반복한다. 이것을 그대로 코드로 옮기면 된다. 여기서는 실습 문제부터가 "일일이 설정..."이기 때문에 별도의 반복문이나 복잡한 연산을 하는 것이 아니라 진짜로 PORTn 레지스터의 값을 "일일이" 변경하여 LED의 상태를 설정한다.

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

int main()
{
    DDRC = 0xFF;
    PORTC = 0xFF;
    
    while(1)
    {
        PORTC = 0xFF;
        _delay_ms(500);
        PORTC = 0x00;
        _delay_ms(500);
        PORTC = 0xF0;
        _delay_ms(500);
        PORTC = 0x00;
        _delay_ms(500);
        PORTC = 0x0F;
        _delay_ms(500);
        PORTC = 0x00;
        _delay_ms(500);
    }
}

아래 영상은 위 코드를 AVR에 업로드하여 실행한 영상이다. 전체, 오른쪽, 왼쪽 LED가 순서대로 켜지게 된다.

 

반응형

댓글