
;CodeVisionAVR C Compiler V2.05.0 Professional
;(C) Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
;http://www.hpinfotech.com

;Chip type                : ATmega2560
;Program type             : Application
;Clock frequency          : 16.000000 MHz
;Memory model             : Small
;Optimize for             : Size
;(s)printf features       : int, width
;(s)scanf features        : int, width
;External RAM size        : 0
;Data Stack size          : 2048 byte(s)
;Heap size                : 0 byte(s)
;Promote 'char' to 'int'  : Yes
;'char' is unsigned       : Yes
;8 bit enums              : Yes
;global 'const' stored in FLASH: No
;Enhanced core instructions    : On
;Smart register allocation     : On
;Automatic register allocation : On

	#pragma AVRPART ADMIN PART_NAME ATmega2560
	#pragma AVRPART MEMORY PROG_FLASH 262144
	#pragma AVRPART MEMORY EEPROM 4096
	#pragma AVRPART MEMORY INT_SRAM SIZE 8703
	#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x200

	#define CALL_SUPPORTED 1

	.LISTMAC
	.EQU EERE=0x0
	.EQU EEWE=0x1
	.EQU EEMWE=0x2
	.EQU UDRE=0x5
	.EQU RXC=0x7
	.EQU EECR=0x1F
	.EQU EEDR=0x20
	.EQU EEARL=0x21
	.EQU EEARH=0x22
	.EQU SPSR=0x2D
	.EQU SPDR=0x2E
	.EQU SMCR=0x33
	.EQU MCUSR=0x34
	.EQU MCUCR=0x35
	.EQU WDTCSR=0x60
	.EQU UCSR0A=0xC0
	.EQU UDR0=0xC6
	.EQU RAMPZ=0x3B
	.EQU EIND=0x3C
	.EQU SPL=0x3D
	.EQU SPH=0x3E
	.EQU SREG=0x3F
	.EQU XMCRA=0x74
	.EQU XMCRB=0x75
	.EQU GPIOR0=0x1E

	.DEF R0X0=R0
	.DEF R0X1=R1
	.DEF R0X2=R2
	.DEF R0X3=R3
	.DEF R0X4=R4
	.DEF R0X5=R5
	.DEF R0X6=R6
	.DEF R0X7=R7
	.DEF R0X8=R8
	.DEF R0X9=R9
	.DEF R0XA=R10
	.DEF R0XB=R11
	.DEF R0XC=R12
	.DEF R0XD=R13
	.DEF R0XE=R14
	.DEF R0XF=R15
	.DEF R0X10=R16
	.DEF R0X11=R17
	.DEF R0X12=R18
	.DEF R0X13=R19
	.DEF R0X14=R20
	.DEF R0X15=R21
	.DEF R0X16=R22
	.DEF R0X17=R23
	.DEF R0X18=R24
	.DEF R0X19=R25
	.DEF R0X1A=R26
	.DEF R0X1B=R27
	.DEF R0X1C=R28
	.DEF R0X1D=R29
	.DEF R0X1E=R30
	.DEF R0X1F=R31

	.EQU __SRAM_START=0x0200
	.EQU __SRAM_END=0x21FF
	.EQU __DSTACK_SIZE=0x0800
	.EQU __HEAP_SIZE=0x0000
	.EQU __CLEAR_SRAM_SIZE=__SRAM_END-__SRAM_START+1

	.MACRO __CPD1N
	CPI  R30,LOW(@0)
	LDI  R26,HIGH(@0)
	CPC  R31,R26
	LDI  R26,BYTE3(@0)
	CPC  R22,R26
	LDI  R26,BYTE4(@0)
	CPC  R23,R26
	.ENDM

	.MACRO __CPD2N
	CPI  R26,LOW(@0)
	LDI  R30,HIGH(@0)
	CPC  R27,R30
	LDI  R30,BYTE3(@0)
	CPC  R24,R30
	LDI  R30,BYTE4(@0)
	CPC  R25,R30
	.ENDM

	.MACRO __CPWRR
	CP   R@0,R@2
	CPC  R@1,R@3
	.ENDM

	.MACRO __CPWRN
	CPI  R@0,LOW(@2)
	LDI  R30,HIGH(@2)
	CPC  R@1,R30
	.ENDM

	.MACRO __ADDB1MN
	SUBI R30,LOW(-@0-(@1))
	.ENDM

	.MACRO __ADDB2MN
	SUBI R26,LOW(-@0-(@1))
	.ENDM

	.MACRO __ADDW1MN
	SUBI R30,LOW(-@0-(@1))
	SBCI R31,HIGH(-@0-(@1))
	.ENDM

	.MACRO __ADDW2MN
	SUBI R26,LOW(-@0-(@1))
	SBCI R27,HIGH(-@0-(@1))
	.ENDM

	.MACRO __ADDW1FN
	SUBI R30,LOW(-2*@0-(@1))
	SBCI R31,HIGH(-2*@0-(@1))
	.ENDM

	.MACRO __ADDD1FN
	SUBI R30,LOW(-2*@0-(@1))
	SBCI R31,HIGH(-2*@0-(@1))
	SBCI R22,BYTE3(-2*@0-(@1))
	.ENDM

	.MACRO __ADDD1N
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	SBCI R22,BYTE3(-@0)
	SBCI R23,BYTE4(-@0)
	.ENDM

	.MACRO __ADDD2N
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	SBCI R24,BYTE3(-@0)
	SBCI R25,BYTE4(-@0)
	.ENDM

	.MACRO __SUBD1N
	SUBI R30,LOW(@0)
	SBCI R31,HIGH(@0)
	SBCI R22,BYTE3(@0)
	SBCI R23,BYTE4(@0)
	.ENDM

	.MACRO __SUBD2N
	SUBI R26,LOW(@0)
	SBCI R27,HIGH(@0)
	SBCI R24,BYTE3(@0)
	SBCI R25,BYTE4(@0)
	.ENDM

	.MACRO __ANDBMNN
	LDS  R30,@0+(@1)
	ANDI R30,LOW(@2)
	STS  @0+(@1),R30
	.ENDM

	.MACRO __ANDWMNN
	LDS  R30,@0+(@1)
	ANDI R30,LOW(@2)
	STS  @0+(@1),R30
	LDS  R30,@0+(@1)+1
	ANDI R30,HIGH(@2)
	STS  @0+(@1)+1,R30
	.ENDM

	.MACRO __ANDD1N
	ANDI R30,LOW(@0)
	ANDI R31,HIGH(@0)
	ANDI R22,BYTE3(@0)
	ANDI R23,BYTE4(@0)
	.ENDM

	.MACRO __ANDD2N
	ANDI R26,LOW(@0)
	ANDI R27,HIGH(@0)
	ANDI R24,BYTE3(@0)
	ANDI R25,BYTE4(@0)
	.ENDM

	.MACRO __ORBMNN
	LDS  R30,@0+(@1)
	ORI  R30,LOW(@2)
	STS  @0+(@1),R30
	.ENDM

	.MACRO __ORWMNN
	LDS  R30,@0+(@1)
	ORI  R30,LOW(@2)
	STS  @0+(@1),R30
	LDS  R30,@0+(@1)+1
	ORI  R30,HIGH(@2)
	STS  @0+(@1)+1,R30
	.ENDM

	.MACRO __ORD1N
	ORI  R30,LOW(@0)
	ORI  R31,HIGH(@0)
	ORI  R22,BYTE3(@0)
	ORI  R23,BYTE4(@0)
	.ENDM

	.MACRO __ORD2N
	ORI  R26,LOW(@0)
	ORI  R27,HIGH(@0)
	ORI  R24,BYTE3(@0)
	ORI  R25,BYTE4(@0)
	.ENDM

	.MACRO __DELAY_USB
	LDI  R24,LOW(@0)
