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

📄 timer.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 09DC           ; 	 {
 09DC           ; 	   TCCR2 = 0x0;
 09DC 2224              clr R2
 09DE 25BC              out 0x25,R2
 09E0           ;          TIMSK &= ~0x40;
 09E0 87B7              in R24,0x37
 09E2 8F7B              andi R24,191
 09E4 87BF              out 0x37,R24
 09E6           ;          T2.on =0;
 09E6 20921000          sts _T2+1,R2
 09EA           ;        return ;
 09EA 73C0              xjmp L124
 09EC           L129:
 09EC           ; 	 }
 09EC           ;    }
 09EC           L125:
 09EC           ;    
 09EC           ;       if (T2.tickleft > 35)
 09EC 43E2              ldi R20,35
 09EE 50E0              ldi R21,0
 09F0 60E0              ldi R22,0
 09F2 70E0              ldi R23,0
 09F4 40901800          lds R4,_T2+7+2
 09F8 50901900          lds R5,_T2+7+2+1
 09FC 20901600          lds R2,_T2+7
 0A00 30901700          lds R3,_T2+7+1
 0A04 4215              cp R20,R2
 0A06 5305              cpc R21,R3
 0A08 6405              cpc R22,R4
 0A0A 7505              cpc R23,R5
 0A0C 00F5              brsh L135
 0A0E           ;       {
 0A0E           ;          T2.tickleft -= 35;
 0A0E 43E2              ldi R20,35
 0A10 50E0              ldi R21,0
 0A12 60E0              ldi R22,0
 0A14 70E0              ldi R23,0
 0A16 241A              sub R2,R20
 0A18 350A              sbc R3,R21
 0A1A 460A              sbc R4,R22
 0A1C 570A              sbc R5,R23
 0A1E 30921700          sts _T2+7+1,R3
 0A22 20921600          sts _T2+7,R2
 0A26 50921900          sts _T2+7+2+1,R5
 0A2A 40921800          sts _T2+7+2,R4
 0A2E           ;                TCNT2 = 0x0; //setup
 0A2E 2224              clr R2
 0A30 24BC              out 0x24,R2
 0A32           ;                t_count = t_count*256/1000-1;
 0A32 2A2D              mov R18,R10
 0A34 3327              clr R19
 0A36 00E0              ldi R16,256
 0A38 11E0              ldi R17,1
 0A3A 0E940000          xcall empy16s
 0A3E 28EE              ldi R18,1000
 0A40 33E0              ldi R19,3
 0A42 0E940000          xcall div16s
 0A46 C801              movw R24,R16
 0A48 0197              sbiw R24,1
 0A4A A82E              mov R10,R24
 0A4C           ;       }
 0A4C 3DC0              xjmp L136
 0A4E           L135:
 0A4E           ;       else
 0A4E           ;       {
 0A4E           ;          t_count = T2.tickleft*256/1000 -1; 
 0A4E 40901800          lds R4,_T2+7+2
 0A52 50901900          lds R5,_T2+7+2+1
 0A56 20901600          lds R2,_T2+7
 0A5A 30901700          lds R3,_T2+7+1
 0A5E 40E0              ldi R20,0
 0A60 51E0              ldi R21,1
 0A62 60E0              ldi R22,0
 0A64 70E0              ldi R23,0
 0A66 5A92              st -y,R5
 0A68 4A92              st -y,R4
 0A6A 3A92              st -y,R3
 0A6C 2A92              st -y,R2
 0A6E 8A01              movw R16,R20
 0A70 9B01              movw R18,R22
 0A72 0E940000          xcall empy32u
 0A76 48EE              ldi R20,232
 0A78 53E0              ldi R21,3
 0A7A 60E0              ldi R22,0
 0A7C 70E0              ldi R23,0
 0A7E 7A93              st -y,R23
 0A80 6A93              st -y,R22
 0A82 5A93              st -y,R21
 0A84 4A93              st -y,R20
 0A86 0E940000          xcall div32u
 0A8A 1801              movw R2,R16
 0A8C 2901              movw R4,R18
 0A8E 41E0              ldi R20,1
 0A90 50E0              ldi R21,0
 0A92 60E0              ldi R22,0
 0A94 70E0              ldi R23,0
 0A96 241A              sub R2,R20
 0A98 350A              sbc R3,R21
 0A9A 460A              sbc R4,R22
 0A9C 570A              sbc R5,R23
 0A9E A22C              mov R10,R2
 0AA0           ;                T2.tickleft =0;
 0AA0 40E0              ldi R20,0
 0AA2 50E0              ldi R21,0
 0AA4 60E0              ldi R22,0
 0AA6 70E0              ldi R23,0
 0AA8 50931700          sts _T2+7+1,R21
 0AAC 40931600          sts _T2+7,R20
 0AB0 70931900          sts _T2+7+2+1,R23
 0AB4 60931800          sts _T2+7+2,R22
 0AB8           ;          TCNT2 = 0xff - (t_count & 0xff); //setup
 0AB8 822D              mov R24,R2
 0ABA 9927              clr R25
 0ABC 9070              andi R25,0
 0ABE EFEF              ldi R30,255
 0AC0 F0E0              ldi R31,0
 0AC2 E81B              sub R30,R24
 0AC4 F90B              sbc R31,R25
 0AC6 E4BD              out 0x24,R30
 0AC8           ;         
 0AC8           ;       }
 0AC8           L136:
 0AC8           ;       TCCR2 = 0x05; //1024分频 
 0AC8 85E0              ldi R24,5
 0ACA 85BD              out 0x25,R24
 0ACC           ;       TIMSK |= 0x40;
 0ACC 87B7              in R24,0x37
 0ACE 8064              ori R24,64
 0AD0 87BF              out 0x37,R24
 0AD2           L124:
 0AD2 0E940000          xcall pop_gset3
 0AD6 0E940000          xcall pop_lset
 0ADA                   .dbline 0 ; func end
 0ADA 1895              reti
                        .area vector(rom, abs)
                        .org 116
 0074 0C946E05          jmp _timer3_ovf_isr
                        .area text(rom, con, rel)
                ;        t_count -> R10,R11
                        .even
 0ADC           _timer3_ovf_isr::
 0ADC 0E940000          xcall push_lset
 0AE0 0E940000          xcall push_gset3
 0AE4           ;       
 0AE4           ; }
 0AE4           ; 
 0AE4           ;  
 0AE4           ;  
 0AE4           ; #pragma interrupt_handler timer3_ovf_isr:30
 0AE4           ; void timer3_ovf_isr(void)
 0AE4           ; {
 0AE4           ;  //TIMER3 has overflowed
 0AE4           ;   unsigned int t_count = 8000; 
 0AE4 80E4              ldi R24,8000
 0AE6 9FE1              ldi R25,31
 0AE8 5C01              movw R10,R24
 0AEA           ;   
 0AEA           ;    if (T3.tickleft == 0)
 0AEA 40E0              ldi R20,0
 0AEC 50E0              ldi R21,0
 0AEE 60E0              ldi R22,0
 0AF0 70E0              ldi R23,0
 0AF2 40900900          lds R4,_T3+7+2
 0AF6 50900A00          lds R5,_T3+7+2+1
 0AFA 20900700          lds R2,_T3+7
 0AFE 30900800          lds R3,_T3+7+1
 0B02 2416              cp R2,R20
 0B04 3506              cpc R3,R21
 0B06 4606              cpc R4,R22
 0B08 5706              cpc R5,R23
 0B0A 39F5              brne L142
 0B0C           ;    {// led0Toggle();
 0B0C           ;        post(T3_timeout);
 0B0C 00E0              ldi R16,<PL_T3_timeout
 0B0E 10E0              ldi R17,>PL_T3_timeout
 0B10 0E940000          xcall _post
 0B14           ;       //  printf("post success\n");
 0B14           ;        
 0B14           ;        if (T3.type==1)
 0B14 80910200          lds R24,_T3+2
 0B18 8130              cpi R24,1
 0B1A A1F4              brne L145
 0B1C           ;        {
 0B1C           ;         T3.tickleft = T3.ticks;
 0B1C 40900500          lds R4,_T3+3+2
 0B20 50900600          lds R5,_T3+3+2+1
 0B24 20900300          lds R2,_T3+3
 0B28 30900400          lds R3,_T3+3+1
 0B2C 30920800          sts _T3+7+1,R3
 0B30 20920700          sts _T3+7,R2
 0B34 50920A00          sts _T3+7+2+1,R5
 0B38 40920900          sts _T3+7+2,R4
 0B3C           ;           T3.on =1;
 0B3C 81E0              ldi R24,1
 0B3E 80930100          sts _T3+1,R24
 0B42           ;        }
 0B42 0BC0              xjmp L146
 0B44           L145:
 0B44           ; 	 else
 0B44           ; 	 {
 0B44           ; 	    TCCR3B = 0x0;
 0B44 2224              clr R2
 0B46 20928A00          sts 138,R2
 0B4A           ;           ETIMSK &= ~0x04;
 0B4A 80917D00          lds R24,125
 0B4E 8B7F              andi R24,251
 0B50 80937D00          sts 125,R24
 0B54           ;           T3.on =0;
 0B54 20920100          sts _T3+1,R2
 0B58           ;           return ;
 0B58 82C0              xjmp L141
 0B5A           L146:
 0B5A           ; 	 }
 0B5A           ;    }
 0B5A           L142:
 0B5A           ;       if (T3.tickleft > 9000)
 0B5A 48E2              ldi R20,40
 0B5C 53E2              ldi R21,35
 0B5E 60E0              ldi R22,0
 0B60 70E0              ldi R23,0
 0B62 40900900          lds R4,_T3+7+2
 0B66 50900A00          lds R5,_T3+7+2+1
 0B6A 20900700          lds R2,_T3+7
 0B6E 30900800          lds R3,_T3+7+1
 0B72 4215              cp R20,R2
 0B74 5305              cpc R21,R3
 0B76 6405              cpc R22,R4
 0B78 7505              cpc R23,R5
 0B7A 10F5              brsh L152
 0B7C           ;       {
 0B7C           ;          T3.tickleft -= 9000;
 0B7C 48E2              ldi R20,40
 0B7E 53E2              ldi R21,35
 0B80 60E0              ldi R22,0
 0B82 70E0              ldi R23,0
 0B84 241A              sub R2,R20
 0B86 350A              sbc R3,R21
 0B88 460A              sbc R4,R22
 0B8A 570A              sbc R5,R23
 0B8C 30920800          sts _T3+7+1,R3
 0B90 20920700          sts _T3+7,R2
 0B94 50920A00          sts _T3+7+2+1,R5
 0B98 40920900          sts _T3+7+2,R4
 0B9C           ;                TCNT3H = 0x0; //setup
 0B9C 2224              clr R2
 0B9E 20928900          sts 137,R2
 0BA2           ;          TCNT3L = 0x0;
 0BA2 20928800          sts 136,R2
 0BA6           ;          t_count = t_count*72/10-1;
 0BA6 08E4              ldi R16,72
 0BA8 10E0              ldi R17,0
 0BAA 9501              movw R18,R10
 0BAC 0E940000          xcall empy16s
 0BB0 2AE0              ldi R18,10
 0BB2 30E0              ldi R19,0
 0BB4 0E940000          xcall div16u
 0BB8 C801              movw R24,R16
 0BBA 0197              sbiw R24,1
 0BBC 5C01              movw R10,R24
 0BBE           ;       }
 0BBE 47C0              xjmp L153
 0BC0           L152:
 0BC0           ;       else
 0BC0           ;       {
 0BC0           ;          t_count = T3.tickleft*72/10 -1; 
 0BC0 40900900          lds R4,_T3+7+2
 0BC4 50900A00          lds R5,_T3+7+2+1
 0BC8 20900700          lds R2,_T3+7
 0BCC 30900800          lds R3,_T3+7+1
 0BD0 48E4              ldi R20,72
 0BD2 50E0              ldi R21,0
 0BD4 60E0              ldi R22,0
 0BD6 70E0              ldi R23,0
 0BD8 5A92              st -y,R5
 0BDA 4A92              st -y,R4
 0BDC 3A92              st -y,R3
 0BDE 2A92              st -y,R2
 0BE0 8A01              movw R16,R20
 0BE2 9B01              movw R18,R22
 0BE4 0E940000          xcall empy32u
 0BE8 4AE0              ldi R20,10
 0BEA 50E0              ldi R21,0
 0BEC 60E0              ldi R22,0
 0BEE 70E0              ldi R23,0
 0BF0 7A93              st -y,R23
 0BF2 6A93              st -y,R22
 0BF4 5A93              st -y,R21
 0BF6 4A93              st -y,R20
 0BF8 0E940000          xcall div32u
 0BFC 1801              movw R2,R16
 0BFE 2901              movw R4,R18
 0C00 41E0              ldi R20,1
 0C02 50E0              ldi R21,0
 0C04 60E0              ldi R22,0
 0C06 70E0              ldi R23,0
 0C08 241A              sub R2,R20
 0C0A 350A              sbc R3,R21
 0C0C 460A              sbc R4,R22
 0C0E 570A              sbc R5,R23
 0C10 5101              movw R10,R2
 0C12           ;                T3.tickleft =0;
 0C12 40E0              ldi R20,0
 0C14 50E0              ldi R21,0
 0C16 60E0              ldi R22,0
 0C18 70E0              ldi R23,0
 0C1A 50930800          sts _T3+7+1,R21
 0C1E 40930700          sts _T3+7,R20
 0C22 70930A00          sts _T3+7+2+1,R23
 0C26 60930900          sts _T3+7+2,R22
 0C2A           ;          TCNT3H = 0xff - ((t_count>>8) & 0xff); //setup
 0C2A C101              movw R24,R2
 0C2C 892F              mov R24,R25
 0C2E 9927              clr R25
 0C30 9070              andi R25,0
 0C32 EFEF              ldi R30,255
 0C34 F0E0              ldi R31,0
 0C36 E81B              sub R30,R24
 0C38 F90B              sbc R31,R25
 0C3A E0938900          sts 137,R30
 0C3E           ;          TCNT3L = 0xff - (t_count & 0xff);
 0C3E C101              movw R24,R2
 0C40 9070              andi R25,0
 0C42 EFEF              ldi R30,255
 0C44 F0E0              ldi R31,0
 0C46 E81B              sub R30,R24
 0C48 F90B              sbc R31,R25
 0C4A E0938800          sts 136,R30
 0C4E           ;       }
 0C4E           L153:
 0C4E           ;       TCCR3B = 0x05; //1024分频 
 0C4E 85E0              ldi R24,5
 0C50 80938A00          sts 138,R24
 0C54           ;       ETIMSK |= 0x04;
 0C54 80917D00          lds R24,125
 0C58 8460              ori R24,4
 0C5A 80937D00          sts 125,R24
 0C5E           L141:
 0C5E 0E940000          xcall pop_gset3
 0C62 0E940000          xcall pop_lset
 0C66                   .dbline 0 ; func end
 0C66 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 + -