                        .module TIMER1.C
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé°Ë~1\TIMER1.C
                        .area data(ram, con, rel)
 0000                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé°Ë~1\TIMER1.C
 0000           _temp::
 0000                   .blkb 1
                        .area idata
 0000 01                .byte 1
                        .area data(ram, con, rel)
 0001                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé°Ë~1\TIMER1.C
 0001                   .dbfile E:\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé°Ë~1\TIMER1.C
 0001                   .dbsym e temp _temp c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé°Ë~1\TIMER1.C
 0000                   .dbfunc e main _main fV
 0000           ;           temp -> <dead>
 0000           ;              i -> <dead>
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 25
 0000           ; 
 0000           ; /********************************************************
 0000           ; ÊµÑé°Ë:   ¶¨Ê±Æ÷Timer 1ÊµÑé
 0000           ; ËµÃ÷:          
 0000           ;           
 0000           ; CPUÐÍºÅ:   ATMEGA128A
 0000           ; ¾§ÕñÆµÂÊ:     8MHZ
 0000           ; ÈÕÆÚ£º    2011-3-12
 0000           ; ÁªÏµ·½·¨: MCU.2000@163.com 
 0000           ;  ********************************************************/
 0000           ; 
 0000           ; #include<iom128v.h>
 0000           ; #include<macros.h>
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; 
 0000           ; void Delayus(uint US);      //Î¢ÃëÑÓÊ±×Ó³ÌÐò
 0000           ; void Delayms(uint MS);      //ºÁÃëÑÓÊ±×Ó³ÌÐò
 0000           ; 
 0000           ; void timer1_init(void);
 0000           ; 
 0000           ; uchar temp=0x01;
 0000           ; 
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 28
 0000           ;      uchar i,temp;
 0000           ;       
 0000           ;      DDRA=0XFF;             //LED IO¿ÚÉèÎªÊä³ö
 0000 8FEF              ldi R24,255
 0002 8ABB              out 0x1a,R24
 0004                   .dbline 29
 0004           ;        DDRC=0XFF;             //ÊýÂë¹Ü¶ÎÑ¡ÉèÎªÊä³ö
 0004 84BB              out 0x14,R24
 0006                   .dbline 30
 0006           ;        DDRF |=0X03;           //LED¼°ÊýÂë¹ÜËø´æIO¿ÚÉèÎªÊä³ö
 0006 80916100          lds R24,97
 000A 8360              ori R24,3
 000C 80936100          sts 97,R24
 0010                   .dbline 31
 0010           ;        PORTF|=0X0E;           
 0010 80916200          lds R24,98
 0014 8E60              ori R24,14
 0016 80936200          sts 98,R24
 001A                   .dbline 32
 001A           ;        PORTA=0XFF;
 001A 8FEF              ldi R24,255
 001C 8BBB              out 0x1b,R24
 001E                   .dbline 33
 001E           ;        PORTC=0XFF;            
 001E 85BB              out 0x15,R24
 0020                   .dbline 34
 0020           ;        PORTF&=0xF9;           //Ëø´æÊý¾Ý¹Ø±ÕÊýÂë¹Ü 
 0020 80916200          lds R24,98
 0024 897F              andi R24,249
 0026 80936200          sts 98,R24
 002A                   .dbline 36
 002A           ;        
 002A           ;        DDRB |=0X10;           //PB4ÉèÎªÊä³ö
 002A BC9A              sbi 0x17,4
 002C                   .dbline 37
 002C           ;        PORTB|=0X10;           //¹Ø±ÕPB4Íâ½ÓµÄLED
 002C C49A              sbi 0x18,4
 002E                   .dbline 39
 002E           ;        
 002E           ;        timer1_init();
 002E 03D0              xcall _timer1_init
 0030                   .dbline 40
 0030           ;        SEI();                 //enable interrupts
 0030 7894              sei
 0032           L2:
 0032                   .dbline 41
 0032           ;      while(1);
 0032           L3:
 0032                   .dbline 41
 0032 FFCF              xjmp L2
 0034           X0:
 0034                   .dbline -2
 0034           L1:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym l temp 1 c
 0036                   .dbsym l i 1 c
 0036                   .dbend
 0036                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0036           _timer1_init::
 0036                   .dbline -1
 0036                   .dbline 46
 0036           ; 
 0036           ; }
 0036           ; 
 0036           ; void timer1_init(void)
 0036           ; {
 0036                   .dbline 47
 0036           ;     TCNT1H = 0xE3;          //ÉèÖÃ TC1 µÄ ¼ÆÊý¼Ä´æÆ÷ ¸ß8Î»Öµ£¬»ùÓÚ7.3728M¾§Õñ
 0036 83EE              ldi R24,227
 0038 8DBD              out 0x2d,R24
 003A                   .dbline 48
 003A           ;     TCNT1L = 0xE1;         //ÉèÖÃ TC1 µÄ ¼ÆÊý¼Ä´æÆ÷ µÍ8Î»Öµ£¬»ùÓÚ7.3728M¾§Õñ
 003A 81EE              ldi R24,225
 003C 8CBD              out 0x2c,R24
 003E                   .dbline 50
 003E           ; 
 003E           ;     TCCR1A = 0x00;
 003E 2224              clr R2
 0040 2FBC              out 0x2f,R2
 0042                   .dbline 51
 0042           ;     TCCR1B = 0x05;         //ÉèÖÃTC1 Îª CLK/1024·ÖÆµ£¬Æô¶¯TC1
 0042 85E0              ldi R24,5
 0044 8EBD              out 0x2e,R24
 0046                   .dbline 53
 0046           ; 
 0046           ;     TIMSK = 0x04;          //ÉèÖÃ ¶¨Ê±¼ÆÊýÆ÷ µÄ ÆÁ±Î¼Ä´æÆ÷
 0046 84E0              ldi R24,4
 0048 87BF              out 0x37,R24
 004A                   .dbline -2
 004A           L5:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbend
                        .area vector(rom, abs)
                        .org 56
 0038 0C942600          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 004C                   .dbfile E:\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé°Ë~1\TIMER1.C
 004C                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 004C           _timer1_ovf_isr::
 004C 1A92              st -y,R1
 004E 2A92              st -y,R2
 0050 8A93              st -y,R24
 0052 1FB6              IN R1,63
 0054 1A92              st -y,R1
 0056                   .dbline -1
 0056                   .dbline 65
 0056           ; }
 0056           ; /*--------------------------------------------------------------------
 0056           ; ³ÌÐòÃû³Æ£º¶¨Ê±Æ÷1ÖÐ¶Ï·þÎñ³ÌÐò
 0056           ; ³ÌÐò¹¦ÄÜ£º
 0056           ; ×¢ÒâÊÂÏî£º
 0056           ; ÌáÊ¾ËµÃ÷£º
 0056           ; Êä    Èë£º
 0056           ; ·µ    »Ø£º
 0056           ; --------------------------------------------------------------------*/
 0056           ; #pragma interrupt_handler timer1_ovf_isr:15
 0056           ; void timer1_ovf_isr(void)
 0056           ; {
 0056                   .dbline 66
 0056           ;      TCNT1H = 0xE3;  //reload counter high value
 0056 83EE              ldi R24,227
 0058 8DBD              out 0x2d,R24
 005A                   .dbline 67
 005A           ;      TCNT1L = 0xE1;  //reload counter low value
 005A 81EE              ldi R24,225
 005C 8CBD              out 0x2c,R24
 005E                   .dbline 68
 005E           ;        PORTA=temp;
 005E 20900000          lds R2,_temp
 0062 2BBA              out 0x1b,R2
 0064                   .dbline 69
 0064           ;      temp<<=1;
 0064 220C              lsl R2
 0066 20920000          sts _temp,R2
 006A                   .dbline 70
 006A           ;        if(temp==0x00)
 006A 2220              tst R2
 006C 19F4              brne L7
 006E           X1:
 006E                   .dbline 71
 006E           ;        temp=0x01;
 006E 81E0              ldi R24,1
 0070 80930000          sts _temp,R24
 0074           L7:
 0074                   .dbline -2
 0074           L6:
 0074                   .dbline 0 ; func end
 0074 1990              ld R1,y+
 0076 1FBE              OUT 63,R1
 0078 8991              ld R24,y+
 007A 2990              ld R2,y+
 007C 1990              ld R1,y+
 007E 1895              reti
 0080                   .dbend
 0080                   .dbfunc e Delayus _Delayus fV
 0080           ;              i -> R20,R21
 0080           ;             US -> R10,R11
                        .even
 0080           _Delayus::
 0080 0E940000          xcall push_xgset300C
 0084 5801              movw R10,R16
 0086                   .dbline -1
 0086                   .dbline 81
 0086           ; }
 0086           ; 
 0086           ; /****************************************************
 0086           ; º¯ÊýÃû³Æ: Delayus
 0086           ; ¹¦    ÄÜ: ÑÓÊ±Ö¸¶¨Î¢Ãë£¨8M¾§Õñ£©
 0086           ; ²Î    Êý: US--ÑÓÊ±µÄÎ¢ÃëÊý(´óÔ¼£¬²»ÊÇºÜ¾«È·£¬MSÔ½´óÔ½×¼È·)
 0086           ; ·µ»ØÖµ  : ÎÞ
 0086           ; /****************************************************/
 0086           ; void Delayus(uint US)           
 0086           ; {
 0086                   .dbline 83
 0086           ;      uint i;
 0086           ;      US=US*5/4;                        
 0086 05E0              ldi R16,5
 0088 10E0              ldi R17,0
 008A 9501              movw R18,R10
 008C 0E940000          xcall empy16s
 0090 5801              movw R10,R16
 0092 B694              lsr R11
 0094 A794              ror R10
 0096 B694              lsr R11
 0098 A794              ror R10
 009A                   .dbline 84
 009A           ;      for( i=0;i<US;i++); 
 009A 4427              clr R20
 009C 5527              clr R21
 009E 02C0              xjmp L13
 00A0           L10:
 00A0                   .dbline 84
 00A0           L11:
 00A0                   .dbline 84
 00A0 4F5F              subi R20,255  ; offset = 1
 00A2 5F4F              sbci R21,255
 00A4           L13:
 00A4                   .dbline 84
 00A4 4A15              cp R20,R10
 00A6 5B05              cpc R21,R11
 00A8 D8F3              brlo L10
 00AA           X2:
 00AA                   .dbline -2
 00AA           L9:
 00AA                   .dbline 0 ; func end
 00AA 0C940000          xjmp pop_xgset300C
 00AE                   .dbsym r i 20 i
 00AE                   .dbsym r US 10 i
 00AE                   .dbend
 00AE                   .dbfunc e Delayms _Delayms fV
 00AE           ;              i -> R20,R21
 00AE           ;              j -> R22,R23
 00AE           ;             MS -> R16,R17
                        .even
 00AE           _Delayms::
 00AE 0E940000          xcall push_xgsetF000
 00B2                   .dbline -1
 00B2                   .dbline 94
 00B2           ; }
 00B2           ; /****************************************************
 00B2           ; º¯ÊýÃû³Æ: Delayms
 00B2           ; ¹¦    ÄÜ: ÑÓÊ±Ö¸¶¨ºÁÃë£¨8M¾§Õñ£©
 00B2           ; ²Î    Êý: MS--ÑÓÊ±µÄºÁÃëÊý
 00B2           ; ·µ»ØÖµ  : ÎÞ
 00B2           ; Í¨¹ýÈí¼þ·ÂÕæ·´¸´ÊµÑéµÃµ½µÄÊýÖµ
 00B2           ; /****************************************************/
 00B2           ; void Delayms(uint MS)           
 00B2           ; {
 00B2                   .dbline 96
 00B2           ;      uint i,j;
 00B2           ;      for( i=0;i<MS;i++)
 00B2 4427              clr R20
 00B4 5527              clr R21
 00B6 0BC0              xjmp L18
 00B8           L15:
 00B8                   .dbline 97
 00B8           ;      for(j=0;j<1141;j++);     
 00B8 6627              clr R22
 00BA 7727              clr R23
 00BC 02C0              xjmp L22
 00BE           L19:
 00BE                   .dbline 97
 00BE           L20:
 00BE                   .dbline 97
 00BE 6F5F              subi R22,255  ; offset = 1
 00C0 7F4F              sbci R23,255
 00C2           L22:
 00C2                   .dbline 97
 00C2 6537              cpi R22,117
 00C4 E4E0              ldi R30,4
 00C6 7E07              cpc R23,R30
 00C8 D0F3              brlo L19
 00CA           X3:
 00CA           L16:
 00CA                   .dbline 96
 00CA 4F5F              subi R20,255  ; offset = 1
 00CC 5F4F              sbci R21,255
 00CE           L18:
 00CE                   .dbline 96
 00CE 4017              cp R20,R16
 00D0 5107              cpc R21,R17
 00D2 90F3              brlo L15
 00D4           X4:
 00D4                   .dbline -2
 00D4           L14:
 00D4                   .dbline 0 ; func end
 00D4 0C940000          xjmp pop_xgsetF000
 00D8                   .dbsym r i 20 i
 00D8                   .dbsym r j 22 i
 00D8                   .dbsym r MS 16 i
 00D8                   .dbend
 00D8           ; }
