1초마다 1칸씩 LED 시프트하기

 

1초마다 1칸씩 LED를 시프트 합니다. 마지막 LED가 ON 되면 처음으로 돌아갑니다.

 

 

 

 

 

 

 

 

 

전체 소스 Codevision 용

 

 

   

 /*********************************************

LED 이동하기

PORTA ==> LED 연결

 

 

 

Tools : Codevision

http://watsim.tistory.com

*********************************************/

 

 

#include <mega128.h>

 

// time delay for us

void Delay_10us(char time_us)        

{

    register char i;

    for(i = 0; i < time_us; i++)            // 4 cycle +

    {

    #asm

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle +

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle +

 

    #endasm

    }

}

 

// time delay for ms

void Delay_ms(unsigned int time_ms)    

{

    register unsigned int i;

    for(i = 0; i < time_ms; i++)

    {

        Delay_10us(50);

        Delay_10us(50);

        Delay_10us(50);

        Delay_10us(50);

        Delay_10us(50);

    }

}

 

void main(void)

{

    char byteA=0xFE;

 

    DDRA=0xFF;

//     PORTA = 1;

 

 

    while (1)

    {

    Delay_ms(100);

 

    PORTA = byteA;

    byteA =     (byteA<<1) | 0x01;     

      

    if(0xff == byteA)

         byteA=0xFE;

 

      

}

}

 

 

 

 

 

 

주요 부품

ATMEGA128

 

 

Posted by WhiteAT
,