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

📄 timer.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 04C8           ;    ETIMSK |= 0x04;
 04C8 80917D00          lds R24,125
 04CC 8460              ori R24,4
 04CE 80937D00          sts 125,R24
 04D2           ;    T3.on=1;
 04D2 81E0              ldi R24,1
 04D4 80930100          sts _T3+1,R24
 04D8           L49:
 04D8 0E940000          xcall pop_gset4
 04DC                   .dbline 0 ; func end
 04DC 0895              ret
                        .even
 04DE           _stop_T3::
 04DE           ; }
 04DE           ; void stop_T3(void)
 04DE           ; {
 04DE           ;    TCCR3B = 0x0; 
 04DE 2224              clr R2
 04E0 20928A00          sts 138,R2
 04E4           ;    ETIMSK &= ~0x04;
 04E4 80917D00          lds R24,125
 04E8 8B7F              andi R24,251
 04EA 80937D00          sts 125,R24
 04EE           ;     T3.on=0;
 04EE 20920100          sts _T3+1,R2
 04F2           L63:
 04F2                   .dbline 0 ; func end
 04F2 0895              ret
                        .even
 04F4           _T0_init::
 04F4 0E940000          xcall push_gset2
 04F8           ; }
 04F8           ; //init
 04F8           ; void T0_init()
 04F8           ; {
 04F8           ;   T0.num = 0;
 04F8 2224              clr R2
 04FA 20922D00          sts _T0,R2
 04FE           ;   T0.on = 0;
 04FE 20922E00          sts _T0+1,R2
 0502           ;   T0.type = 0;  //类型,reapeat=1  单次=0
 0502 20922F00          sts _T0+2,R2
 0506           ;   T0.ticks = 0;  //执行周期
 0506 40E0              ldi R20,0
 0508 50E0              ldi R21,0
 050A 60E0              ldi R22,0
 050C 70E0              ldi R23,0
 050E 50933100          sts _T0+3+1,R21
 0512 40933000          sts _T0+3,R20
 0516 70933300          sts _T0+3+2+1,R23
 051A 60933200          sts _T0+3+2,R22
 051E           ;   T0.tickleft = 0;  //剩余时间,单位为秒
 051E 40E0              ldi R20,0
 0520 50E0              ldi R21,0
 0522 60E0              ldi R22,0
 0524 70E0              ldi R23,0
 0526 50933500          sts _T0+7+1,R21
 052A 40933400          sts _T0+7,R20
 052E 70933700          sts _T0+7+2+1,R23
 0532 60933600          sts _T0+7+2,R22
 0536           ;   T0.adjustedticks = 0;
 0536 40E0              ldi R20,0
 0538 50E0              ldi R21,0
 053A 60E0              ldi R22,0
 053C 70E0              ldi R23,0
 053E 50933900          sts _T0+11+1,R21
 0542 40933800          sts _T0+11,R20
 0546 70933B00          sts _T0+11+2+1,R23
 054A 60933A00          sts _T0+11+2,R22
 054E           ;   TCCR0 = 0x00; //stop
 054E 23BE              out 0x33,R2
 0550           ;   ASSR  = 0x08; //set async mode
 0550 88E0              ldi R24,8
 0552 80BF              out 0x30,R24
 0554           L65:
 0554 0E940000          xcall pop_gset2
 0558                   .dbline 0 ; func end
 0558 0895              ret
                        .even
 055A           _T1_init::
 055A 0E940000          xcall push_gset2
 055E           ;   
 055E           ;  // TCCR0 = 0x05; //start timer
 055E           ; }
 055E           ; 
 055E           ; void T1_init(void)
 055E           ; {
 055E           ;   T1.num = 0;
 055E 2224              clr R2
 0560 20921E00          sts _T1,R2
 0564           ;   T1.on = 0;
 0564 20921F00          sts _T1+1,R2
 0568           ;   T1.type = 0;  //类型,reapeat=1  单次=0
 0568 20922000          sts _T1+2,R2
 056C           ;   T1.ticks = 0;  //执行周期
 056C 40E0              ldi R20,0
 056E 50E0              ldi R21,0
 0570 60E0              ldi R22,0
 0572 70E0              ldi R23,0
 0574 50932200          sts _T1+3+1,R21
 0578 40932100          sts _T1+3,R20
 057C 70932400          sts _T1+3+2+1,R23
 0580 60932300          sts _T1+3+2,R22
 0584           ;   T1.tickleft = 0;  //剩余时间,单位为秒
 0584 40E0              ldi R20,0
 0586 50E0              ldi R21,0
 0588 60E0              ldi R22,0
 058A 70E0              ldi R23,0
 058C 50932600          sts _T1+7+1,R21
 0590 40932500          sts _T1+7,R20
 0594 70932800          sts _T1+7+2+1,R23
 0598 60932700          sts _T1+7+2,R22
 059C           ;   T1.adjustedticks = 0;
 059C 40E0              ldi R20,0
 059E 50E0              ldi R21,0
 05A0 60E0              ldi R22,0
 05A2 70E0              ldi R23,0
 05A4 50932A00          sts _T1+11+1,R21
 05A8 40932900          sts _T1+11,R20
 05AC 70932C00          sts _T1+11+2+1,R23
 05B0 60932B00          sts _T1+11+2,R22
 05B4           ; 
 05B4           ;  TCCR1B = 0x00; //stop
 05B4 2EBC              out 0x2e,R2
 05B6           ;  //TCNT1H = 0xE3; //setup
 05B6           ;  //TCNT1L = 0xE1;
 05B6           ;  
 05B6           ;  TCCR1A = 0x00;
 05B6 2FBC              out 0x2f,R2
 05B8           L71:
 05B8 0E940000          xcall pop_gset2
 05BC                   .dbline 0 ; func end
 05BC 0895              ret
                        .even
 05BE           _T2_init::
 05BE 0E940000          xcall push_gset2
 05C2           ; 
 05C2           ;  //TCCR1B = 0x05; //start Timer
 05C2           ; }
 05C2           ; 
 05C2           ;  
 05C2           ; 
 05C2           ; void T2_init()
 05C2           ; {
 05C2           ;   T2.num = 0;
 05C2 2224              clr R2
 05C4 20920F00          sts _T2,R2
 05C8           ;   T2.on = 0;
 05C8 20921000          sts _T2+1,R2
 05CC           ;   T2.type = 0;  //类型,reapeat=1  单次=0
 05CC 20921100          sts _T2+2,R2
 05D0           ;   T2.ticks = 0;  //执行周期
 05D0 40E0              ldi R20,0
 05D2 50E0              ldi R21,0
 05D4 60E0              ldi R22,0
 05D6 70E0              ldi R23,0
 05D8 50931300          sts _T2+3+1,R21
 05DC 40931200          sts _T2+3,R20
 05E0 70931500          sts _T2+3+2+1,R23
 05E4 60931400          sts _T2+3+2,R22
 05E8           ;   T2.tickleft = 0;  //剩余时间,单位为秒
 05E8 40E0              ldi R20,0
 05EA 50E0              ldi R21,0
 05EC 60E0              ldi R22,0
 05EE 70E0              ldi R23,0
 05F0 50931700          sts _T2+7+1,R21
 05F4 40931600          sts _T2+7,R20
 05F8 70931900          sts _T2+7+2+1,R23
 05FC 60931800          sts _T2+7+2,R22
 0600           ;   T2.adjustedticks = 0;
 0600 40E0              ldi R20,0
 0602 50E0              ldi R21,0
 0604 60E0              ldi R22,0
 0606 70E0              ldi R23,0
 0608 50931B00          sts _T2+11+1,R21
 060C 40931A00          sts _T2+11,R20
 0610 70931D00          sts _T2+11+2+1,R23
 0614 60931C00          sts _T2+11+2,R22
 0618           ;   TCCR2 = 0x00; //stop
 0618 25BC              out 0x25,R2
 061A           L77:
 061A 0E940000          xcall pop_gset2
 061E                   .dbline 0 ; func end
 061E 0895              ret
                        .even
 0620           _T3_init::
 0620 0E940000          xcall push_gset2
 0624           ; 
 0624           ;  // TCCR2 = 0x05; //start
 0624           ; }
 0624           ; void T3_init()
 0624           ; {
 0624           ;   T3.num = 0;
 0624 2224              clr R2
 0626 20920000          sts _T3,R2
 062A           ;   T3.on = 0;
 062A 20920100          sts _T3+1,R2
 062E           ;   T3.type = 0;  //类型,reapeat=1  单次=0
 062E 20920200          sts _T3+2,R2
 0632           ;   T3.ticks = 0;  //执行周期
 0632 40E0              ldi R20,0
 0634 50E0              ldi R21,0
 0636 60E0              ldi R22,0
 0638 70E0              ldi R23,0
 063A 50930400          sts _T3+3+1,R21
 063E 40930300          sts _T3+3,R20
 0642 70930600          sts _T3+3+2+1,R23
 0646 60930500          sts _T3+3+2,R22
 064A           ;   T3.tickleft = 0;  //剩余时间,单位为秒
 064A 40E0              ldi R20,0
 064C 50E0              ldi R21,0
 064E 60E0              ldi R22,0
 0650 70E0              ldi R23,0
 0652 50930800          sts _T3+7+1,R21
 0656 40930700          sts _T3+7,R20
 065A 70930A00          sts _T3+7+2+1,R23
 065E 60930900          sts _T3+7+2,R22
 0662           ;   T3.adjustedticks = 0;
 0662 40E0              ldi R20,0
 0664 50E0              ldi R21,0
 0666 60E0              ldi R22,0
 0668 70E0              ldi R23,0
 066A 50930C00          sts _T3+11+1,R21
 066E 40930B00          sts _T3+11,R20
 0672 70930E00          sts _T3+11+2+1,R23
 0676 60930D00          sts _T3+11+2,R22
 067A           ;   TCCR3B = 0x00; //stop
 067A 20928A00          sts 138,R2
 067E           ;   TCCR3A = 0x00;
 067E 20928B00          sts 139,R2
 0682           L83:
 0682 0E940000          xcall pop_gset2
 0686                   .dbline 0 ; func end
 0686 0895              ret
                        .even
 0688           _mcu_sleep::
 0688           ; }
 0688           ; void mcu_sleep()
 0688           ; {
 0688           ;     MCUCR = 0x38;
 0688 88E3              ldi R24,56
 068A 85BF              out 0x35,R24
 068C           ;     asm("sleep");
 068C 8895              sleep
 068E           L89:
 068E                   .dbline 0 ; func end
 068E 0895              ret
                        .area vector(rom, abs)
                        .org 64
 0040 0C944803          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
                ;        t_count -> R10
                        .even
 0690           _timer0_ovf_isr::
 0690 0E940000          xcall push_lset
 0694 0E940000          xcall push_gset3
 0698           ; }
 0698           ; 
 0698           ; #pragma interrupt_handler timer0_ovf_isr:17
 0698           ; void timer0_ovf_isr(void)
 0698           ; {
 0698           ;       unsigned char t_count = 6000; 
 0698 80E7              ldi R24,6000
 069A 97E1              ldi R25,23
 069C A82E              mov R10,R24
 069E           ;       //led2Toggle();
 069E           ;       // printf("T0\n");
 069E           ;       //led0Toggle();
 069E           ;       if (T0.tickleft == 0)
 069E 40E0              ldi R20,0
 06A0 50E0              ldi R21,0
 06A2 60E0              ldi R22,0
 06A4 70E0              ldi R23,0
 06A6 40903600          lds R4,_T0+7+2
 06AA 50903700          lds R5,_T0+7+2+1
 06AE 20903400          lds R2,_T0+7
 06B2 30903500          lds R3,_T0+7+1
 06B6 2416              cp R2,R20
 06B8 3506              cpc R3,R21
 06BA 4606              cpc R4,R22
 06BC 5706              cpc R5,R23
 06BE 31F5              brne L91
 06C0           ;       {
 06C0           ;               post(T0_timeout);
 06C0 00E0              ldi R16,<PL_T0_timeout
 06C2 10E0              ldi R17,>PL_T0_timeout
 06C4 0E940000          xcall _post
 06C8           ;       adjustPower();
 06C8 0E940000          xcall _adjustPower
 06CC           ;               if (T0.type==1)
 06CC 80912F00          lds R24,_T0+2
 06D0 8130              cpi R24,1
 06D2 A1F4              brne L94
 06D4           ;       {
 06D4           ;               T0.tickleft = T0.ticks;
 06D4 40903200          lds R4,_T0+3+2
 06D8 50903300          lds R5,_T0+3+2+1
 06DC 20903000          lds R2,_T0+3
 06E0 30903100          lds R3,_T0+3+1
 06E4 30923500          sts _T0+7+1,R3
 06E8 20923400          sts _T0+7,R2
 06EC 50923700          sts _T0+7+2+1,R5
 06F0 40923600          sts _T0+7+2,R4
 06F4           ;                       T0.on =1;
 06F4 81E0              ldi R24,1
 06F6 80932E00          sts _T0+1,R24
 06FA           ;               }
 06FA 08C0              xjmp L95
 06FC           L94:
 06FC           ; 	 	else
 06FC           ; 	 	{
 06FC           ; 	    	TCCR0 = 0x0;
 06FC 2224              clr R2
 06FE 23BE              out 0x33,R2
 0700           ;               TIMSK &= ~0x01;
 0700 87B7              in R24,0x37
 0702 8E7F              andi R24,254
 0704 87BF              out 0x37,R24
 0706           ;               T0.on =0;
 0706 20922E00          sts _T0+1,R2
 070A           ;               return ;
 070A 72C0              xjmp L90
 070C           L95:
 070C           ; 	 	}
 070C           ;    	}
 070C           L91:
 070C           ;    
 070C           ;     if (T0.tickleft > 7000)
 070C 48E5              ldi R20,88
 070E 5BE1              ldi R21,27
 0710 60E0              ldi R22,0
 0712 70E0              ldi R23,0
 0714 40903600          lds R4,_T0+7+2
 0718 50903700          lds R5,_T0+7+2+1
 071C 20903400          lds R2,_T0+7
 0720 30903500          lds R3,_T0+7+1
 0724 4215              cp R20,R2
 0726 5305              cpc R21,R3
 0728 6405              cpc R22,R4
 072A 7505              cpc R23,R5
 072C E8F4              brsh L101
 072E           ;     {
 072E           ;         T0.tickleft -= 7000;
 072E 48E5              ldi R20,88
 0730 5BE1              ldi R21,27
 0732 60E0              ldi R22,0
 0734 70E0              ldi R23,0
 0736 241A              sub R2,R20
 0738 350A              sbc R3,R21
 073A 460A              sbc R4,R22
 073C 570A              sbc R5,R23
 073E 30923500          sts _T0+7+1,R3
 0742 20923400          sts _T0+7,R2
 0746 50923700          sts _T0+7+2+1,R5
 074A 40923600          sts _T0+7+2,R4
 074E           ;               TCNT0 = 0x0; //setup
 074E 2224              clr R2
 0750 22BE              out 0x32,R2

⌨️ 快捷键说明

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