__DELAY_USB_LOOP:
	DEC  R24
	BRNE __DELAY_USB_LOOP
	.ENDM

	.MACRO __DELAY_USW
	LDI  R24,LOW(@0)
	LDI  R25,HIGH(@0)
__DELAY_USW_LOOP:
	SBIW R24,1
	BRNE __DELAY_USW_LOOP
	.ENDM

	.MACRO __GETD1S
	LDD  R30,Y+@0
	LDD  R31,Y+@0+1
	LDD  R22,Y+@0+2
	LDD  R23,Y+@0+3
	.ENDM

	.MACRO __GETD2S
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	LDD  R24,Y+@0+2
	LDD  R25,Y+@0+3
	.ENDM

	.MACRO __PUTD1S
	STD  Y+@0,R30
	STD  Y+@0+1,R31
	STD  Y+@0+2,R22
	STD  Y+@0+3,R23
	.ENDM

	.MACRO __PUTD2S
	STD  Y+@0,R26
	STD  Y+@0+1,R27
	STD  Y+@0+2,R24
	STD  Y+@0+3,R25
	.ENDM

	.MACRO __PUTDZ2
	STD  Z+@0,R26
	STD  Z+@0+1,R27
	STD  Z+@0+2,R24
	STD  Z+@0+3,R25
	.ENDM

	.MACRO __CLRD1S
	STD  Y+@0,R30
	STD  Y+@0+1,R30
	STD  Y+@0+2,R30
	STD  Y+@0+3,R30
	.ENDM

	.MACRO __POINTB1MN
	LDI  R30,LOW(@0+(@1))
	.ENDM

	.MACRO __POINTW1MN
	LDI  R30,LOW(@0+(@1))
	LDI  R31,HIGH(@0+(@1))
	.ENDM

	.MACRO __POINTD1M
	LDI  R30,LOW(@0)
	LDI  R31,HIGH(@0)
	LDI  R22,BYTE3(@0)
	LDI  R23,BYTE4(@0)
	.ENDM

	.MACRO __POINTW1FN
	LDI  R30,LOW(2*@0+(@1))
	LDI  R31,HIGH(2*@0+(@1))
	.ENDM

	.MACRO __POINTD1FN
	LDI  R30,LOW(2*@0+(@1))
	LDI  R31,HIGH(2*@0+(@1))
	LDI  R22,BYTE3(2*@0+(@1))
	LDI  R23,BYTE4(2*@0+(@1))
	.ENDM

	.MACRO __POINTB2MN
	LDI  R26,LOW(@0+(@1))
	.ENDM

	.MACRO __POINTW2MN
	LDI  R26,LOW(@0+(@1))
	LDI  R27,HIGH(@0+(@1))
	.ENDM

	.MACRO __POINTBRM
	LDI  R@0,LOW(@1)
	.ENDM

	.MACRO __POINTWRM
	LDI  R@0,LOW(@2)
	LDI  R@1,HIGH(@2)
	.ENDM

	.MACRO __POINTBRMN
	LDI  R@0,LOW(@1+(@2))
	.ENDM

	.MACRO __POINTWRMN
	LDI  R@0,LOW(@2+(@3))
	LDI  R@1,HIGH(@2+(@3))
	.ENDM

	.MACRO __POINTWRFN
	LDI  R@0,LOW(@2*2+(@3))
	LDI  R@1,HIGH(@2*2+(@3))
	.ENDM

	.MACRO __GETD1N
	LDI  R30,LOW(@0)
	LDI  R31,HIGH(@0)
	LDI  R22,BYTE3(@0)
	LDI  R23,BYTE4(@0)
	.ENDM

	.MACRO __GETD2N
	LDI  R26,LOW(@0)
	LDI  R27,HIGH(@0)
	LDI  R24,BYTE3(@0)
	LDI  R25,BYTE4(@0)
	.ENDM

	.MACRO __GETB1MN
	LDS  R30,@0+(@1)
	.ENDM

	.MACRO __GETB1HMN
	LDS  R31,@0+(@1)
	.ENDM

	.MACRO __GETW1MN
	LDS  R30,@0+(@1)
	LDS  R31,@0+(@1)+1
	.ENDM

	.MACRO __GETD1MN
	LDS  R30,@0+(@1)
	LDS  R31,@0+(@1)+1
	LDS  R22,@0+(@1)+2
	LDS  R23,@0+(@1)+3
	.ENDM

	.MACRO __GETBRMN
	LDS  R@0,@1+(@2)
	.ENDM

	.MACRO __GETWRMN
	LDS  R@0,@2+(@3)
	LDS  R@1,@2+(@3)+1
	.ENDM

	.MACRO __GETWRZ
	LDD  R@0,Z+@2
	LDD  R@1,Z+@2+1
	.ENDM

	.MACRO __GETD2Z
	LDD  R26,Z+@0
	LDD  R27,Z+@0+1
	LDD  R24,Z+@0+2
	LDD  R25,Z+@0+3
	.ENDM

	.MACRO __GETB2MN
	LDS  R26,@0+(@1)
	.ENDM

	.MACRO __GETW2MN
	LDS  R26,@0+(@1)
	LDS  R27,@0+(@1)+1
	.ENDM

	.MACRO __GETD2MN
	LDS  R26,@0+(@1)
	LDS  R27,@0+(@1)+1
	LDS  R24,@0+(@1)+2
	LDS  R25,@0+(@1)+3
	.ENDM

	.MACRO __PUTB1MN
	STS  @0+(@1),R30
	.ENDM

	.MACRO __PUTW1MN
	STS  @0+(@1),R30
	STS  @0+(@1)+1,R31
	.ENDM

	.MACRO __PUTD1MN
	STS  @0+(@1),R30
	STS  @0+(@1)+1,R31
	STS  @0+(@1)+2,R22
	STS  @0+(@1)+3,R23
	.ENDM

	.MACRO __PUTB1EN
	LDI  R26,LOW(@0+(@1))
	LDI  R27,HIGH(@0+(@1))
	CALL __EEPROMWRB
	.ENDM

	.MACRO __PUTW1EN
	LDI  R26,LOW(@0+(@1))
	LDI  R27,HIGH(@0+(@1))
	CALL __EEPROMWRW
	.ENDM

	.MACRO __PUTD1EN
	LDI  R26,LOW(@0+(@1))
	LDI  R27,HIGH(@0+(@1))
	CALL __EEPROMWRD
	.ENDM

	.MACRO __PUTBR0MN
	STS  @0+(@1),R0
	.ENDM

	.MACRO __PUTBMRN
	STS  @0+(@1),R@2
	.ENDM

	.MACRO __PUTWMRN
	STS  @0+(@1),R@2
	STS  @0+(@1)+1,R@3
	.ENDM

	.MACRO __PUTBZR
	STD  Z+@1,R@0
	.ENDM

	.MACRO __PUTWZR
	STD  Z+@2,R@0
	STD  Z+@2+1,R@1
	.ENDM

	.MACRO __GETW1R
	MOV  R30,R@0
	MOV  R31,R@1
	.ENDM

	.MACRO __GETW2R
	MOV  R26,R@0
	MOV  R27,R@1
	.ENDM

	.MACRO __GETWRN
	LDI  R@0,LOW(@2)
	LDI  R@1,HIGH(@2)
	.ENDM

	.MACRO __PUTW1R
	MOV  R@0,R30
	MOV  R@1,R31
	.ENDM

	.MACRO __PUTW2R
	MOV  R@0,R26
	MOV  R@1,R27
	.ENDM

	.MACRO __ADDWRN
	SUBI R@0,LOW(-@2)
	SBCI R@1,HIGH(-@2)
	.ENDM

	.MACRO __ADDWRR
	ADD  R@0,R@2
	ADC  R@1,R@3
	.ENDM

	.MACRO __SUBWRN
	SUBI R@0,LOW(@2)
	SBCI R@1,HIGH(@2)
	.ENDM

	.MACRO __SUBWRR
	SUB  R@0,R@2
	SBC  R@1,R@3
	.ENDM

	.MACRO __ANDWRN
	ANDI R@0,LOW(@2)
	ANDI R@1,HIGH(@2)
	.ENDM

	.MACRO __ANDWRR
	AND  R@0,R@2
	AND  R@1,R@3
	.ENDM

	.MACRO __ORWRN
	ORI  R@0,LOW(@2)
	ORI  R@1,HIGH(@2)
	.ENDM

	.MACRO __ORWRR
	OR   R@0,R@2
	OR   R@1,R@3
	.ENDM

	.MACRO __EORWRR
	EOR  R@0,R@2
	EOR  R@1,R@3
	.ENDM

	.MACRO __GETWRS
	LDD  R@0,Y+@2
	LDD  R@1,Y+@2+1
	.ENDM

	.MACRO __PUTBSR
	STD  Y+@1,R@0
	.ENDM

	.MACRO __PUTWSR
	STD  Y+@2,R@0
	STD  Y+@2+1,R@1
	.ENDM

	.MACRO __MOVEWRR
	MOV  R@0,R@2
	MOV  R@1,R@3
	.ENDM

	.MACRO __INWR
	IN   R@0,@2
	IN   R@1,@2+1
	.ENDM

	.MACRO __OUTWR
	OUT  @2+1,R@1
	OUT  @2,R@0
	.ENDM

	.MACRO __CALL1MN
	LDS  R30,@0+(@1)
	LDS  R31,@0+(@1)+1
	ICALL
	.ENDM

	.MACRO __CALL1FN
	LDI  R30,LOW(2*@0+(@1))
	LDI  R31,HIGH(2*@0+(@1))
	CALL __GETW1PF
	ICALL
	.ENDM

	.MACRO __CALL2EN
	LDI  R26,LOW(@0+(@1))
	LDI  R27,HIGH(@0+(@1))
	CALL __EEPROMRDW
	ICALL
	.ENDM

	.MACRO __GETW1STACK
	IN   R26,SPL
	IN   R27,SPH
	ADIW R26,@0+1
	LD   R30,X+
	LD   R31,X
	.ENDM

	.MACRO __GETD1STACK
	IN   R26,SPL
	IN   R27,SPH
	ADIW R26,@0+1
	LD   R30,X+
	LD   R31,X+
	LD   R22,X
	.ENDM

	.MACRO __NBST
	BST  R@0,@1
	IN   R30,SREG
	LDI  R31,0x40
	EOR  R30,R31
	OUT  SREG,R30
	.ENDM


	.MACRO __PUTB1SN
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X,R30
	.ENDM

	.MACRO __PUTW1SN
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1SN
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1SNS
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	ADIW R26,@1
	ST   X,R30
	.ENDM

	.MACRO __PUTW1SNS
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	ADIW R26,@1
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1SNS
	LDD  R26,Y+@0
	LDD  R27,Y+@0+1
	ADIW R26,@1
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1PMN
	LDS  R26,@0
	LDS  R27,@0+1
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X,R30
	.ENDM

	.MACRO __PUTW1PMN
	LDS  R26,@0
	LDS  R27,@0+1
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1PMN
	LDS  R26,@0
	LDS  R27,@0+1
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1PMNS
	LDS  R26,@0
	LDS  R27,@0+1
	ADIW R26,@1
	ST   X,R30
	.ENDM

	.MACRO __PUTW1PMNS
	LDS  R26,@0
	LDS  R27,@0+1
	ADIW R26,@1
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1PMNS
	LDS  R26,@0
	LDS  R27,@0+1
	ADIW R26,@1
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1RN
	MOVW R26,R@0
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X,R30
	.ENDM

	.MACRO __PUTW1RN
	MOVW R26,R@0
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1RN
	MOVW R26,R@0
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1RNS
	MOVW R26,R@0
	ADIW R26,@1
	ST   X,R30
	.ENDM

	.MACRO __PUTW1RNS
	MOVW R26,R@0
	ADIW R26,@1
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1RNS
	MOVW R26,R@0
	ADIW R26,@1
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1RON
	MOV  R26,R@0
	MOV  R27,R@1
	SUBI R26,LOW(-@2)
	SBCI R27,HIGH(-@2)
	ST   X,R30
	.ENDM

	.MACRO __PUTW1RON
	MOV  R26,R@0
	MOV  R27,R@1
	SUBI R26,LOW(-@2)
	SBCI R27,HIGH(-@2)
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1RON
	MOV  R26,R@0
	MOV  R27,R@1
	SUBI R26,LOW(-@2)
	SBCI R27,HIGH(-@2)
	CALL __PUTDP1
	.ENDM

	.MACRO __PUTB1RONS
	MOV  R26,R@0
	MOV  R27,R@1
	ADIW R26,@2
	ST   X,R30
	.ENDM

	.MACRO __PUTW1RONS
	MOV  R26,R@0
	MOV  R27,R@1
	ADIW R26,@2
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1RONS
	MOV  R26,R@0
	MOV  R27,R@1
	ADIW R26,@2
	CALL __PUTDP1
	.ENDM


	.MACRO __GETB1SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	LD   R30,Z
	.ENDM

	.MACRO __GETB1HSX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	LD   R31,Z
	.ENDM

	.MACRO __GETW1SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	LD   R0,Z+
	LD   R31,Z
	MOV  R30,R0
	.ENDM

	.MACRO __GETD1SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	LD   R0,Z+
	LD   R1,Z+
	LD   R22,Z+
	LD   R23,Z
	MOVW R30,R0
	.ENDM

	.MACRO __GETB2SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	LD   R26,X
	.ENDM

	.MACRO __GETW2SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	LD   R0,X+
	LD   R27,X
	MOV  R26,R0
	.ENDM

	.MACRO __GETD2SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	LD   R0,X+
	LD   R1,X+
	LD   R24,X+
	LD   R25,X
	MOVW R26,R0
	.ENDM

	.MACRO __GETBRSX
	MOVW R30,R28
	SUBI R30,LOW(-@1)
	SBCI R31,HIGH(-@1)
	LD   R@0,Z
	.ENDM

	.MACRO __GETWRSX
	MOVW R30,R28
	SUBI R30,LOW(-@2)
	SBCI R31,HIGH(-@2)
	LD   R@0,Z+
	LD   R@1,Z
	.ENDM

	.MACRO __GETBRSX2
	MOVW R26,R28
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	LD   R@0,X
	.ENDM

	.MACRO __GETWRSX2
	MOVW R26,R28
	SUBI R26,LOW(-@2)
	SBCI R27,HIGH(-@2)
	LD   R@0,X+
	LD   R@1,X
	.ENDM

	.MACRO __LSLW8SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	LD   R31,Z
	CLR  R30
	.ENDM

	.MACRO __PUTB1SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	ST   X,R30
	.ENDM

	.MACRO __PUTW1SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	ST   X+,R30
	ST   X+,R31
	ST   X+,R22
	ST   X,R23
	.ENDM

	.MACRO __CLRW1SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	ST   X+,R30
	ST   X,R30
	.ENDM

	.MACRO __CLRD1SX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	ST   X+,R30
	ST   X+,R30
	ST   X+,R30
	ST   X,R30
	.ENDM

	.MACRO __PUTB2SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	ST   Z,R26
	.ENDM

	.MACRO __PUTW2SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	ST   Z+,R26
	ST   Z,R27
	.ENDM

	.MACRO __PUTD2SX
	MOVW R30,R28
	SUBI R30,LOW(-@0)
	SBCI R31,HIGH(-@0)
	ST   Z+,R26
	ST   Z+,R27
	ST   Z+,R24
	ST   Z,R25
	.ENDM

	.MACRO __PUTBSRX
	MOVW R30,R28
	SUBI R30,LOW(-@1)
	SBCI R31,HIGH(-@1)
	ST   Z,R@0
	.ENDM

	.MACRO __PUTWSRX
	MOVW R30,R28
	SUBI R30,LOW(-@2)
	SBCI R31,HIGH(-@2)
	ST   Z+,R@0
	ST   Z,R@1
	.ENDM

	.MACRO __PUTB1SNX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	LD   R0,X+
	LD   R27,X
	MOV  R26,R0
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X,R30
	.ENDM

	.MACRO __PUTW1SNX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	LD   R0,X+
	LD   R27,X
	MOV  R26,R0
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X+,R30
	ST   X,R31
	.ENDM

	.MACRO __PUTD1SNX
	MOVW R26,R28
	SUBI R26,LOW(-@0)
	SBCI R27,HIGH(-@0)
	LD   R0,X+
	LD   R27,X
	MOV  R26,R0
	SUBI R26,LOW(-@1)
	SBCI R27,HIGH(-@1)
	ST   X+,R30
	ST   X+,R31
	ST   X+,R22
	ST   X,R23
	.ENDM

	.MACRO __MULBRR
	MULS R@0,R@1
	MOVW R30,R0
	.ENDM

	.MACRO __MULBRRU
	MUL  R@0,R@1
	MOVW R30,R0
	.ENDM

	.MACRO __MULBRR0
	MULS R@0,R@1
	.ENDM

	.MACRO __MULBRRU0
	MUL  R@0,R@1
	.ENDM

	.MACRO __MULBNWRU
	LDI  R26,@2
	MUL  R26,R@0
	MOVW R30,R0
	MUL  R26,R@1
	ADD  R31,R0
	.ENDM

