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

📄 timer.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 024E 8EBD              out 0x2e,R24
 0250           ;    TIMSK |= 0x04;
 0250 87B7              in R24,0x37
 0252 8460              ori R24,4
 0254 87BF              out 0x37,R24
 0256           ;    T1.on=1;
 0256 81E0              ldi R24,1
 0258 80931F00          sts _T1+1,R24
 025C           L17:
 025C 0E940000          xcall pop_gset4
 0260                   .dbline 0 ; func end
 0260 0895              ret
                        .even
 0262           _stop_T1::
 0262           ;  
 0262           ;    // led1On();
 0262           ; }
 0262           ; void stop_T1(void)
 0262           ; {
 0262           ;    TCCR1B = 0x0;
 0262 2224              clr R2
 0264 2EBC              out 0x2e,R2
 0266           ;    TIMSK &=~(0x04);
 0266 87B7              in R24,0x37
 0268 8B7F              andi R24,251
 026A 87BF              out 0x37,R24
 026C           ;     T1.on=0;
 026C 20921F00          sts _T1+1,R2
 0270           L31:
 0270                   .dbline 0 ; func end
 0270 0895              ret
 0272           ;        t_count -> R10
 0272           ;          count -> R10,R11
 0272           ;           type -> R12
                        .even
 0272           _start_T2::
 0272 0E940000          xcall push_gset4
 0276 5901              movw R10,R18
 0278 C02E              mov R12,R16
 027A           ; }
 027A           ; //Timer2
 027A           ; void start_T2(char type, unsigned int count)
 027A           ; {
 027A           ;   //1024分频,最大35ms
 027A           ;    unsigned char t_count; 
 027A           ;  
 027A           ;    if (type==1)
 027A 8C2D              mov R24,R12
 027C 8130              cpi R24,1
 027E 21F4              brne L34
 0280           ;       T2.type = 1;
 0280 81E0              ldi R24,1
 0282 80931100          sts _T2+2,R24
 0286 03C0              xjmp L35
 0288           L34:
 0288           ;    else 
 0288           ;       T2.type = 0; 
 0288 2224              clr R2
 028A 20921100          sts _T2+2,R2
 028E           L35:
 028E           ;    T2.ticks = count;
 028E 1501              movw R2,R10
 0290 4424              clr R4
 0292 5524              clr R5
 0294 30921300          sts _T2+3+1,R3
 0298 20921200          sts _T2+3,R2
 029C 50921500          sts _T2+3+2+1,R5
 02A0 40921400          sts _T2+3+2,R4
 02A4           ;    T2.tickleft = count;
 02A4 4424              clr R4
 02A6 5524              clr R5
 02A8 30921700          sts _T2+7+1,R3
 02AC 20921600          sts _T2+7,R2
 02B0 50921900          sts _T2+7+2+1,R5
 02B4 40921800          sts _T2+7+2,R4
 02B8           ;    if (T2.tickleft > 35)
 02B8 43E2              ldi R20,35
 02BA 50E0              ldi R21,0
 02BC 60E0              ldi R22,0
 02BE 70E0              ldi R23,0
 02C0 40901800          lds R4,_T2+7+2
 02C4 50901900          lds R5,_T2+7+2+1
 02C8 20901600          lds R2,_T2+7
 02CC 30901700          lds R3,_T2+7+1
 02D0 4215              cp R20,R2
 02D2 5305              cpc R21,R3
 02D4 6405              cpc R22,R4
 02D6 7505              cpc R23,R5
 02D8 98F4              brsh L40
 02DA           ;    {
 02DA           ;      
 02DA           ;        T2.tickleft -= 35;
 02DA 43E2              ldi R20,35
 02DC 50E0              ldi R21,0
 02DE 60E0              ldi R22,0
 02E0 70E0              ldi R23,0
 02E2 241A              sub R2,R20
 02E4 350A              sbc R3,R21
 02E6 460A              sbc R4,R22
 02E8 570A              sbc R5,R23
 02EA 30921700          sts _T2+7+1,R3
 02EE 20921600          sts _T2+7,R2
 02F2 50921900          sts _T2+7+2+1,R5
 02F6 40921800          sts _T2+7+2,R4
 02FA           ;      TCNT2 = 0x0; //setup
 02FA 2224              clr R2
 02FC 24BC              out 0x24,R2
 02FE           ;    }
 02FE 3DC0              xjmp L41
 0300           L40:
 0300           ;    else
 0300           ;    {
 0300           ;       
 0300           ;      t_count = T2.tickleft*72/10 -1; 
 0300 40901800          lds R4,_T2+7+2
 0304 50901900          lds R5,_T2+7+2+1
 0308 20901600          lds R2,_T2+7
 030C 30901700          lds R3,_T2+7+1
 0310 48E4              ldi R20,72
 0312 50E0              ldi R21,0
 0314 60E0              ldi R22,0
 0316 70E0              ldi R23,0
 0318 5A92              st -y,R5
 031A 4A92              st -y,R4
 031C 3A92              st -y,R3
 031E 2A92              st -y,R2
 0320 8A01              movw R16,R20
 0322 9B01              movw R18,R22
 0324 0E940000          xcall empy32u
 0328 4AE0              ldi R20,10
 032A 50E0              ldi R21,0
 032C 60E0              ldi R22,0
 032E 70E0              ldi R23,0
 0330 7A93              st -y,R23
 0332 6A93              st -y,R22
 0334 5A93              st -y,R21
 0336 4A93              st -y,R20
 0338 0E940000          xcall div32u
 033C 1801              movw R2,R16
 033E 2901              movw R4,R18
 0340 41E0              ldi R20,1
 0342 50E0              ldi R21,0
 0344 60E0              ldi R22,0
 0346 70E0              ldi R23,0
 0348 241A              sub R2,R20
 034A 350A              sbc R3,R21
 034C 460A              sbc R4,R22
 034E 570A              sbc R5,R23
 0350 A22C              mov R10,R2
 0352           ;        T2.tickleft =0;
 0352 40E0              ldi R20,0
 0354 50E0              ldi R21,0
 0356 60E0              ldi R22,0
 0358 70E0              ldi R23,0
 035A 50931700          sts _T2+7+1,R21
 035E 40931600          sts _T2+7,R20
 0362 70931900          sts _T2+7+2+1,R23
 0366 60931800          sts _T2+7+2,R22
 036A           ; 
 036A           ;      TCNT2 = 0xff - (t_count & 0xff); //setup
 036A 822D              mov R24,R2
 036C 9927              clr R25
 036E 9070              andi R25,0
 0370 EFEF              ldi R30,255
 0372 F0E0              ldi R31,0
 0374 E81B              sub R30,R24
 0376 F90B              sbc R31,R25
 0378 E4BD              out 0x24,R30
 037A           ;      
 037A           ;    }
 037A           L41:
 037A           ;    
 037A           ;    TCCR2 = 0x05; //start timer
 037A 85E0              ldi R24,5
 037C 85BD              out 0x25,R24
 037E           ;    TIMSK |= 0x40;
 037E 87B7              in R24,0x37
 0380 8064              ori R24,64
 0382 87BF              out 0x37,R24
 0384           ;    T2.on=1;
 0384 81E0              ldi R24,1
 0386 80931000          sts _T2+1,R24
 038A           L33:
 038A 0E940000          xcall pop_gset4
 038E                   .dbline 0 ; func end
 038E 0895              ret
                        .even
 0390           _stop_T2::
 0390           ; 
 0390           ; }
 0390           ; void stop_T2(void)
 0390           ; {
 0390           ;   TCCR2 = 0x0;
 0390 2224              clr R2
 0392 25BC              out 0x25,R2
 0394           ;   TIMSK &= ~0x40;
 0394 87B7              in R24,0x37
 0396 8F7B              andi R24,191
 0398 87BF              out 0x37,R24
 039A           ;    T2.on=0;
 039A 20921000          sts _T2+1,R2
 039E           L47:
 039E                   .dbline 0 ; func end
 039E 0895              ret
 03A0           ;        t_count -> R10,R11
 03A0           ;          count -> R10,R11
 03A0           ;           type -> R12
                        .even
 03A0           _start_T3::
 03A0 0E940000          xcall push_gset4
 03A4 5901              movw R10,R18
 03A6 C02E              mov R12,R16
 03A8           ; }
 03A8           ; //Timer3
 03A8           ; void start_T3(char type, unsigned int count)
 03A8           ; {
 03A8           ; 
 03A8           ;    unsigned int t_count; 
 03A8           ;  
 03A8           ;    if (type==1)
 03A8 8C2D              mov R24,R12
 03AA 8130              cpi R24,1
 03AC 21F4              brne L50
 03AE           ;       T3.type = 1;
 03AE 81E0              ldi R24,1
 03B0 80930200          sts _T3+2,R24
 03B4 03C0              xjmp L51
 03B6           L50:
 03B6           ;    else 
 03B6           ;       T3.type = 0; 
 03B6 2224              clr R2
 03B8 20920200          sts _T3+2,R2
 03BC           L51:
 03BC           ;    T3.ticks = count;
 03BC 1501              movw R2,R10
 03BE 4424              clr R4
 03C0 5524              clr R5
 03C2 30920400          sts _T3+3+1,R3
 03C6 20920300          sts _T3+3,R2
 03CA 50920600          sts _T3+3+2+1,R5
 03CE 40920500          sts _T3+3+2,R4
 03D2           ;    T3.tickleft = count;
 03D2 4424              clr R4
 03D4 5524              clr R5
 03D6 30920800          sts _T3+7+1,R3
 03DA 20920700          sts _T3+7,R2
 03DE 50920A00          sts _T3+7+2+1,R5
 03E2 40920900          sts _T3+7+2,R4
 03E6           ;    if (T3.tickleft > 9000)
 03E6 48E2              ldi R20,40
 03E8 53E2              ldi R21,35
 03EA 60E0              ldi R22,0
 03EC 70E0              ldi R23,0
 03EE 40900900          lds R4,_T3+7+2
 03F2 50900A00          lds R5,_T3+7+2+1
 03F6 20900700          lds R2,_T3+7
 03FA 30900800          lds R3,_T3+7+1
 03FE 4215              cp R20,R2
 0400 5305              cpc R21,R3
 0402 6405              cpc R22,R4
 0404 7505              cpc R23,R5
 0406 B0F4              brsh L56
 0408           ;    {
 0408           ;      
 0408           ;        T3.tickleft -= 9000;
 0408 48E2              ldi R20,40
 040A 53E2              ldi R21,35
 040C 60E0              ldi R22,0
 040E 70E0              ldi R23,0
 0410 241A              sub R2,R20
 0412 350A              sbc R3,R21
 0414 460A              sbc R4,R22
 0416 570A              sbc R5,R23
 0418 30920800          sts _T3+7+1,R3
 041C 20920700          sts _T3+7,R2
 0420 50920A00          sts _T3+7+2+1,R5
 0424 40920900          sts _T3+7+2,R4
 0428           ;      TCNT3H = 0x0; //setup
 0428 2224              clr R2
 042A 20928900          sts 137,R2
 042E           ;      TCNT3L = 0x0;
 042E 20928800          sts 136,R2
 0432           ;    }
 0432 47C0              xjmp L57
 0434           L56:
 0434           ;    else
 0434           ;    {
 0434           ;       
 0434           ;      t_count = T3.tickleft*72/10 -1; 
 0434 40900900          lds R4,_T3+7+2
 0438 50900A00          lds R5,_T3+7+2+1
 043C 20900700          lds R2,_T3+7
 0440 30900800          lds R3,_T3+7+1
 0444 48E4              ldi R20,72
 0446 50E0              ldi R21,0
 0448 60E0              ldi R22,0
 044A 70E0              ldi R23,0
 044C 5A92              st -y,R5
 044E 4A92              st -y,R4
 0450 3A92              st -y,R3
 0452 2A92              st -y,R2
 0454 8A01              movw R16,R20
 0456 9B01              movw R18,R22
 0458 0E940000          xcall empy32u
 045C 4AE0              ldi R20,10
 045E 50E0              ldi R21,0
 0460 60E0              ldi R22,0
 0462 70E0              ldi R23,0
 0464 7A93              st -y,R23
 0466 6A93              st -y,R22
 0468 5A93              st -y,R21
 046A 4A93              st -y,R20
 046C 0E940000          xcall div32u
 0470 1801              movw R2,R16
 0472 2901              movw R4,R18
 0474 41E0              ldi R20,1
 0476 50E0              ldi R21,0
 0478 60E0              ldi R22,0
 047A 70E0              ldi R23,0
 047C 241A              sub R2,R20
 047E 350A              sbc R3,R21
 0480 460A              sbc R4,R22
 0482 570A              sbc R5,R23
 0484 5101              movw R10,R2
 0486           ;        T3.tickleft =0;
 0486 40E0              ldi R20,0
 0488 50E0              ldi R21,0
 048A 60E0              ldi R22,0
 048C 70E0              ldi R23,0
 048E 50930800          sts _T3+7+1,R21
 0492 40930700          sts _T3+7,R20
 0496 70930A00          sts _T3+7+2+1,R23
 049A 60930900          sts _T3+7+2,R22
 049E           ; 
 049E           ;      TCNT3H = 0xff - ((t_count>>8) & 0xff); //setup
 049E C101              movw R24,R2
 04A0 892F              mov R24,R25
 04A2 9927              clr R25
 04A4 9070              andi R25,0
 04A6 EFEF              ldi R30,255
 04A8 F0E0              ldi R31,0
 04AA E81B              sub R30,R24
 04AC F90B              sbc R31,R25
 04AE E0938900          sts 137,R30
 04B2           ;      TCNT3L = 0xff - (t_count & 0xff);
 04B2 C101              movw R24,R2
 04B4 9070              andi R25,0
 04B6 EFEF              ldi R30,255
 04B8 F0E0              ldi R31,0
 04BA E81B              sub R30,R24
 04BC F90B              sbc R31,R25
 04BE E0938800          sts 136,R30
 04C2           ;    }
 04C2           L57:
 04C2           ;    
 04C2           ;    TCCR3B = 0x05; //1024分频 
 04C2 85E0              ldi R24,5
 04C4 80938A00          sts 138,R24

⌨️ 快捷键说明

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