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

📄 timer.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0284 50921500          sts _T2+3+2+1,R5
 0288 40921400          sts _T2+3+2,R4
 028C           ;    T2.tickleft = count;
 028C 4424              clr R4
 028E 5524              clr R5
 0290 30921700          sts _T2+7+1,R3
 0294 20921600          sts _T2+7,R2
 0298 50921900          sts _T2+7+2+1,R5
 029C 40921800          sts _T2+7+2,R4
 02A0           ;    if (T2.tickleft > 35)
 02A0 43E2              ldi R20,35
 02A2 50E0              ldi R21,0
 02A4 60E0              ldi R22,0
 02A6 70E0              ldi R23,0
 02A8 40901800          lds R4,_T2+7+2
 02AC 50901900          lds R5,_T2+7+2+1
 02B0 20901600          lds R2,_T2+7
 02B4 30901700          lds R3,_T2+7+1
 02B8 4215              cp R20,R2
 02BA 5305              cpc R21,R3
 02BC 6405              cpc R22,R4
 02BE 7505              cpc R23,R5
 02C0 98F4              brsh L36
 02C2           ;    {
 02C2           ;      
 02C2           ;        T2.tickleft -= 35;
 02C2 43E2              ldi R20,35
 02C4 50E0              ldi R21,0
 02C6 60E0              ldi R22,0
 02C8 70E0              ldi R23,0
 02CA 241A              sub R2,R20
 02CC 350A              sbc R3,R21
 02CE 460A              sbc R4,R22
 02D0 570A              sbc R5,R23
 02D2 30921700          sts _T2+7+1,R3
 02D6 20921600          sts _T2+7,R2
 02DA 50921900          sts _T2+7+2+1,R5
 02DE 40921800          sts _T2+7+2,R4
 02E2           ;      TCNT2 = 0x0; //setup
 02E2 2224              clr R2
 02E4 24BC              out 0x24,R2
 02E6           ;    }
 02E6 3DC0              xjmp L37
 02E8           L36:
 02E8           ;    else
 02E8           ;    {
 02E8           ;       
 02E8           ;      t_count = T2.tickleft*72/10 -1; 
 02E8 40901800          lds R4,_T2+7+2
 02EC 50901900          lds R5,_T2+7+2+1
 02F0 20901600          lds R2,_T2+7
 02F4 30901700          lds R3,_T2+7+1
 02F8 48E4              ldi R20,72
 02FA 50E0              ldi R21,0
 02FC 60E0              ldi R22,0
 02FE 70E0              ldi R23,0
 0300 5A92              st -y,R5
 0302 4A92              st -y,R4
 0304 3A92              st -y,R3
 0306 2A92              st -y,R2
 0308 8A01              movw R16,R20
 030A 9B01              movw R18,R22
 030C 0E940000          xcall empy32u
 0310 4AE0              ldi R20,10
 0312 50E0              ldi R21,0
 0314 60E0              ldi R22,0
 0316 70E0              ldi R23,0
 0318 7A93              st -y,R23
 031A 6A93              st -y,R22
 031C 5A93              st -y,R21
 031E 4A93              st -y,R20
 0320 0E940000          xcall div32u
 0324 1801              movw R2,R16
 0326 2901              movw R4,R18
 0328 41E0              ldi R20,1
 032A 50E0              ldi R21,0
 032C 60E0              ldi R22,0
 032E 70E0              ldi R23,0
 0330 241A              sub R2,R20
 0332 350A              sbc R3,R21
 0334 460A              sbc R4,R22
 0336 570A              sbc R5,R23
 0338 A22C              mov R10,R2
 033A           ;        T2.tickleft =0;
 033A 40E0              ldi R20,0
 033C 50E0              ldi R21,0
 033E 60E0              ldi R22,0
 0340 70E0              ldi R23,0
 0342 50931700          sts _T2+7+1,R21
 0346 40931600          sts _T2+7,R20
 034A 70931900          sts _T2+7+2+1,R23
 034E 60931800          sts _T2+7+2,R22
 0352           ; 
 0352           ;      TCNT2 = 0xff - (t_count & 0xff); //setup
 0352 822D              mov R24,R2
 0354 9927              clr R25
 0356 9070              andi R25,0
 0358 EFEF              ldi R30,255
 035A F0E0              ldi R31,0
 035C E81B              sub R30,R24
 035E F90B              sbc R31,R25
 0360 E4BD              out 0x24,R30
 0362           ;      
 0362           ;    }
 0362           L37:
 0362           ;    
 0362           ;    TCCR2 = 0x05; //start timer
 0362 85E0              ldi R24,5
 0364 85BD              out 0x25,R24
 0366           ;    TIMSK |= 0x40;
 0366 87B7              in R24,0x37
 0368 8064              ori R24,64
 036A 87BF              out 0x37,R24
 036C           L29:
 036C 0E940000          xcall pop_gset4
 0370                   .dbline 0 ; func end
 0370 0895              ret
                        .even
 0372           _stop_T2::
 0372           ; 
 0372           ; }
 0372           ; void stop_T2(void)
 0372           ; {
 0372           ;   TCCR2 = 0x0;
 0372 2224              clr R2
 0374 25BC              out 0x25,R2
 0376           ;   TIMSK &= ~0x40;;
 0376 87B7              in R24,0x37
 0378 8F7B              andi R24,191
 037A 87BF              out 0x37,R24
 037C           L42:
 037C                   .dbline 0 ; func end
 037C 0895              ret
 037E           ;        t_count -> R10,R11
 037E           ;          count -> R10,R11
 037E           ;           type -> R12
                        .even
 037E           _start_T3::
 037E 0E940000          xcall push_gset4
 0382 5901              movw R10,R18
 0384 C02E              mov R12,R16
 0386           ; }
 0386           ; //Timer3
 0386           ; void start_T3(char type, unsigned int count)
 0386           ; {
 0386           ; 
 0386           ;    unsigned int t_count; 
 0386           ;  
 0386           ;    if (type==1)
 0386 8C2D              mov R24,R12
 0388 8130              cpi R24,1
 038A 21F4              brne L44
 038C           ;       T3.type = 1;
 038C 81E0              ldi R24,1
 038E 80930200          sts _T3+2,R24
 0392 03C0              xjmp L45
 0394           L44:
 0394           ;    else 
 0394           ;       T3.type = 0; 
 0394 2224              clr R2
 0396 20920200          sts _T3+2,R2
 039A           L45:
 039A           ;    T3.ticks = count;
 039A 1501              movw R2,R10
 039C 4424              clr R4
 039E 5524              clr R5
 03A0 30920400          sts _T3+3+1,R3
 03A4 20920300          sts _T3+3,R2
 03A8 50920600          sts _T3+3+2+1,R5
 03AC 40920500          sts _T3+3+2,R4
 03B0           ;    T3.tickleft = count;
 03B0 4424              clr R4
 03B2 5524              clr R5
 03B4 30920800          sts _T3+7+1,R3
 03B8 20920700          sts _T3+7,R2
 03BC 50920A00          sts _T3+7+2+1,R5
 03C0 40920900          sts _T3+7+2,R4
 03C4           ;    if (T3.tickleft > 9000)
 03C4 48E2              ldi R20,40
 03C6 53E2              ldi R21,35
 03C8 60E0              ldi R22,0
 03CA 70E0              ldi R23,0
 03CC 40900900          lds R4,_T3+7+2
 03D0 50900A00          lds R5,_T3+7+2+1
 03D4 20900700          lds R2,_T3+7
 03D8 30900800          lds R3,_T3+7+1
 03DC 4215              cp R20,R2
 03DE 5305              cpc R21,R3
 03E0 6405              cpc R22,R4
 03E2 7505              cpc R23,R5
 03E4 B0F4              brsh L50
 03E6           ;    {
 03E6           ;      
 03E6           ;        T3.tickleft -= 9000;
 03E6 48E2              ldi R20,40
 03E8 53E2              ldi R21,35
 03EA 60E0              ldi R22,0
 03EC 70E0              ldi R23,0
 03EE 241A              sub R2,R20
 03F0 350A              sbc R3,R21
 03F2 460A              sbc R4,R22
 03F4 570A              sbc R5,R23
 03F6 30920800          sts _T3+7+1,R3
 03FA 20920700          sts _T3+7,R2
 03FE 50920A00          sts _T3+7+2+1,R5
 0402 40920900          sts _T3+7+2,R4
 0406           ;      TCNT3H = 0x0; //setup
 0406 2224              clr R2
 0408 20928900          sts 137,R2
 040C           ;      TCNT3L = 0x0;
 040C 20928800          sts 136,R2
 0410           ;    }
 0410 47C0              xjmp L51
 0412           L50:
 0412           ;    else
 0412           ;    {
 0412           ;       
 0412           ;      t_count = T3.tickleft*72/10 -1; 
 0412 40900900          lds R4,_T3+7+2
 0416 50900A00          lds R5,_T3+7+2+1
 041A 20900700          lds R2,_T3+7
 041E 30900800          lds R3,_T3+7+1
 0422 48E4              ldi R20,72
 0424 50E0              ldi R21,0
 0426 60E0              ldi R22,0
 0428 70E0              ldi R23,0
 042A 5A92              st -y,R5
 042C 4A92              st -y,R4
 042E 3A92              st -y,R3
 0430 2A92              st -y,R2
 0432 8A01              movw R16,R20
 0434 9B01              movw R18,R22
 0436 0E940000          xcall empy32u
 043A 4AE0              ldi R20,10
 043C 50E0              ldi R21,0
 043E 60E0              ldi R22,0
 0440 70E0              ldi R23,0
 0442 7A93              st -y,R23
 0444 6A93              st -y,R22
 0446 5A93              st -y,R21
 0448 4A93              st -y,R20
 044A 0E940000          xcall div32u
 044E 1801              movw R2,R16
 0450 2901              movw R4,R18
 0452 41E0              ldi R20,1
 0454 50E0              ldi R21,0
 0456 60E0              ldi R22,0
 0458 70E0              ldi R23,0
 045A 241A              sub R2,R20
 045C 350A              sbc R3,R21
 045E 460A              sbc R4,R22
 0460 570A              sbc R5,R23
 0462 5101              movw R10,R2
 0464           ;        T3.tickleft =0;
 0464 40E0              ldi R20,0
 0466 50E0              ldi R21,0
 0468 60E0              ldi R22,0
 046A 70E0              ldi R23,0
 046C 50930800          sts _T3+7+1,R21
 0470 40930700          sts _T3+7,R20
 0474 70930A00          sts _T3+7+2+1,R23
 0478 60930900          sts _T3+7+2,R22
 047C           ; 
 047C           ;      TCNT3H = 0xff - ((t_count>>8) & 0xff); //setup
 047C C101              movw R24,R2
 047E 892F              mov R24,R25
 0480 9927              clr R25
 0482 9070              andi R25,0
 0484 EFEF              ldi R30,255
 0486 F0E0              ldi R31,0
 0488 E81B              sub R30,R24
 048A F90B              sbc R31,R25
 048C E0938900          sts 137,R30
 0490           ;      TCNT3L = 0xff - (t_count & 0xff);
 0490 C101              movw R24,R2
 0492 9070              andi R25,0
 0494 EFEF              ldi R30,255
 0496 F0E0              ldi R31,0
 0498 E81B              sub R30,R24
 049A F90B              sbc R31,R25
 049C E0938800          sts 136,R30
 04A0           ;    }
 04A0           L51:
 04A0           ;    
 04A0           ;    TCCR3B = 0x05; //1024分频 
 04A0 85E0              ldi R24,5
 04A2 80938A00          sts 138,R24
 04A6           ;    ETIMSK |= 0x04;
 04A6 80917D00          lds R24,125
 04AA 8460              ori R24,4
 04AC 80937D00          sts 125,R24
 04B0           L43:
 04B0 0E940000          xcall pop_gset4
 04B4                   .dbline 0 ; func end
 04B4 0895              ret
                        .even
 04B6           _stop_T3::
 04B6           ; 
 04B6           ; }
 04B6           ; void stop_T3(void)
 04B6           ; {
 04B6           ;    TCCR3B = 0x0; 
 04B6 2224              clr R2
 04B8 20928A00          sts 138,R2
 04BC           ;    ETIMSK &= ~0x04;
 04BC 80917D00          lds R24,125
 04C0 8B7F              andi R24,251
 04C2 80937D00          sts 125,R24
 04C6           L56:
 04C6                   .dbline 0 ; func end
 04C6 0895              ret
                        .even
 04C8           _T0_init::
 04C8 0E940000          xcall push_gset2
 04CC           ; }
 04CC           ; //init
 04CC           ; void T0_init()
 04CC           ; {
 04CC           ;   T0.num = 0;
 04CC 2224              clr R2
 04CE 20922D00          sts _T0,R2
 04D2           ;   T0.on = 0;
 04D2 20922E00          sts _T0+1,R2
 04D6           ;   T0.type = 0;  //类型,reapeat=1  单次=0
 04D6 20922F00          sts _T0+2,R2
 04DA           ;   T0.ticks = 0;  //执行周期
 04DA 40E0              ldi R20,0
 04DC 50E0              ldi R21,0
 04DE 60E0              ldi R22,0
 04E0 70E0              ldi R23,0
 04E2 50933100          sts _T0+3+1,R21
 04E6 40933000          sts _T0+3,R20
 04EA 70933300          sts _T0+3+2+1,R23
 04EE 60933200          sts _T0+3+2,R22
 04F2           ;   T0.tickleft = 0;  //剩余时间,单位为秒
 04F2 40E0              ldi R20,0
 04F4 50E0              ldi R21,0
 04F6 60E0              ldi R22,0
 04F8 70E0              ldi R23,0
 04FA 50933500          sts _T0+7+1,R21
 04FE 40933400          sts _T0+7,R20
 0502 70933700          sts _T0+7+2+1,R23
 0506 60933600          sts _T0+7+2,R22
 050A           ;   T0.adjustedticks = 0;
 050A 40E0              ldi R20,0
 050C 50E0              ldi R21,0
 050E 60E0              ldi R22,0
 0510 70E0              ldi R23,0
 0512 50933900          sts _T0+11+1,R21
 0516 40933800          sts _T0+11,R20
 051A 70933B00          sts _T0+11+2+1,R23
 051E 60933A00          sts _T0+11+2,R22
 0522           ;   TCCR0 = 0x00; //stop
 0522 23BE              out 0x33,R2
 0524           ;   ASSR  = 0x08; //set async mode
 0524 88E0              ldi R24,8
 0526 80BF              out 0x30,R24
 0528           L57:
 0528 0E940000          xcall pop_gset2
 052C                   .dbline 0 ; func end
 052C 0895              ret
                        .even
 052E           _T1_init::
 052E 0E940000          xcall push_gset2
 0532           ;   
 0532           ;  // TCCR0 = 0x05; //start timer
 0532           ; }
 0532           ; 
 0532           ; void T1_init(void)
 0532           ; {
 0532           ;   T1.num = 0;
 0532 2224              clr R2
 0534 20921E00          sts _T1,R2
 0538           ;   T1.on = 0;
 0538 20921F00          sts _T1+1,R2
 053C           ;   T1.type = 0;  //类型,reapeat=1  单次=0
 053C 20922000          sts _T1+2,R2
 0540           ;   T1.ticks = 0;  //执行周期
 0540 40E0              ldi R20,0
 0542 50E0              ldi R21,0
 0544 60E0              ldi R22,0
 0546 70E0              ldi R23,0
 0548 50932200          sts _T1+3+1,R21
 054C 40932100          sts _T1+3,R20
 0550 70932400          sts _T1+3+2+1,R23
 0554 60932300          sts _T1+3+2,R22
 0558           ;   T1.tickleft = 0;  //剩余时间,单位为秒
 0558 40E0              ldi R20,0
 055A 50E0              ldi R21,0
 055C 60E0              ldi R22,0
 055E 70E0              ldi R23,0
 0560 50932600          sts _T1+7+1,R21
 0564 40932500          sts _T1+7,R20
 0568 70932800          sts _T1+7+2+1,R23
 056C 60932700          sts _T1+7+2,R22
 0570           ;   T1.adjustedticks = 0;
 0570 40E0              ldi R20,0
 0572 50E0              ldi R21,0
 0574 60E0              ldi R22,0
 0576 70E0              ldi R23,0
 0578 50932A00          sts _T1+11+1,R21
 057C 40932900          sts _T1+11,R20
 0580 70932C00          sts _T1+11+2+1,R23
 0584 60932B00          sts _T1+11+2,R22
 0588           ; 
 0588           ;  TCCR1B = 0x00; //stop
 0588 2EBC              out 0x2e,R2
 058A           ;  //TCNT1H = 0xE3; //setup
 058A           ;  //TCNT1L = 0xE1;
 058A           ;  
 058A           ;  TCCR1A = 0x00;
 058A 2FBC              out 0x2f,R2
 058C           L63:
 058C 0E940000          xcall pop_gset2
 0590                   .dbline 0 ; func end

⌨️ 快捷键说明

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