;/*======================================================================================
;Project : Å¸ÀÌ¸Ó/Ä«¿îÅÍ ÀÎÅÍ·´Æ®¸¦ ÀÌ¿ëÇÑ FND(7-SEGMENT LED)Á¦¾îÇÏ±â
;Version : AVR2560D-V01
;Date    : 2011-07-28
;Author  : Kyung Nam Lee
;Company : LKEMBEDDED
;Compiler: CodevisionAVR + AVRStudio
;Comment: FND(7-SEGMENT LED) 100mS °£°ÝÀ¸·Î 0~9999 Áõ°¡ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
;======================================================================================*/
;#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
;#include <delay.h>
;
;#define fnd1 0
;#define fnd2 1
;#define fnd3 2
;#define fnd4 3
;
;#define fnd1_on (0<<fnd1)
;#define fnd2_on (0<<fnd2)
;#define fnd3_on (0<<fnd3)
;#define fnd4_on (0<<fnd4)
;
;#define fnd1_off (1<<fnd1)
;#define fnd2_off (1<<fnd2)
;#define fnd3_off (1<<fnd3)
;#define fnd4_off (1<<fnd4)
;
;char Number[11]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X27,0X7F,0X6F};  //0~9 ¹è¿­¼±¾ð  FND2

	.DSEG