;NAME DEFINITIONS FOR GLOBAL VARIABLES ALLOCATED TO REGISTERS
	.DEF _Toggle=R3
	.DEF _num_cnt=R5

;GPIOR0 INITIALIZATION VALUE
	.EQU __GPIOR0_INIT=0x00

	.CSEG
	.ORG 0x00

;START OF CODE MARKER
__START_OF_CODE:

;INTERRUPT VECTORS
	JMP  __RESET
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  _timer0_ovf_isr
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00
	JMP  0x00

_0x3:
	.DB  0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80
_0x4:
	.DB  0xE7,0xDB,0xBD,0xBD,0x81,0xBD,0xBD,0xBD
	.DB  0xC1,0xBD,0xBD,0xC1,0xDD,0xBD,0xBD,0xC1
	.DB  0xC3,0xBD,0xFD,0xFD,0xFD,0xBD,0xBD,0xC3
	.DB  0xC1,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xC1
	.DB  0x81,0xFD,0xFD,0x81,0xFD,0xFD,0xFD,0x81
	.DB  0x81,0xFD,0xFD,0x81,0xFD,0xFD,0xFD,0xFD
	.DB  0xE7,0xD9,0xBD,0xFD,0x8D,0xBD,0xDB,0xE7
	.DB  0xBD,0xBD,0xBD,0x81,0xBD,0xBD,0xBD,0xBD
	.DB  0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3
	.DB  0xC3,0xE7,0xE7,0xE7,0xE7,0xE5,0xF5,0xFB
	.DB  0xDD,0xED,0xF5,0xF9,0xF5,0xED,0xDD,0xBD
	.DB  0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0x81
	.DB  0xBD,0x99,0xA5,0xA5,0xA5,0xBD,0xBD,0xBD
	.DB  0xBD,0xBD,0xB9,0xB5,0xAD,0x9D,0xBD,0xBD
	.DB  0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7
	.DB  0xE1,0xDD,0xDD,0xDD,0xE1,0xFD,0xFD,0xFD
	.DB  0xE3,0xDD,0xDD,0xDD,0xD5,0xCD,0xC3,0xBF
	.DB  0xC1,0xBD,0xBD,0xC1,0xDD,0xBD,0xBD,0xBD
	.DB  0xC3,0xBD,0xFD,0xC3,0xBF,0xBF,0xBD,0xC3
	.DB  0x81,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7
	.DB  0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xC3
	.DB  0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7
	.DB  0xBD,0xBD,0xBD,0xBD,0xA5,0xA5,0xA5,0x99
	.DB  0xBD,0xBD,0xD9,0xE7,0xE7,0xDB,0xBD,0xBD
	.DB  0xBD,0xBD,0xBD,0xDB,0xE7,0xE7,0xE7,0xE7
	.DB  0x81,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0x81
