'순차'에 해당되는 글 1건

  1. 2011.08.16 WAT-AVR128, EX_01_01, 순차적으로 LED ON 예제

 

 

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 되게

        }

    }

}

 

 

 

 

 

 

전체 소스

 

EX_01_01.zip

 

Posted by WhiteAT
,