PORTA에 연결된 8개의 LED 를 순차적으로ON 하는 예제입니다.
D0: ●○○○○○○○ D1: ○●○○○○○○ D2: ○○●○○○○○ D3: ○○○●○○○○ D4: ○○○○●○○○ D5: ○○○○○●○○ D6: ○○○○○○●○ D7: ○○○○○○○● |
PORTA의 0 ~ 7 포트까지 LED 8개가 연결되어 있고 LED에 불이 들어오게 하려면 해당되는 포트에 '0'을 출력하면 됩니다. D0(PORTA.0에 연결된 LED)부터 D7까지 차례대로 일정시간 ON된 후 OFF 되게 만들어 보겠습니다.
단 마지막 LED 가 ON/OFF 된 후에는 다시 처음으로 되돌아가서 무한 반복해야 합니다.
PORTA 에 대한 실험을 해보겠습니다. 실험에 사용할 회로와 WAT보드의 연결 방법은 아래와 같습니다.
< WAT-AVR128_EXT 보드와 WAT-IO&ADC 보드를 연결 중 >
< WAT-AVR128_EXT 보드와 WAT-IO&ADC 보드 연결 완료 >
원문은 http://avr128.com 에 있습니다.
주요 코드
main.c 일부
/* EX_01_01.c
LED 순차적으로ON 하기 AVRStudio 4.18 2011-08-15
http://avr128.com
*/
#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; // ALL OUTPUT PORTA = 0xFE; // PORTA.0 LED ON
while(1) { Delay();
if(PORTA == 0x7F) // 마지막LED 가ON 되었다면. { // 처음LED ON 되게 PORTA = 0xFE; // PORTA.0 LED ON } else // 그렇지않다면 { PORTA <<= 1; // 한칸이동한후 PORTA |= 1; // 마지막LED 는OFF 되게 } } } |
전체 소스
'AVR키트' 카테고리의 다른 글
WAT-AVR128, EX_01_03, 스위치에 따른 LED ON 제어 예제 (0) | 2011.08.25 |
---|---|
WAT-AVR128(ATMEGA128A), EX_09_02, PC에서 받은 데이터 LCD에 출력 (0) | 2011.08.16 |
그래픽 LCD 도형(원, 사각형, 라인) 그리기 (0) | 2011.08.10 |
Graphics LCD 에 커서(Cursor) 있는 영문 출력하기 (0) | 2011.08.09 |
WAT-AVR128 예제 (소스 제공) (0) | 2011.07.20 |