_0x17:
	.DB  0x0,0x0,0x0,0x0

__GLOBAL_INI_TBL:
	.DW  0x08
	.DW  _vertical
	.DW  _0x3*2

	.DW  0xD0
	.DW  _english
	.DW  _0x4*2

	.DW  0x04
	.DW  0x03
	.DW  _0x17*2

_0xFFFFFFFF:
	.DW  0

__RESET:
	CLI
	CLR  R30
	OUT  EECR,R30

;INTERRUPT VECTORS ARE PLACED
;AT THE START OF FLASH
	LDI  R31,1
	OUT  MCUCR,R31
	OUT  MCUCR,R30
	STS  XMCRA,R30
	STS  XMCRB,R30

;DISABLE WATCHDOG
	LDI  R31,0x18
	WDR
	IN   R26,MCUSR
	CBR  R26,8
	OUT  MCUSR,R26
	STS  WDTCSR,R31
	STS  WDTCSR,R30

;CLEAR R2-R14
	LDI  R24,(14-2)+1
	LDI  R26,2
	CLR  R27
__CLEAR_REG:
	ST   X+,R30
	DEC  R24
	BRNE __CLEAR_REG

;CLEAR SRAM
	LDI  R24,LOW(__CLEAR_SRAM_SIZE)
	LDI  R25,HIGH(__CLEAR_SRAM_SIZE)
	LDI  R26,LOW(__SRAM_START)
	LDI  R27,HIGH(__SRAM_START)
