반응형
[LED 실습 5. LED 순차 점등 제어(for 문 이용) ]
이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다.
# 실습 6. LED 순차 점등 제어(for 문 이용)
이 문제에서 알아야 할 것은 LED실습2와 같으므로 생략하겠다.
회로의 경우, 실습1 과 동일하다.
코드의 핵심 동작은 LED 실습 5와 동일하다. 여기서 달라지는 것은 구현 방식이다. 기존에는 while문 안에서 buff 변수의 값이 모두 시프트되었는 지를 확인하여 모두 시프트되어 켜졌을 때 다시 buff 변수에 초깃값을 대입해줬다면, 아래의 코드는 while문의 반복이 시작되었을 때 buff 값을 초깃값으로 만들어주고 for문 안에서 LED가 모두 시프트되어 전부 켜지게 된다. 그러면 while문의 다음 반복이 왔을 때 다시 buff 값이 초깃값이 되면서 반복되게 된다. 요약하자면 이전 실습 5에서의 코드는 if문을, 이번 실습에서는 for문을 이용해서 구현했다고 보면 될 듯하다. 난 개인적으로 if문을 사용한 것이 더 보기 좋은 듯하다.
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char buff;
int i;
DDRC = 0xFF;
PORTC = 0x00;
while (1)
{
buff = 0x00;
for(i = 0; i < 9; i++)
{
PORTC = buff;
_delay_ms(500);
buff = (buff << 1) + 1;
}
}
return 0;
}
아래는 위 코드를 AVR에 업로드하여 실행한 영상이다.
반응형
'AVR' 카테고리의 다른 글
[AVR] ATmega8 브레드보드 테스트 - 스위치 & LED (0) | 2020.06.11 |
---|---|
[AVR] ATmega8 브레드 보드에서 사용하기 - 퓨즈Fuse 비트를 잘못 변경하면 생기는 일 (0) | 2020.06.10 |
[AVR] LED 실습 5. LED 순차 점등 제어(if 문 이용) (0) | 2020.06.08 |
[AVR] LED 실습 4. LED 일일히 설정하여 Shift On/Off (0) | 2020.06.04 |
[AVR] LED 실습 3. LED 잔상 실험 (1) | 2020.06.04 |
댓글