;unsigned int cnt=0;
;// Timer 0 overflow interrupt service routine
;interrupt [TIM0_OVF] void timer0_ovf_isr(void)  //1ms Tick Time
; 0000 0020 {

	.CSEG
;PCODE: $0000000D VOL: 0
;PCODE: $0000000E VOL: 0
; 0000 0021  static int i=0;
; 0000 0022  i++;
;PCODE: $0000000F VOL: 0
;PCODE: $00000010 VOL: 0
;PCODE: $00000011 VOL: 0
;PCODE: $00000012 VOL: 0
; 0000 0023  if(i==100)
;PCODE: $00000013 VOL: 0
;PCODE: $00000014 VOL: 0
;PCODE: $00000015 VOL: 0
; 0000 0024  {
; 0000 0025     cnt++;
;PCODE: $00000016 VOL: 0
;PCODE: $00000017 VOL: 0
;PCODE: $00000018 VOL: 0
; 0000 0026     i=0;
;PCODE: $00000019 VOL: 0
;PCODE: $0000001A VOL: 0
; 0000 0027     if(cnt==9999)
;PCODE: $0000001B VOL: 0
;PCODE: $0000001C VOL: 0
;PCODE: $0000001D VOL: 0
; 0000 0028     {
; 0000 0029         cnt=0;
;PCODE: $0000001E VOL: 0
; 0000 002A         }
; 0000 002B     }
;PCODE: $0000001F VOL: 0
; 0000 002C  TCNT0+=0X06;
;PCODE: $00000020 VOL: 0
;PCODE: $00000021 VOL: 0
;PCODE: $00000022 VOL: 0
;PCODE: $00000023 VOL: 0
; 0000 002D }
;PCODE: $00000024 VOL: 0
;PCODE: $00000025 VOL: 0
;PCODE: $00000026 VOL: 0
;
;void FndDisplay(unsigned int data)
; 0000 0030 {
;PCODE: $00000027 VOL: 0
;PCODE: $00000028 VOL: 0
; 0000 0031 
; 0000 0032     int i,j,k,l=0;
; 0000 0033     l=(data/1000);
;PCODE: $00000029 VOL: 0
;PCODE: $0000002A VOL: 0
;PCODE: $0000002B VOL: 0
;PCODE: $0000002C VOL: 0
;PCODE: $0000002D VOL: 0
;PCODE: $0000002E VOL: 0
;	data -> Y+8
;	i -> R16,R17
;	j -> R18,R19
;	k -> R20,R21
;	l -> Y+6
;PCODE: $0000002F VOL: 0
;PCODE: $00000030 VOL: 0
;PCODE: $00000031 VOL: 0
;PCODE: $00000032 VOL: 0
; 0000 0034     k=(data%1000)/100;
;PCODE: $00000033 VOL: 0
;PCODE: $00000034 VOL: 0
;PCODE: $00000035 VOL: 0
;PCODE: $00000036 VOL: 0
;PCODE: $00000037 VOL: 0
;PCODE: $00000038 VOL: 0
;PCODE: $00000039 VOL: 0
; 0000 0035     i=(data%100)/10;
;PCODE: $0000003A VOL: 0
;PCODE: $0000003B VOL: 0
;PCODE: $0000003C VOL: 0
;PCODE: $0000003D VOL: 0
;PCODE: $0000003E VOL: 0
;PCODE: $0000003F VOL: 0
;PCODE: $00000040 VOL: 0
; 0000 0036     j=(data%10);
;PCODE: $00000041 VOL: 0
;PCODE: $00000042 VOL: 0
;PCODE: $00000043 VOL: 0
;PCODE: $00000044 VOL: 0
; 0000 0037     PORTK=(fnd1_on|fnd2_off|fnd3_off|fnd4_off);
;PCODE: $00000045 VOL: 0
;PCODE: $00000046 VOL: 0
; 0000 0038     PORTA=Number[l];
;PCODE: $00000047 VOL: 0
;PCODE: $00000048 VOL: 0
;PCODE: $00000049 VOL: 0
;PCODE: $0000004A VOL: 0
; 0000 0039     delay_ms(5);
;PCODE: $0000004B VOL: 0
;PCODE: $0000004C VOL: 0
;PCODE: $0000004D VOL: 0
; 0000 003A 
; 0000 003B     PORTK=(fnd1_off|fnd2_on|fnd3_off|fnd4_off);
;PCODE: $0000004E VOL: 0
;PCODE: $0000004F VOL: 0
; 0000 003C     PORTA=Number[k];
;PCODE: $00000050 VOL: 0
;PCODE: $00000051 VOL: 0
;PCODE: $00000052 VOL: 0
;PCODE: $00000053 VOL: 0
; 0000 003D     delay_ms(5);
;PCODE: $00000054 VOL: 0
;PCODE: $00000055 VOL: 0
;PCODE: $00000056 VOL: 0
; 0000 003E 
; 0000 003F     PORTK=(fnd1_off|fnd2_off|fnd3_on|fnd4_off);
;PCODE: $00000057 VOL: 0
;PCODE: $00000058 VOL: 0
; 0000 0040     PORTA=Number[i];
;PCODE: $00000059 VOL: 0
;PCODE: $0000005A VOL: 0
;PCODE: $0000005B VOL: 0
;PCODE: $0000005C VOL: 0
; 0000 0041     delay_ms(5);
;PCODE: $0000005D VOL: 0
;PCODE: $0000005E VOL: 0
;PCODE: $0000005F VOL: 0
; 0000 0042 
; 0000 0043     PORTK=(fnd1_off|fnd2_off|fnd3_off|fnd4_on);
;PCODE: $00000060 VOL: 0
;PCODE: $00000061 VOL: 0
; 0000 0044     PORTA=Number[j];
;PCODE: $00000062 VOL: 0
;PCODE: $00000063 VOL: 0
;PCODE: $00000064 VOL: 0
;PCODE: $00000065 VOL: 0
; 0000 0045     delay_ms(5);
;PCODE: $00000066 VOL: 0
;PCODE: $00000067 VOL: 0
;PCODE: $00000068 VOL: 0
; 0000 0046 
; 0000 0047 }
;PCODE: $00000069 VOL: 0
;PCODE: $0000006A VOL: 0
;PCODE: $0000006B VOL: 0
;PCODE: $0000006C VOL: 0
;void main(void)
; 0000 0049 {
;PCODE: $0000006D VOL: 0
; 0000 004A 
; 0000 004B DDRA=0XFF; //PORTA Ãâ·ÂÀ¸·Î ¼³Á¤
;PCODE: $0000006E VOL: 0
;PCODE: $0000006F VOL: 0
; 0000 004C DDRK=0XFF; //PORTB Ãâ·ÂÀ¸·Î ¼³Á¤
;PCODE: $00000070 VOL: 0
;PCODE: $00000071 VOL: 0
; 0000 004D 
; 0000 004E TCCR0A=0x00;//Normal Mode Operation(Overflow Interrupt Enable)
;PCODE: $00000072 VOL: 0
;PCODE: $00000073 VOL: 0
; 0000 004F TCCR0B=0x03;//64Prescale Select
;PCODE: $00000074 VOL: 0
;PCODE: $00000075 VOL: 0
; 0000 0050 TCNT0=0x06;// Timer/Count Register initialization
;PCODE: $00000076 VOL: 0
;PCODE: $00000077 VOL: 0
; 0000 0051 
; 0000 0052 TIMSK0=0x01;// Timer(s)/Counter(s) Interrupt(s) initialization
;PCODE: $00000078 VOL: 0
;PCODE: $00000079 VOL: 0
; 0000 0053 #asm("sei")// Global enable interrupts
;PCODE: $0000007A VOL: 0
	sei
;PCODE: $0000007B VOL: 0
; 0000 0054 
; 0000 0055 while (1)
;PCODE: $0000007C VOL: 0
; 0000 0056       {
; 0000 0057       FndDisplay(cnt); //Å¸ÀÌ¸Ó Ä«¿îÅÍ ÀÎÅÍ·´Æ®¸¦ ÀÌ¿ëÇÏ¿© 100ms¸¶´Ù FND ¼ýÀÚ°ªÀº Áõ°¡ÇÑ´Ù.
;PCODE: $0000007D VOL: 0
;PCODE: $0000007E VOL: 0
; 0000 0058       }
;PCODE: $0000007F VOL: 0
;PCODE: $00000080 VOL: 0
; 0000 0059 }
;PCODE: $00000081 VOL: 0
;PCODE: $00000082 VOL: 0
;PCODE: $00000083 VOL: 0