__CLEAR_SRAM:
	ST   X+,R30
	SBIW R24,1
	BRNE __CLEAR_SRAM

;GLOBAL VARIABLES INITIALIZATION
	LDI  R30,LOW(__GLOBAL_INI_TBL*2)
	LDI  R31,HIGH(__GLOBAL_INI_TBL*2)
__GLOBAL_INI_NEXT:
	LPM  R24,Z+
	LPM  R25,Z+
	SBIW R24,0
	BREQ __GLOBAL_INI_END
	LPM  R26,Z+
	LPM  R27,Z+
	LPM  R0,Z+
	LPM  R1,Z+
	MOVW R22,R30
	MOVW R30,R0
__GLOBAL_INI_LOOP:
	LPM  R0,Z+
	ST   X+,R0
	SBIW R24,1
	BRNE __GLOBAL_INI_LOOP
	MOVW R30,R22
	RJMP __GLOBAL_INI_NEXT
__GLOBAL_INI_END:

	OUT  RAMPZ,R24

	OUT  EIND,R24

;GPIOR0 INITIALIZATION
	LDI  R30,__GPIOR0_INIT
	OUT  GPIOR0,R30

;HARDWARE STACK POINTER INITIALIZATION
	LDI  R30,LOW(__SRAM_END-__HEAP_SIZE)
	OUT  SPL,R30
	LDI  R30,HIGH(__SRAM_END-__HEAP_SIZE)
	OUT  SPH,R30

