;/*======================================================================================
;Project : DC¸ðÅÍµå¶óÀÌ¹ö È®Àåº¸µå¸¦ ÀÌ¿ëÇÑ DC¸ðÅÍ Á¦¾îÇÏ±â
;Version :
;Date    : 2011-07-28
;Author  : Kyung Nam Lee
;Company : LKEMBEDDED
;Compiler: CodevisionAVR + AVRStudio
;Comment: DC¸ðÅÍ°¡ Á¤È¸Àü ¿ªÈ¸Àü ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
;
;¡Ø¡ØÁÖÀÇ»çÇ×¡Ø¡Ø
;10p ÇÃ·§ ÄÉÀÌºíÀ» ¾Æ·¡¿Í °°ÀÌ ¿¬°áÇØÁÖ¼¼¿ä!
;ATmega2560 È®ÀåÇü °³¹ßº¸µå PORTC <------------->DC¸ðÅÍµå¶óÀÌ¹ö È®Àåº¸µå - 10ÇÉ ¹Ú½ºÇì´õ Ä¿³ØÅÍ (PORT1)
;======================================================================================*/
;#include <mega2560.h>
;PCODE: $00000000 VOL: 0
	#ifndef __SLEEP_DEFINED__
;PCODE: $00000001 VOL: 0
	#define __SLEEP_DEFINED__
;PCODE: $00000002 VOL: 0
	.EQU __se_bit=0x01
;PCODE: $00000003 VOL: 0
	.EQU __sm_mask=0x0E
;PCODE: $00000004 VOL: 0
	.EQU __sm_powerdown=0x04
;PCODE: $00000005 VOL: 0
	.EQU __sm_powersave=0x06
;PCODE: $00000006 VOL: 0
	.EQU __sm_standby=0x0C
;PCODE: $00000007 VOL: 0
	.EQU __sm_ext_standby=0x0E
;PCODE: $00000008 VOL: 0
	.EQU __sm_adc_noise_red=0x02
;PCODE: $00000009 VOL: 0
	.SET power_ctrl_reg=smcr
;PCODE: $0000000A VOL: 0
	#endif
