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

📄 timer.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0752           ;               t_count = t_count*72/10-1; 
 0752 88E4              ldi R24,72
 0754 8A9D              mul R24,R10
 0756 8001              movw R16,R0
 0758 2AE0              ldi R18,10
 075A 30E0              ldi R19,0
 075C 0E940000          xcall div16s
 0760 C801              movw R24,R16
 0762 0197              sbiw R24,1
 0764 A82E              mov R10,R24
 0766           ;     }
 0766 3DC0              xjmp L102
 0768           L101:
 0768           ;     else
 0768           ;     {
 0768           ;         t_count = T0.tickleft*72/10 -1; 
 0768 40903600          lds R4,_T0+7+2
 076C 50903700          lds R5,_T0+7+2+1
 0770 20903400          lds R2,_T0+7
 0774 30903500          lds R3,_T0+7+1
 0778 48E4              ldi R20,72
 077A 50E0              ldi R21,0
 077C 60E0              ldi R22,0
 077E 70E0              ldi R23,0
 0780 5A92              st -y,R5
 0782 4A92              st -y,R4
 0784 3A92              st -y,R3
 0786 2A92              st -y,R2
 0788 8A01              movw R16,R20
 078A 9B01              movw R18,R22
 078C 0E940000          xcall empy32u
 0790 4AE0              ldi R20,10
 0792 50E0              ldi R21,0
 0794 60E0              ldi R22,0
 0796 70E0              ldi R23,0
 0798 7A93              st -y,R23
 079A 6A93              st -y,R22
 079C 5A93              st -y,R21
 079E 4A93              st -y,R20
 07A0 0E940000          xcall div32u
 07A4 1801              movw R2,R16
 07A6 2901              movw R4,R18
 07A8 41E0              ldi R20,1
 07AA 50E0              ldi R21,0
 07AC 60E0              ldi R22,0
 07AE 70E0              ldi R23,0
 07B0 241A              sub R2,R20
 07B2 350A              sbc R3,R21
 07B4 460A              sbc R4,R22
 07B6 570A              sbc R5,R23
 07B8 A22C              mov R10,R2
 07BA           ;               T0.tickleft =0;
 07BA 40E0              ldi R20,0
 07BC 50E0              ldi R21,0
 07BE 60E0              ldi R22,0
 07C0 70E0              ldi R23,0
 07C2 50933500          sts _T0+7+1,R21
 07C6 40933400          sts _T0+7,R20
 07CA 70933700          sts _T0+7+2+1,R23
 07CE 60933600          sts _T0+7+2,R22
 07D2           ;         TCNT0 = 0xff - (t_count & 0xff); //setup
 07D2 822D              mov R24,R2
 07D4 9927              clr R25
 07D6 9070              andi R25,0
 07D8 EFEF              ldi R30,255
 07DA F0E0              ldi R31,0
 07DC E81B              sub R30,R24
 07DE F90B              sbc R31,R25
 07E0 E2BF              out 0x32,R30
 07E2           ;         
 07E2           ;     }
 07E2           L102:
 07E2           ;     
 07E2           ;     TCCR0 = 0x07; //1024分频 
 07E2 87E0              ldi R24,7
 07E4 83BF              out 0x33,R24
 07E6           ;     TIMSK |= 0x01;
 07E6 87B7              in R24,0x37
 07E8 8160              ori R24,1
 07EA 87BF              out 0x37,R24
 07EC           ;     adjustPower();
 07EC 0E940000          xcall _adjustPower
 07F0           L90:
 07F0 0E940000          xcall pop_gset3
 07F4 0E940000          xcall pop_lset
 07F8                   .dbline 0 ; func end
 07F8 1895              reti
                        .area vector(rom, abs)
                        .org 56
 0038 0C94FD03          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
                ;        t_count -> R10,R11
                        .even
 07FA           _timer1_ovf_isr::
 07FA 0E940000          xcall push_lset
 07FE 0E940000          xcall push_gset3
 0802           ;   // led0Toggle();
 0802           ;    // post(mcu_sleep);
 0802           ; 
 0802           ; }
 0802           ; 
 0802           ; 
 0802           ; 
 0802           ; #pragma interrupt_handler timer1_ovf_isr:15
 0802           ; void timer1_ovf_isr(void)
 0802           ; {
 0802           ;  //TIMER1 has overflowed
 0802           ;    unsigned int t_count = 8000; 
 0802 80E4              ldi R24,8000
 0804 9FE1              ldi R25,31
 0806 5C01              movw R10,R24
 0808           ;   // printf("T1\n");
 0808           ;   led0Toggle();
 0808 0E940000          xcall _led0Toggle
 080C           ;    if (T1.tickleft == 0)
 080C 40E0              ldi R20,0
 080E 50E0              ldi R21,0
 0810 60E0              ldi R22,0
 0812 70E0              ldi R23,0
 0814 40902700          lds R4,_T1+7+2
 0818 50902800          lds R5,_T1+7+2+1
 081C 20902500          lds R2,_T1+7
 0820 30902600          lds R3,_T1+7+1
 0824 2416              cp R2,R20
 0826 3506              cpc R3,R21
 0828 4606              cpc R4,R22
 082A 5706              cpc R5,R23
 082C 21F5              brne L108
 082E           ;    {
 082E           ;        post(T1_timeout);
 082E 00E0              ldi R16,<PL_T1_timeout
 0830 10E0              ldi R17,>PL_T1_timeout
 0832 0E940000          xcall _post
 0836           ;        if (T1.type==1)
 0836 80912000          lds R24,_T1+2
 083A 8130              cpi R24,1
 083C A1F4              brne L111
 083E           ;        {
 083E           ;        T1.tickleft = T1.ticks;
 083E 40902300          lds R4,_T1+3+2
 0842 50902400          lds R5,_T1+3+2+1
 0846 20902100          lds R2,_T1+3
 084A 30902200          lds R3,_T1+3+1
 084E 30922600          sts _T1+7+1,R3
 0852 20922500          sts _T1+7,R2
 0856 50922800          sts _T1+7+2+1,R5
 085A 40922700          sts _T1+7+2,R4
 085E           ;        T1.on =1;
 085E 81E0              ldi R24,1
 0860 80931F00          sts _T1+1,R24
 0864           ;      }
 0864 08C0              xjmp L112
 0866           L111:
 0866           ;      else
 0866           ; 	 {
 0866           ; 	   TCCR1B = 0x0;
 0866 2224              clr R2
 0868 2EBC              out 0x2e,R2
 086A           ;          TIMSK &= ~0x04;
 086A 87B7              in R24,0x37
 086C 8B7F              andi R24,251
 086E 87BF              out 0x37,R24
 0870           ;          T1.on =0;
 0870 20921F00          sts _T1+1,R2
 0874           ;          return;
 0874 7BC0              xjmp L107
 0876           L112:
 0876           ; 	 }
 0876           ;    }
 0876           L108:
 0876           ;    
 0876           ;       if (T1.tickleft > 9000)
 0876 48E2              ldi R20,40
 0878 53E2              ldi R21,35
 087A 60E0              ldi R22,0
 087C 70E0              ldi R23,0
 087E 40902700          lds R4,_T1+7+2
 0882 50902800          lds R5,_T1+7+2+1
 0886 20902500          lds R2,_T1+7
 088A 30902600          lds R3,_T1+7+1
 088E 4215              cp R20,R2
 0890 5305              cpc R21,R3
 0892 6405              cpc R22,R4
 0894 7505              cpc R23,R5
 0896 00F5              brsh L118
 0898           ;       {
 0898           ;          T1.tickleft -= 9000;
 0898 48E2              ldi R20,40
 089A 53E2              ldi R21,35
 089C 60E0              ldi R22,0
 089E 70E0              ldi R23,0
 08A0 241A              sub R2,R20
 08A2 350A              sbc R3,R21
 08A4 460A              sbc R4,R22
 08A6 570A              sbc R5,R23
 08A8 30922600          sts _T1+7+1,R3
 08AC 20922500          sts _T1+7,R2
 08B0 50922800          sts _T1+7+2+1,R5
 08B4 40922700          sts _T1+7+2,R4
 08B8           ;                TCNT1H = 0x0; //setup
 08B8 2224              clr R2
 08BA 2DBC              out 0x2d,R2
 08BC           ;          TCNT1L = 0x0;
 08BC 2CBC              out 0x2c,R2
 08BE           ;          t_count = t_count*72/10-1; 
 08BE 08E4              ldi R16,72
 08C0 10E0              ldi R17,0
 08C2 9501              movw R18,R10
 08C4 0E940000          xcall empy16s
 08C8 2AE0              ldi R18,10
 08CA 30E0              ldi R19,0
 08CC 0E940000          xcall div16u
 08D0 C801              movw R24,R16
 08D2 0197              sbiw R24,1
 08D4 5C01              movw R10,R24
 08D6           ;       }
 08D6 45C0              xjmp L119
 08D8           L118:
 08D8           ;       else
 08D8           ;       {
 08D8           ;          t_count = T1.tickleft*72/10 -1; 
 08D8 40902700          lds R4,_T1+7+2
 08DC 50902800          lds R5,_T1+7+2+1
 08E0 20902500          lds R2,_T1+7
 08E4 30902600          lds R3,_T1+7+1
 08E8 48E4              ldi R20,72
 08EA 50E0              ldi R21,0
 08EC 60E0              ldi R22,0
 08EE 70E0              ldi R23,0
 08F0 5A92              st -y,R5
 08F2 4A92              st -y,R4
 08F4 3A92              st -y,R3
 08F6 2A92              st -y,R2
 08F8 8A01              movw R16,R20
 08FA 9B01              movw R18,R22
 08FC 0E940000          xcall empy32u
 0900 4AE0              ldi R20,10
 0902 50E0              ldi R21,0
 0904 60E0              ldi R22,0
 0906 70E0              ldi R23,0
 0908 7A93              st -y,R23
 090A 6A93              st -y,R22
 090C 5A93              st -y,R21
 090E 4A93              st -y,R20
 0910 0E940000          xcall div32u
 0914 1801              movw R2,R16
 0916 2901              movw R4,R18
 0918 41E0              ldi R20,1
 091A 50E0              ldi R21,0
 091C 60E0              ldi R22,0
 091E 70E0              ldi R23,0
 0920 241A              sub R2,R20
 0922 350A              sbc R3,R21
 0924 460A              sbc R4,R22
 0926 570A              sbc R5,R23
 0928 5101              movw R10,R2
 092A           ;                T1.tickleft =0;
 092A 40E0              ldi R20,0
 092C 50E0              ldi R21,0
 092E 60E0              ldi R22,0
 0930 70E0              ldi R23,0
 0932 50932600          sts _T1+7+1,R21
 0936 40932500          sts _T1+7,R20
 093A 70932800          sts _T1+7+2+1,R23
 093E 60932700          sts _T1+7+2,R22
 0942           ;          TCNT1H = 0xff - ((t_count>>8) & 0xff); //setup
 0942 C101              movw R24,R2
 0944 892F              mov R24,R25
 0946 9927              clr R25
 0948 9070              andi R25,0
 094A EFEF              ldi R30,255
 094C F0E0              ldi R31,0
 094E E81B              sub R30,R24
 0950 F90B              sbc R31,R25
 0952 EDBD              out 0x2d,R30
 0954           ;          TCNT1L = 0xff - (t_count & 0xff);
 0954 C101              movw R24,R2
 0956 9070              andi R25,0
 0958 EFEF              ldi R30,255
 095A F0E0              ldi R31,0
 095C E81B              sub R30,R24
 095E F90B              sbc R31,R25
 0960 ECBD              out 0x2c,R30
 0962           ;       }
 0962           L119:
 0962           ;       TCCR1B = 0x05; //1024分频 
 0962 85E0              ldi R24,5
 0964 8EBD              out 0x2e,R24
 0966           ;       TIMSK |= 0x04;
 0966 87B7              in R24,0x37
 0968 8460              ori R24,4
 096A 87BF              out 0x37,R24
 096C           L107:
 096C 0E940000          xcall pop_gset3
 0970 0E940000          xcall pop_lset
 0974                   .dbline 0 ; func end
 0974 1895              reti
                        .area vector(rom, abs)
                        .org 40
 0028 0C94BB04          jmp _timer2_ovf_isr
                        .area text(rom, con, rel)
                ;        t_count -> R10
                        .even
 0976           _timer2_ovf_isr::
 0976 0E940000          xcall push_lset
 097A 0E940000          xcall push_gset3
 097E           ;       
 097E           ;  
 097E           ;  }
 097E           ;  
 097E           ; 
 097E           ; #pragma interrupt_handler timer2_ovf_isr:11
 097E           ; void timer2_ovf_isr(void)
 097E           ; {
 097E           ;   unsigned char t_count = 30; 
 097E 8EE1              ldi R24,30
 0980 A82E              mov R10,R24
 0982           ;  // printf("T2\n");
 0982           ;    if (T2.tickleft == 0)
 0982 40E0              ldi R20,0
 0984 50E0              ldi R21,0
 0986 60E0              ldi R22,0
 0988 70E0              ldi R23,0
 098A 40901800          lds R4,_T2+7+2
 098E 50901900          lds R5,_T2+7+2+1
 0992 20901600          lds R2,_T2+7
 0996 30901700          lds R3,_T2+7+1
 099A 2416              cp R2,R20
 099C 3506              cpc R3,R21
 099E 4606              cpc R4,R22
 09A0 5706              cpc R5,R23
 09A2 21F5              brne L125
 09A4           ;    {
 09A4           ;        post(T2_timeout);
 09A4 00E0              ldi R16,<PL_T2_timeout
 09A6 10E0              ldi R17,>PL_T2_timeout
 09A8 0E940000          xcall _post
 09AC           ;        if (T2.type==1)
 09AC 80911100          lds R24,_T2+2
 09B0 8130              cpi R24,1
 09B2 A1F4              brne L128
 09B4           ;        {
 09B4           ;         T2.tickleft = T2.ticks;
 09B4 40901400          lds R4,_T2+3+2
 09B8 50901500          lds R5,_T2+3+2+1
 09BC 20901200          lds R2,_T2+3
 09C0 30901300          lds R3,_T2+3+1
 09C4 30921700          sts _T2+7+1,R3
 09C8 20921600          sts _T2+7,R2
 09CC 50921900          sts _T2+7+2+1,R5
 09D0 40921800          sts _T2+7+2,R4
 09D4           ;         T2.on=1;
 09D4 81E0              ldi R24,1
 09D6 80931000          sts _T2+1,R24
 09DA           ;      }
 09DA 08C0              xjmp L129
 09DC           L128:
 09DC           ;      else

⌨️ 快捷键说明

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