;DATA STACK POINTER INITIALIZATION
	LDI  R28,LOW(__SRAM_START+__DSTACK_SIZE)
	LDI  R29,HIGH(__SRAM_START+__DSTACK_SIZE)

	JMP  _main

	.ESEG
	.ORG 0

	.DSEG
	.ORG 0xA00

	.CSEG
;/*****************************************************
;This program was produced by the
;CodeWizardAVR V2.03.4 Standard
;Automatic Program Generator
;© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
;http://www.hpinfotech.com
;
;Project :
;Version :
;Date    : 2011-09-01
;Author  :
;Company :
;Comments: µµÆ® ¸ÅÆ®¸¯½º ±âº»µ¿ÀÛ ±¸Çö
;
;10p µ¥ÀÌÅÍ ÄÉÀ¸ºí ¿¬°á½Ã ¾Æ·¡¿Í °°ÀÌ ¿¬°áÇØÁÖ¼¼¿ä!
;
;AVR-ATmega2560È®ÀåÇü °³¹ßº¸µå  PORTC <-------------> µµÆ®¸ÅÆ®¸¯½º ¸ðµâ - 10p¹Ú½ºÄ¿³ØÅÍ(PORT0)
;AVR-ATmega2560È®ÀåÇü °³¹ßº¸µå  PORTD <-------------> µµÆ®¸ÅÆ®¸¯½º ¸ðµâ - 10p¹Ú½ºÄ¿³ØÅÍ(PORT1)
;
;Chip type           : ATmega128
;Program type        : Application
;Clock frequency     : 16.000000 MHz
;Memory model        : Small
;External RAM size   : 0
;Data Stack size     : 1024
;*****************************************************/
;
;#include <mega2560.h>
	#ifndef __SLEEP_DEFINED__
	#define __SLEEP_DEFINED__
	.EQU __se_bit=0x01
	.EQU __sm_mask=0x0E
	.EQU __sm_powerdown=0x04
	.EQU __sm_powersave=0x06
	.EQU __sm_standby=0x0C
	.EQU __sm_ext_standby=0x0E
	.EQU __sm_adc_noise_red=0x02
	.SET power_ctrl_reg=smcr
	#endif
