/*===========================================================================================
Project : ½ºÅ×ÇÎ ¸ðÅÍ 1»ó ¿©ÀÚ ±¸µ¿ ¹æ½ÄÀ¸·Î ±¸µ¿ ÇÏ±â  
Version : LKM-DOTM-V01
Date    : 2011-07-28
Author  : Kyung Nam Lee
Company : LKEMBEDDED 
Compiler: CodevisionAVR
Comment : ½ºÅ×ÇÎ ¸ðÅÍ Á¤È¸Àü ¹× ¿ªÈ¸Àü ¿¹Á¦¼Ò½º 
10Pin Box ÄÉÀÌºí ¿¬°á½Ã ¾Æ·¡¿Í °°ÀÌ ¿¬°áÇØÁÖ¼¼¿ä!
ATmega128-C È®ÀåÇü °³¹ßº¸µå 10Pin BoxÄ¿³ØÅÍ(PORTC) <-------------> ½ºÅ×ÇÎ¸ðÅÍ ¸ðµâ - 10Pin BoxÄ¿³ØÅÍ(PORT)
===========================================================================================*/

#include <mega2560.h>
#include <delay.h>
char cw[4]={0x11,0x44,0x22,0x88};
char ccw[4]={0x88,0x22,0x44,0x11};
bit Flag;
int Dir;
int Pulse_cnt;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

    static int cnt,cnt2=0;
    cnt++;cnt2++;
    if(cnt==2)//2ms¸¶´Ù 
    { 
        Pulse_cnt++; // Pulse Count!
        if(Pulse_cnt==4)
        {
        Pulse_cnt=0;
        }
        cnt=0;
    }     
    if(cnt2==3000)
    {
		Dir^=1;    
        cnt2=0;
    }
    TCNT0+=0x06;
}

// Declare your global variables here

void main(void)
{
	int i=0;  //»ç¿ëÀÚ º¯¼ö clear

	PORTC=0x00; // PORTC 0~7ÇÉ Ãâ·ÂÀ¸·Î ¼³Á¤ 
	DDRC=0xff;

    TCCR0A=0x00;//Normal Mode Operation(Overflow Interrupt Enable) 
    TCCR0B=0x03;//64Prescale Select
    TCNT0=0x06;// Timer/Count Register initialization

    TIMSK0=0x01;// Timer(s)/Counter(s) Interrupt(s) initialization
    #asm("sei")// Global enable interrupts

while (1) //endless Loop
      {
	 switch(Dir)
     {
     case 0:PORTC=ccw[Pulse_cnt];break; //forward direction
     case 1:PORTC=cw[Pulse_cnt];break; //reverse direction      
     }
  }
}