;PCODE: $0000000B VOL: 0
;PCODE: $0000000C VOL: 0
;#define CW1 PORTC.0
;#define CWC1 PORTC.1
;#define CW2 PORTC.2
;#define CCW2 PORTC.3
;#define EN1 PORTC.4
;#define EN2 PORTC.5
;unsigned int duty=0;
;unsigned int MotorDir=0;
;// Timer 0 overflow interrupt service routine
;interrupt [TIM0_OVF] void timer0_ovf_isr(void)
; 0000 0019 {

	.CSEG
;PCODE: $0000000D VOL: 0
;PCODE: $0000000E VOL: 0
; 0000 001A     static unsigned int cnt,cnt2=0;
; 0000 001B     cnt++;cnt2++;
;PCODE: $0000000F VOL: 0
;PCODE: $00000010 VOL: 0
;PCODE: $00000011 VOL: 0
;PCODE: $00000012 VOL: 0
;PCODE: $00000013 VOL: 0
;PCODE: $00000014 VOL: 0
;PCODE: $00000015 VOL: 0
;PCODE: $00000016 VOL: 0
; 0000 001C     if(cnt==duty)
;PCODE: $00000017 VOL: 0
;PCODE: $00000018 VOL: 0
;PCODE: $00000019 VOL: 0
; 0000 001D     {
; 0000 001E       EN1=EN2=0;
;PCODE: $0000001A VOL: 0
;PCODE: $0000001B VOL: 0
;PCODE: $0000001C VOL: 0
;PCODE: $0000001D VOL: 0
; 0000 001F     }
; 0000 0020     if(cnt==50)
;PCODE: $0000001E VOL: 0
;PCODE: $0000001F VOL: 0
;PCODE: $00000020 VOL: 0
;PCODE: $00000021 VOL: 0
; 0000 0021     {
; 0000 0022       EN1=EN2=1;
;PCODE: $00000022 VOL: 0
;PCODE: $00000023 VOL: 0
;PCODE: $00000024 VOL: 0
;PCODE: $00000025 VOL: 0
; 0000 0023       cnt=0;
;PCODE: $00000026 VOL: 0
;PCODE: $00000027 VOL: 0
; 0000 0024     }
; 0000 0025     if(cnt2==500)
;PCODE: $00000028 VOL: 0
;PCODE: $00000029 VOL: 0
;PCODE: $0000002A VOL: 0
;PCODE: $0000002B VOL: 0
; 0000 0026     {
; 0000 0027         duty++;
;PCODE: $0000002C VOL: 0
;PCODE: $0000002D VOL: 0
;PCODE: $0000002E VOL: 0
; 0000 0028         if(duty>50)
;PCODE: $0000002F VOL: 0
;PCODE: $00000030 VOL: 0
;PCODE: $00000031 VOL: 0
; 0000 0029         {
; 0000 002A             duty=0;
;PCODE: $00000032 VOL: 0
; 0000 002B             duty=1;// pwm pluseÀÇ initialization value
;PCODE: $00000033 VOL: 0
;PCODE: $00000034 VOL: 0
; 0000 002C             MotorDir^=1;  //direction Select variable value
;PCODE: $00000035 VOL: 0
;PCODE: $00000036 VOL: 0
;PCODE: $00000037 VOL: 0
; 0000 002D 
; 0000 002E         }
; 0000 002F         cnt2=0;
;PCODE: $00000038 VOL: 0
;PCODE: $00000039 VOL: 0
;PCODE: $0000003A VOL: 0
; 0000 0030     }
; 0000 0031     TCNT0+=0x06;
;PCODE: $0000003B VOL: 0
;PCODE: $0000003C VOL: 0
;PCODE: $0000003D VOL: 0
;PCODE: $0000003E VOL: 0
; 0000 0032 }
;PCODE: $0000003F VOL: 0
;PCODE: $00000040 VOL: 0
;PCODE: $00000041 VOL: 0
;
;void main(void)
; 0000 0035 {
;PCODE: $00000042 VOL: 0
; 0000 0036 // Port C initialization
; 0000 0037 PORTC=0x00; // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
;PCODE: $00000043 VOL: 0
;PCODE: $00000044 VOL: 0
; 0000 0038 DDRC=0xff;  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
;PCODE: $00000045 VOL: 0
;PCODE: $00000046 VOL: 0
; 0000 0039 
; 0000 003A TCCR0A=0x00;//Normal Mode Operation(Overflow Interrupt Enable)
;PCODE: $00000047 VOL: 0
;PCODE: $00000048 VOL: 0
; 0000 003B TCCR0B=0x03;//64Prescale Select
;PCODE: $00000049 VOL: 0
;PCODE: $0000004A VOL: 0
; 0000 003C TCNT0=0x06;// Timer/Count Register initialization
;PCODE: $0000004B VOL: 0
;PCODE: $0000004C VOL: 0
; 0000 003D 
; 0000 003E TIMSK0=0x01;// Timer(s)/Counter(s) Interrupt(s) initialization
;PCODE: $0000004D VOL: 0
;PCODE: $0000004E VOL: 0
; 0000 003F #asm("sei")// Global enable interrupts
;PCODE: $0000004F VOL: 0
	sei
;PCODE: $00000050 VOL: 0
; 0000 0040 duty=1;// pwm pluseÀÇ initialization value
;PCODE: $00000051 VOL: 0
;PCODE: $00000052 VOL: 0
; 0000 0041 while (1)
;PCODE: $00000053 VOL: 0
; 0000 0042       {
; 0000 0043         switch(MotorDir)
;PCODE: $00000054 VOL: 0
; 0000 0044         {
; 0000 0045         case 0: CW1=1;CWC1=0;CW2=1;CCW2=0;break; //forward direction
;PCODE: $00000055 VOL: 0
;PCODE: $00000056 VOL: 0
;PCODE: $00000057 VOL: 0
;PCODE: $00000058 VOL: 0
;PCODE: $00000059 VOL: 0
;PCODE: $0000005A VOL: 0
;PCODE: $0000005B VOL: 0
;PCODE: $0000005C VOL: 0
;PCODE: $0000005D VOL: 0
;PCODE: $0000005E VOL: 0
;PCODE: $0000005F VOL: 0
; 0000 0046         case 1: CW1=0;CWC1=1;CW2=0;CCW2=1;break; //reverse direction
;PCODE: $00000060 VOL: 0
;PCODE: $00000061 VOL: 0
;PCODE: $00000062 VOL: 0
;PCODE: $00000063 VOL: 0
;PCODE: $00000064 VOL: 0
;PCODE: $00000065 VOL: 0
;PCODE: $00000066 VOL: 0
;PCODE: $00000067 VOL: 0
;PCODE: $00000068 VOL: 0
;PCODE: $00000069 VOL: 0
;PCODE: $0000006A VOL: 0
;PCODE: $0000006B VOL: 0
; 0000 0047         }
;PCODE: $0000006C VOL: 0
; 0000 0048 
; 0000 0049 
; 0000 004A       };
;PCODE: $0000006D VOL: 0
;PCODE: $0000006E VOL: 0
; 0000 004B }
;PCODE: $0000006F VOL: 0
;PCODE: $00000070 VOL: 0
;PCODE: $00000071 VOL: 0