;#include <delay.h>
;
;char vertical[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

	.DSEG
;char english[28][8]={
;0xe7,0xdb,0xbd,0xbd,0x81,0xbd,0xbd,0xbd,     // A
;0xc1,0xbd,0xbd,0xc1,0xdd,0xbd,0xbd,0xc1,     // B
;0xc3,0xbd,0xfd,0xfd,0xfd,0xbd,0xbd,0xc3,     // C
;0xc1,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xc1,     // D
;0x81,0xfd,0xfd,0x81,0xfd,0xfd,0xfd,0x81,     // E
;0x81,0xfd,0xfd,0x81,0xfd,0xfd,0xfd,0xfd,     // F
;0xe7,0xd9,0xbd,0xfd,0x8d,0xbd,0xdb,0xe7,     // G
;0xbd,0xbd,0xbd,0x81,0xbd,0xbd,0xbd,0xbd,     // H
;0xc3,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xc3,     // I
;0xc3,0xe7,0xe7,0xe7,0xe7,0xe5,0xf5,0xfb,     // J
;0xdd,0xed,0xf5,0xf9,0xf5,0xed,0xdd,0xbd,     // K
;0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0x81,     // L
;0xbd,0x99,0xa5,0xa5,0xa5,0xbd,0xbd,0xbd,     // M
;0xbd,0xbd,0xb9,0xb5,0xad,0x9d,0xbd,0xbd,     // N
;0xe7,0xdb,0xbd,0xbd,0xbd,0xbd,0xdb,0xe7,     // O
;0xe1,0xdd,0xdd,0xdd,0xe1,0xfd,0xfd,0xfd,     // P
;0xe3,0xdd,0xdd,0xdd,0xd5,0xcd,0xc3,0xbf,     // Q
;0xc1,0xbd,0xbd,0xc1,0xdd,0xbd,0xbd,0xbd,     // R
;0xc3,0xbd,0xfd,0xc3,0xbf,0xbf,0xbd,0xc3,     // S
;0x81,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,     // T
;0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xc3,     // U
;0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xdb,0xe7,     // V
;0xbd,0xbd,0xbd,0xbd,0xa5,0xa5,0xa5,0x99,     // W
;0xbd,0xbd,0xd9,0xe7,0xe7,0xdb,0xbd,0xbd,     // X
;0xbd,0xbd,0xbd,0xdb,0xe7,0xe7,0xe7,0xe7,     // Y
;0x81,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0x81,     // Z
;};
;int Toggle=0;
;int num_cnt=0;
;// Timer 0 overflow interrupt service routine
;interrupt [TIM0_OVF] void timer0_ovf_isr(void)
; 0000 0040 {

	.CSEG
_timer0_ovf_isr:
	ST   -Y,R26
	ST   -Y,R27
	ST   -Y,R30
	ST   -Y,R31
	IN   R30,SREG
	ST   -Y,R30
; 0000 0041  static int cnt=0;
; 0000 0042  cnt++;
	LDI  R26,LOW(_cnt_S0000000000)
	LDI  R27,HIGH(_cnt_S0000000000)
	LD   R30,X+
	LD   R31,X+
	ADIW R30,1
	ST   -X,R31
	ST   -X,R30
; 0000 0043  if(cnt==500)
	LDS  R26,_cnt_S0000000000
	LDS  R27,_cnt_S0000000000+1
	CPI  R26,LOW(0x1F4)
	LDI  R30,HIGH(0x1F4)
	CPC  R27,R30
	BRNE _0x5
; 0000 0044  {
; 0000 0045     num_cnt++;
	LDI  R30,LOW(1)
	LDI  R31,HIGH(1)
	__ADDWRR 5,6,30,31
; 0000 0046     cnt=0;
	LDI  R30,LOW(0)
	STS  _cnt_S0000000000,R30
	STS  _cnt_S0000000000+1,R30
; 0000 0047     if(num_cnt==27)
	LDI  R30,LOW(27)
	LDI  R31,HIGH(27)
	CP   R30,R5
	CPC  R31,R6
	BRNE _0x6
; 0000 0048     {
; 0000 0049         Toggle++;
	LDI  R30,LOW(1)
	LDI  R31,HIGH(1)
	__ADDWRR 3,4,30,31
; 0000 004A             if(Toggle==3)
	LDI  R30,LOW(3)
	LDI  R31,HIGH(3)
	CP   R30,R3
	CPC  R31,R4
	BRNE _0x7
; 0000 004B             Toggle=0;
	CLR  R3
	CLR  R4
; 0000 004C         num_cnt=0;
_0x7:
	CLR  R5
	CLR  R6
; 0000 004D         }
; 0000 004E     }
_0x6:
; 0000 004F 
; 0000 0050 TCNT0+=6;
_0x5:
	IN   R30,0x26
	SUBI R30,-LOW(6)
	OUT  0x26,R30
; 0000 0051 }
	LD   R30,Y+
	OUT  SREG,R30
	LD   R31,Y+
	LD   R30,Y+
	LD   R27,Y+
	LD   R26,Y+
	RETI
;
;void main(void)
; 0000 0054 {
_main:
; 0000 0055     //--ÀÔÃâ·Â Æ÷Æ® ÃÊ±âÈ­!
; 0000 0056     PORTC=0xFF;
	LDI  R30,LOW(255)
	OUT  0x8,R30
; 0000 0057     DDRC=0xFF;
	OUT  0x7,R30
; 0000 0058 
; 0000 0059     PORTD=0xFF;
	OUT  0xB,R30
; 0000 005A     DDRD=0xFF;
	OUT  0xA,R30
; 0000 005B 
; 0000 005C     TCCR0A=0x00;//Normal Mode Operation(Overflow Interrupt Enable)
	LDI  R30,LOW(0)
	OUT  0x24,R30
; 0000 005D     TCCR0B=0x03;//64Prescale Select
	LDI  R30,LOW(3)
	OUT  0x25,R30
; 0000 005E     TCNT0=0x06;// Timer/Count Register initialization
	LDI  R30,LOW(6)
	OUT  0x26,R30
; 0000 005F 
; 0000 0060     TIMSK0=0x01;// Timer(s)/Counter(s) Interrupt(s) initialization
	LDI  R30,LOW(1)
	STS  110,R30
; 0000 0061     #asm("sei")// Global enable interrupts
	sei
; 0000 0062 while(1)
_0x8:
; 0000 0063 {
; 0000 0064     int i=0;
; 0000 0065     static int j=0;
; 0000 0066     for(i=0;i<8;i++)
	SBIW R28,2
	LDI  R30,LOW(0)
	ST   Y,R30
	STD  Y+1,R30
;	i -> Y+0
	STD  Y+0,R30
	STD  Y+0+1,R30
_0xC:
	LD   R26,Y
	LDD  R27,Y+1
	SBIW R26,8
	BRLT PC+3
	JMP _0xD
; 0000 0067     {
; 0000 0068         switch(Toggle)
	__GETW1R 3,4
; 0000 0069         {
; 0000 006A             case 0:
	SBIW R30,0
	BRNE _0x11
; 0000 006B             //Ã¹Â°--Orange LED ¼ÂÆÃ ¶óÀÎ(Horizontal)
; 0000 006C             PORTD=0XFE;                 //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
	RCALL SUBOPT_0x0
; 0000 006D             PORTC=english[num_cnt][i];
	OUT  0x8,R30
; 0000 006E             PORTD=0XFF;                 //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
	LDI  R30,LOW(255)
	OUT  0xB,R30
; 0000 006F 
; 0000 0070             //µÎ¹øÂ° Red LED ¼ÂÆÃ ¶óÀÎ(Horizontal)
; 0000 0071             PORTD=0XFD;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
	LDI  R30,LOW(253)
	OUT  0xB,R30
; 0000 0072             PORTC=0XFF;
	LDI  R30,LOW(255)
	RJMP _0x15
; 0000 0073             PORTD=0XFF;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
; 0000 0074             //°øÅë TR ±¸µ¿ ¶óÀÎ
; 0000 0075             //--------------------------------------------------
; 0000 0076 
; 0000 0077             //¼¼·Î °øÅë ¶óÀÎ(Vertical)
; 0000 0078             PORTD=0XFB;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
; 0000 0079             PORTC=vertical[i];
; 0000 007A             PORTD=0XFF;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
; 0000 007B             delay_ms(1); //1ms°£°Ý ´ÙÀÌ³»¹Í µð½ºÇÃ·¹ÀÌ
; 0000 007C             break;
; 0000 007D 
; 0000 007E             case 1:
_0x11:
	CPI  R30,LOW(0x1)
	LDI  R26,HIGH(0x1)
	CPC  R31,R26
	BRNE _0x12
; 0000 007F                 //°¡·Î----------------------------------------------
; 0000 0080             //Ã¹Â° LED ¼ÂÆÃ ¶óÀÎ
; 0000 0081             PORTD=0XFE;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
	LDI  R30,LOW(254)
	OUT  0xB,R30
; 0000 0082             PORTC=0xff;
	LDI  R30,LOW(255)
	RJMP _0x16
; 0000 0083             PORTD=0XFF;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
; 0000 0084 
; 0000 0085 
; 0000 0086             //µÎ¹øÂ° LED ¼ÂÆÃ ¶óÀÎ
; 0000 0087             PORTD=0XFD;                 //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
; 0000 0088             PORTC=english[num_cnt][i];
; 0000 0089             PORTD=0XFF;                 //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
; 0000 008A 
; 0000 008B 
; 0000 008C 
; 0000 008D              //¼¼·Î °øÅë ¶óÀÎ(Vertical)
; 0000 008E             PORTD=0XFB;             //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
; 0000 008F             PORTC=vertical[i];
; 0000 0090             PORTD=0XFF;             //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
; 0000 0091             delay_ms(1);             //1ms°£°Ý ´ÙÀÌ³»¹Í µð½ºÇÃ·¹ÀÌ
; 0000 0092             //----------------------------------------------
; 0000 0093             break;
; 0000 0094 
; 0000 0095             case 2:
_0x12:
	CPI  R30,LOW(0x2)
	LDI  R26,HIGH(0x2)
	CPC  R31,R26
	BRNE _0x10
; 0000 0096                 //°¡·Î----------------------------------------------
; 0000 0097             //Ã¹Â° LED ¼ÂÆÃ ¶óÀÎ
; 0000 0098             PORTD=0XFE;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
	RCALL SUBOPT_0x0
; 0000 0099             PORTC=english[num_cnt][i];
_0x16:
	OUT  0x8,R30
; 0000 009A             PORTD=0XFF;//74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
	LDI  R30,LOW(255)
	OUT  0xB,R30
; 0000 009B 
; 0000 009C 
; 0000 009D             //µÎ¹øÂ° LED ¼ÂÆÃ ¶óÀÎ
; 0000 009E             PORTD=0XFD;                 //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
	LDI  R30,LOW(253)
	OUT  0xB,R30
; 0000 009F             PORTC=english[num_cnt][i];
	__GETW1R 5,6
	CALL __LSLW3
	SUBI R30,LOW(-_english)
	SBCI R31,HIGH(-_english)
	LD   R26,Y
	LDD  R27,Y+1
	ADD  R26,R30
	ADC  R27,R31
	LD   R30,X
_0x15:
	OUT  0x8,R30
; 0000 00A0             PORTD=0XFF;                 //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
	LDI  R30,LOW(255)
	OUT  0xB,R30
; 0000 00A1 
; 0000 00A2 
; 0000 00A3 
; 0000 00A4              //¼¼·Î °øÅë ¶óÀÎ(Vertical)
; 0000 00A5             PORTD=0XFB;             //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ LOW ¹öÆÛ ¿­°í
	LDI  R30,LOW(251)
	OUT  0xB,R30
; 0000 00A6             PORTC=vertical[i];
	LD   R30,Y
	LDD  R31,Y+1
	SUBI R30,LOW(-_vertical)
	SBCI R31,HIGH(-_vertical)
	LD   R30,Z
	OUT  0x8,R30
; 0000 00A7             PORTD=0XFF;             //74HC574 ±¸µ¿ Å¬·° ½ÅÈ£ HIGH ¹öÆÛ Àá±Ý
	LDI  R30,LOW(255)
	OUT  0xB,R30
; 0000 00A8             delay_ms(1);             //1ms°£°Ý ´ÙÀÌ³»¹Í µð½ºÇÃ·¹ÀÌ
	LDI  R30,LOW(1)
	LDI  R31,HIGH(1)
	ST   -Y,R31
	ST   -Y,R30
	CALL _delay_ms
; 0000 00A9             //----------------------------------------------
; 0000 00AA             break;
; 0000 00AB         }
_0x10:
; 0000 00AC     }
	LD   R30,Y
	LDD  R31,Y+1
	ADIW R30,1
	ST   Y,R30
	STD  Y+1,R31
	RJMP _0xC
_0xD:
; 0000 00AD 
; 0000 00AE   }
	ADIW R28,2
	RJMP _0x8
; 0000 00AF }
_0x14:
	RJMP _0x14

	.DSEG
_vertical:
	.BYTE 0x8
_english:
	.BYTE 0xE0
_cnt_S0000000000:
	.BYTE 0x2

	.CSEG
;OPTIMIZER ADDED SUBROUTINE, CALLED 2 TIMES, CODE SIZE REDUCTION:8 WORDS
SUBOPT_0x0:
	LDI  R30,LOW(254)
	OUT  0xB,R30
	__GETW1R 5,6
	CALL __LSLW3
	SUBI R30,LOW(-_english)
	SBCI R31,HIGH(-_english)
	LD   R26,Y
	LDD  R27,Y+1
	ADD  R26,R30
	ADC  R27,R31
	LD   R30,X
	RET


	.CSEG
_delay_ms:
	ld   r30,y+
	ld   r31,y+
	adiw r30,0
	breq __delay_ms1
__delay_ms0:
	__DELAY_USW 0xFA0
	wdr
	sbiw r30,1
	brne __delay_ms0
__delay_ms1:
	ret

__LSLW3:
	LSL  R30
	ROL  R31
__LSLW2:
	LSL  R30
	ROL  R31
	LSL  R30
	ROL  R31
	RET

;END OF CODE MARKER
__END_OF_CODE:
