[실험 5] 패턴에 따라 LED 점등하기
(0) LED를 다음과 같은 패턴으로 1초 간격으로 순차 점등하여라.
(1) 다음 프로그램을 작성하라.
#include <avr/io.h> #define F_CPU 16000000 #include <util/delay.h> int main() { DDRA = 0xFF; while(1) { PORTA = 0xFE; // PORTA = 0b11111110; _delay_ms(1000); PORTA = 0xFD; // PORTA = 0b11111101; _delay_ms(1000); PORTA = 0xFB; // PORTA = 0b11111011; _delay_ms(1000); PORTA = 0xF7; // PORTA = 0b11110111; _delay_ms(1000); PORTA = 0xEF; // PORTA = 0b11101111; _delay_ms(1000); PORTA = 0xDF; // PORTA = 0b11011111; _delay_ms(1000); PORTA = 0xBF; // PORTA = 0b10111111; _delay_ms(1000); PORTA = 0x7F; // PORTA = 0b011111111; _delay_ms(1000); } return 0; } |
(2) 프로그램을 컴파일 및 다운로드하고, 정상작동 여부를 확인하라.
(3) 프로그램의 의미를 파악하라.
[실습 6] 배열로 점등 패턴을 구성하여 LED 점등하기
(0) 이전의 심험에서의 프로그램은 동일한 유형의 문장이 반복되므로 프로그램이 길어지고 복잡해진다. 따라서 점등 패턴을 배열(array)을 사용하여 작성 하여라.
(1) 다음 프로그램을 작성하라.
#include <avr/io.h> #define F_CPU 16000000 #include <util/delay.h> int main() { char pattern[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; // (가) DDRA = 0xFF; while(1) { for(int i=0;i<8;i++) { PORTA = pattern[i]; _delay_ms(1000); } } return 0; } |
(2) 프로그램을 컴파일 및 다운로드하고, 정상작동 여부를 확인하라.
(3) 프로그램의 의미를 파악하라.
[추가 실험]
(1) 8개의 LED가 순차적으로 점등되는 프로그램을 작성하고 구현하라.
- [실험5], [실험6]에서 사용한 방법이 아닌 다른 방법을 사용하라.
- 예를들면 shift연산자 (<<,>>)를 사용한다.
'Mcu 만져보기' 카테고리의 다른 글
Atmega128 7-Segment (0) | 2024.03.04 |
---|---|
Atmega128 LED 구동하기 3 (0) | 2024.03.02 |
Atmega128 LED 구동하기2 (0) | 2024.03.01 |
Atmega128로 LED구동하기 (0) | 2024.03.01 |
MCU vs MPU 둘의 차이는 무엇일까? (2) | 2024.02.01 |