⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0898 50E0              ldi R21,0
 089A 60E0              ldi R22,0
 089C 70E0              ldi R23,0
 089E 50932600          sts _T1+7+1,R21
 08A2 40932500          sts _T1+7,R20
 08A6 70932800          sts _T1+7+2+1,R23
 08AA 60932700          sts _T1+7+2,R22
 08AE           ;          TCNT1H = 0xff - ((t_count>>8) & 0xff); //setup
 08AE C101              movw R24,R2
 08B0 892F              mov R24,R25
 08B2 9927              clr R25
 08B4 9070              andi R25,0
 08B6 EFEF              ldi R30,255
 08B8 F0E0              ldi R31,0
 08BA E81B              sub R30,R24
 08BC F90B              sbc R31,R25
 08BE EDBD              out 0x2d,R30
 08C0           ;          TCNT1L = 0xff - (t_count & 0xff);
 08C0 C101              movw R24,R2
 08C2 9070              andi R25,0
 08C4 EFEF              ldi R30,255
 08C6 F0E0              ldi R31,0
 08C8 E81B              sub R30,R24
 08CA F90B              sbc R31,R25
 08CC ECBD              out 0x2c,R30
 08CE           ;       }
 08CE           L106:
 08CE           ;       TCCR1B = 0x05; //1024分频 
 08CE 85E0              ldi R24,5
 08D0 8EBD              out 0x2e,R24
 08D2           ;       TIMSK |= 0x04;
 08D2 87B7              in R24,0x37
 08D4 8460              ori R24,4
 08D6 87BF              out 0x37,R24
 08D8           L96:
 08D8 0E940000          xcall pop_gset3
 08DC 0E940000          xcall pop_lset
 08E0                   .dbline 0 ; func end
 08E0 1895              reti
                        .area vector(rom, abs)
                        .org 40
 0028 0C947104          jmp _timer2_ovf_isr
                        .area text(rom, con, rel)
                ;        t_count -> R10
                        .even
 08E2           _timer2_ovf_isr::
 08E2 0E940000          xcall push_lset
 08E6 0E940000          xcall push_gset3
 08EA           ;       
 08EA           ;  
 08EA           ;  }
 08EA           ;  
 08EA           ; 
 08EA           ; #pragma interrupt_handler timer2_ovf_isr:11
 08EA           ; void timer2_ovf_isr(void)
 08EA           ; {
 08EA           ;   unsigned char t_count; 
 08EA           ;  // printf("T2\n");
 08EA           ;    if (T2.tickleft == 0)
 08EA 40E0              ldi R20,0
 08EC 50E0              ldi R21,0
 08EE 60E0              ldi R22,0
 08F0 70E0              ldi R23,0
 08F2 40901800          lds R4,_T2+7+2
 08F6 50901900          lds R5,_T2+7+2+1
 08FA 20901600          lds R2,_T2+7
 08FE 30901700          lds R3,_T2+7+1
 0902 2416              cp R2,R20
 0904 3506              cpc R3,R21
 0906 4606              cpc R4,R22
 0908 5706              cpc R5,R23
 090A E9F4              brne L112
 090C           ;    {
 090C           ;        post(T2_timeout);
 090C 00E0              ldi R16,<PL_T2_timeout
 090E 10E0              ldi R17,>PL_T2_timeout
 0910 0E940000          xcall _post
 0914           ;        if (T2.type==1)
 0914 80911100          lds R24,_T2+2
 0918 8130              cpi R24,1
 091A 89F4              brne L115
 091C           ;         T2.tickleft = T2.ticks;
 091C 40901400          lds R4,_T2+3+2
 0920 50901500          lds R5,_T2+3+2+1
 0924 20901200          lds R2,_T2+3
 0928 30901300          lds R3,_T2+3+1
 092C 30921700          sts _T2+7+1,R3
 0930 20921600          sts _T2+7,R2
 0934 50921900          sts _T2+7+2+1,R5
 0938 40921800          sts _T2+7+2,R4
 093C 04C0              xjmp L116
 093E           L115:
 093E           ;      else
 093E           ; 	 {
 093E           ; 	   TIMSK &= ~0x40;
 093E 87B7              in R24,0x37
 0940 8F7B              andi R24,191
 0942 87BF              out 0x37,R24
 0944           ;        return ;
 0944 66C0              xjmp L111
 0946           L116:
 0946           ; 	 }
 0946           ;    }
 0946           L112:
 0946           ;    
 0946           ;       if (T2.tickleft > 35)
 0946 43E2              ldi R20,35
 0948 50E0              ldi R21,0
 094A 60E0              ldi R22,0
 094C 70E0              ldi R23,0
 094E 40901800          lds R4,_T2+7+2
 0952 50901900          lds R5,_T2+7+2+1
 0956 20901600          lds R2,_T2+7
 095A 30901700          lds R3,_T2+7+1
 095E 4215              cp R20,R2
 0960 5305              cpc R21,R3
 0962 6405              cpc R22,R4
 0964 7505              cpc R23,R5
 0966 98F4              brsh L120
 0968           ;       {
 0968           ;          T2.tickleft -= 35;
 0968 43E2              ldi R20,35
 096A 50E0              ldi R21,0
 096C 60E0              ldi R22,0
 096E 70E0              ldi R23,0
 0970 241A              sub R2,R20
 0972 350A              sbc R3,R21
 0974 460A              sbc R4,R22
 0976 570A              sbc R5,R23
 0978 30921700          sts _T2+7+1,R3
 097C 20921600          sts _T2+7,R2
 0980 50921900          sts _T2+7+2+1,R5
 0984 40921800          sts _T2+7+2,R4
 0988           ;                TCNT2 = 0x0; //setup
 0988 2224              clr R2
 098A 24BC              out 0x24,R2
 098C           ;       }
 098C 3DC0              xjmp L121
 098E           L120:
 098E           ;       else
 098E           ;       {
 098E           ;          t_count = T2.tickleft*256/1000 -1; 
 098E 40901800          lds R4,_T2+7+2
 0992 50901900          lds R5,_T2+7+2+1
 0996 20901600          lds R2,_T2+7
 099A 30901700          lds R3,_T2+7+1
 099E 40E0              ldi R20,0
 09A0 51E0              ldi R21,1
 09A2 60E0              ldi R22,0
 09A4 70E0              ldi R23,0
 09A6 5A92              st -y,R5
 09A8 4A92              st -y,R4
 09AA 3A92              st -y,R3
 09AC 2A92              st -y,R2
 09AE 8A01              movw R16,R20
 09B0 9B01              movw R18,R22
 09B2 0E940000          xcall empy32u
 09B6 48EE              ldi R20,232
 09B8 53E0              ldi R21,3
 09BA 60E0              ldi R22,0
 09BC 70E0              ldi R23,0
 09BE 7A93              st -y,R23
 09C0 6A93              st -y,R22
 09C2 5A93              st -y,R21
 09C4 4A93              st -y,R20
 09C6 0E940000          xcall div32u
 09CA 1801              movw R2,R16
 09CC 2901              movw R4,R18
 09CE 41E0              ldi R20,1
 09D0 50E0              ldi R21,0
 09D2 60E0              ldi R22,0
 09D4 70E0              ldi R23,0
 09D6 241A              sub R2,R20
 09D8 350A              sbc R3,R21
 09DA 460A              sbc R4,R22
 09DC 570A              sbc R5,R23
 09DE A22C              mov R10,R2
 09E0           ;                T2.tickleft =0;
 09E0 40E0              ldi R20,0
 09E2 50E0              ldi R21,0
 09E4 60E0              ldi R22,0
 09E6 70E0              ldi R23,0
 09E8 50931700          sts _T2+7+1,R21
 09EC 40931600          sts _T2+7,R20
 09F0 70931900          sts _T2+7+2+1,R23
 09F4 60931800          sts _T2+7+2,R22
 09F8           ;          TCNT2 = 0xff - (t_count & 0xff); //setup
 09F8 822D              mov R24,R2
 09FA 9927              clr R25
 09FC 9070              andi R25,0
 09FE EFEF              ldi R30,255
 0A00 F0E0              ldi R31,0
 0A02 E81B              sub R30,R24
 0A04 F90B              sbc R31,R25
 0A06 E4BD              out 0x24,R30
 0A08           ;         
 0A08           ;       }
 0A08           L121:
 0A08           ;       TCCR2 = 0x05; //1024分频 
 0A08 85E0              ldi R24,5
 0A0A 85BD              out 0x25,R24
 0A0C           ;       TIMSK |= 0x40;
 0A0C 87B7              in R24,0x37
 0A0E 8064              ori R24,64
 0A10 87BF              out 0x37,R24
 0A12           L111:
 0A12 0E940000          xcall pop_gset3
 0A16 0E940000          xcall pop_lset
 0A1A                   .dbline 0 ; func end
 0A1A 1895              reti
                        .area vector(rom, abs)
                        .org 116
 0074 0C940E05          jmp _timer3_ovf_isr
                        .area text(rom, con, rel)
                ;        t_count -> R10,R11
                        .even
 0A1C           _timer3_ovf_isr::
 0A1C 0E940000          xcall push_lset
 0A20 0E940000          xcall push_gset3
 0A24           ;       
 0A24           ; }
 0A24           ; 
 0A24           ;  
 0A24           ;  
 0A24           ; #pragma interrupt_handler timer3_ovf_isr:30
 0A24           ; void timer3_ovf_isr(void)
 0A24           ; {
 0A24           ;  //TIMER3 has overflowed
 0A24           ;   unsigned int t_count; 
 0A24           ;   
 0A24           ;    if (T3.tickleft == 0)
 0A24 40E0              ldi R20,0
 0A26 50E0              ldi R21,0
 0A28 60E0              ldi R22,0
 0A2A 70E0              ldi R23,0
 0A2C 40900900          lds R4,_T3+7+2
 0A30 50900A00          lds R5,_T3+7+2+1
 0A34 20900700          lds R2,_T3+7
 0A38 30900800          lds R3,_T3+7+1
 0A3C 2416              cp R2,R20
 0A3E 3506              cpc R3,R21
 0A40 4606              cpc R4,R22
 0A42 5706              cpc R5,R23
 0A44 19F5              brne L127
 0A46           ;    { led0Toggle();
 0A46 0E940000          xcall _led0Toggle
 0A4A           ;       if( post(T3_timeout))
 0A4A 00E0              ldi R16,<PL_T3_timeout
 0A4C 10E0              ldi R17,>PL_T3_timeout
 0A4E 0E940000          xcall _post
 0A52 0023              tst R16
 0A54 D9F0              breq L130
 0A56           ;       //  printf("post success\n");
 0A56           ;        
 0A56           ;        if (T3.type==1)
 0A56 80910200          lds R24,_T3+2
 0A5A 8130              cpi R24,1
 0A5C 89F4              brne L132
 0A5E           ;         T3.tickleft = T3.ticks;
 0A5E 40900500          lds R4,_T3+3+2
 0A62 50900600          lds R5,_T3+3+2+1
 0A66 20900300          lds R2,_T3+3
 0A6A 30900400          lds R3,_T3+3+1
 0A6E 30920800          sts _T3+7+1,R3
 0A72 20920700          sts _T3+7,R2
 0A76 50920A00          sts _T3+7+2+1,R5
 0A7A 40920900          sts _T3+7+2,R4
 0A7E 06C0              xjmp L133
 0A80           L132:
 0A80           ; 	 else
 0A80           ; 	 {
 0A80           ; 	    ETIMSK &= ~0x04;
 0A80 80917D00          lds R24,125
 0A84 8B7F              andi R24,251
 0A86 80937D00          sts 125,R24
 0A8A           ;           return ;
 0A8A 76C0              xjmp L126
 0A8C           L133:
 0A8C           L130:
 0A8C           ; 	 }
 0A8C           ;    }
 0A8C           L127:
 0A8C           ;       if (T3.tickleft > 9000)
 0A8C 48E2              ldi R20,40
 0A8E 53E2              ldi R21,35
 0A90 60E0              ldi R22,0
 0A92 70E0              ldi R23,0
 0A94 40900900          lds R4,_T3+7+2
 0A98 50900A00          lds R5,_T3+7+2+1
 0A9C 20900700          lds R2,_T3+7
 0AA0 30900800          lds R3,_T3+7+1
 0AA4 4215              cp R20,R2
 0AA6 5305              cpc R21,R3
 0AA8 6405              cpc R22,R4
 0AAA 7505              cpc R23,R5
 0AAC B0F4              brsh L137
 0AAE           ;       {
 0AAE           ;          T3.tickleft -= 9000;
 0AAE 48E2              ldi R20,40
 0AB0 53E2              ldi R21,35
 0AB2 60E0              ldi R22,0
 0AB4 70E0              ldi R23,0
 0AB6 241A              sub R2,R20
 0AB8 350A              sbc R3,R21
 0ABA 460A              sbc R4,R22
 0ABC 570A              sbc R5,R23
 0ABE 30920800          sts _T3+7+1,R3
 0AC2 20920700          sts _T3+7,R2
 0AC6 50920A00          sts _T3+7+2+1,R5
 0ACA 40920900          sts _T3+7+2,R4
 0ACE           ;                TCNT3H = 0x0; //setup
 0ACE 2224              clr R2
 0AD0 20928900          sts 137,R2
 0AD4           ;          TCNT3L = 0x0;
 0AD4 20928800          sts 136,R2
 0AD8           ;       }
 0AD8 47C0              xjmp L138
 0ADA           L137:
 0ADA           ;       else
 0ADA           ;       {
 0ADA           ;          t_count = T3.tickleft*72/10 -1; 
 0ADA 40900900          lds R4,_T3+7+2
 0ADE 50900A00          lds R5,_T3+7+2+1
 0AE2 20900700          lds R2,_T3+7
 0AE6 30900800          lds R3,_T3+7+1
 0AEA 48E4              ldi R20,72
 0AEC 50E0              ldi R21,0
 0AEE 60E0              ldi R22,0
 0AF0 70E0              ldi R23,0
 0AF2 5A92              st -y,R5
 0AF4 4A92              st -y,R4
 0AF6 3A92              st -y,R3
 0AF8 2A92              st -y,R2
 0AFA 8A01              movw R16,R20
 0AFC 9B01              movw R18,R22
 0AFE 0E940000          xcall empy32u
 0B02 4AE0              ldi R20,10
 0B04 50E0              ldi R21,0
 0B06 60E0              ldi R22,0
 0B08 70E0              ldi R23,0
 0B0A 7A93              st -y,R23
 0B0C 6A93              st -y,R22
 0B0E 5A93              st -y,R21
 0B10 4A93              st -y,R20
 0B12 0E940000          xcall div32u
 0B16 1801              movw R2,R16
 0B18 2901              movw R4,R18
 0B1A 41E0              ldi R20,1
 0B1C 50E0              ldi R21,0
 0B1E 60E0              ldi R22,0
 0B20 70E0              ldi R23,0
 0B22 241A              sub R2,R20
 0B24 350A              sbc R3,R21
 0B26 460A              sbc R4,R22
 0B28 570A              sbc R5,R23
 0B2A 5101              movw R10,R2
 0B2C           ;                T3.tickleft =0;
 0B2C 40E0              ldi R20,0
 0B2E 50E0              ldi R21,0
 0B30 60E0              ldi R22,0
 0B32 70E0              ldi R23,0
 0B34 50930800          sts _T3+7+1,R21
 0B38 40930700          sts _T3+7,R20
 0B3C 70930A00          sts _T3+7+2+1,R23
 0B40 60930900          sts _T3+7+2,R22
 0B44           ;          TCNT3H = 0xff - ((t_count>>8) & 0xff); //setup
 0B44 C101              movw R24,R2
 0B46 892F              mov R24,R25
 0B48 9927              clr R25
 0B4A 9070              andi R25,0
 0B4C EFEF              ldi R30,255
 0B4E F0E0              ldi R31,0
 0B50 E81B              sub R30,R24
 0B52 F90B              sbc R31,R25
 0B54 E0938900          sts 137,R30
 0B58           ;          TCNT3L = 0xff - (t_count & 0xff);
 0B58 C101              movw R24,R2
 0B5A 9070              andi R25,0
 0B5C EFEF              ldi R30,255
 0B5E F0E0              ldi R31,0
 0B60 E81B              sub R30,R24
 0B62 F90B              sbc R31,R25
 0B64 E0938800          sts 136,R30
 0B68           ;       }
 0B68           L138:
 0B68           ;       TCCR3B = 0x05; //1024分频 
 0B68 85E0              ldi R24,5
 0B6A 80938A00          sts 138,R24
 0B6E           ;       ETIMSK |= 0x04;
 0B6E 80917D00          lds R24,125
 0B72 8460              ori R24,4
 0B74 80937D00          sts 125,R24
 0B78           L126:
 0B78 0E940000          xcall pop_gset3
 0B7C 0E940000          xcall pop_lset
 0B80                   .dbline 0 ; func end
 0B80 1895              reti
                        .area bss(ram, con, rel)
 0000           _T3::
 0000                   .blkb 15
 000F           _T2::
 000F                   .blkb 15
 001E           _T1::
 001E                   .blkb 15
 002D           _T0::
 002D                   .blkb 15
                        .area func_lit
 0000 0000      PL_T3_timeout:  .word `_T3_timeout
 0002 0000      PL_T2_timeout:  .word `_T2_timeout
 0004 0000      PL_T1_timeout:  .word `_T1_timeout
 0006 0000      PL_T0_timeout:  .word `_T0_timeout

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -