준비
- 프로그램 설치: http://whiteat.com/260
(WinAVR, AVRStudio 가 설치되어 있어야 ATMEGA128에 프로그램을 할 수 있습니다.)
- 프로그램 라이팅 방법: 다운로드
(직접 작성한 프로그램을 ATMEGA128 에 라이팅 하는 방법입니다.)
- ATMEGA128 초급 키트 (http://kit128.com/goods/view.php?seq=57 )
LED 회전 ON/OFF
PORTE에 연결된 8개의 LED 가 ON/OFF 하면서 시계방향으로 회전하는 예제입니다.
이 예제는 EX_01_01과 동일합니다. (http://whiteat.com/57204 참조)
/* EX_01_01.c
PORTE에연결된LED 순차적으로ON 하기
AVRStudio 4.18 2012-01-08
홈페이지: http://whiteat.com MCU자료실: http://avr128.com 쇼핑몰: http://kit128.com
*/
#include <avr/io.h>
// 일정시간딜레이(약1초) void Delay() { register unsigned long i; for(i = 0; i < 300000; i++) { asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); } }
int main() { DDRE = 0xFF; // ALL OUTPUT PORTE = 0xFE; // PORTE.0 LED ON
while(1) { Delay();
if(PORTE == 0x7F) // 마지막LED 가ON 되었다면. { // 처음LED ON 되게 PORTE = 0xFE; // PORTE.0 LED ON } else // 그렇지않다면 { PORTE <<= 1; // 한칸이동(PORTE = PORTE<<1; 와동일) PORTE |= 1; // 마지막LED 는OFF (PORTE = PORTE | 0x01; 와동일) } } } |
LED 반복 ON/OFF
PORTA에 연결된 8개의 LED 를 교대로 ON/OFF 하는 예제입니다.
#include <avr/io.h>
// 일정시간딜레이(약초) void Delay() { register unsigned long i; for(i = 0; i < 300000; i++) { asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); asm volatile(" PUSH R0 "); asm volatile(" POP R0 "); } }
int main() { DDRA = 0xFF; PORTA = 0x55; // 0, 2, 4, 6 bit LED OFF
while(1) { PORTA = 0x55; // 0, 2, 4, 6 bit LED OFF Delay();
PORTA = 0xAA; // 1, 3, 5, 7 bit LED OFF Delay();
} }
|
ATMEGA128 로 LED 를 ON/OFF 하는 예제를 다루어 보았습니다.
감사합니다.
댓글을 달아 주세요