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

📄 main.lst

📁 这个是个航模产品的锂电测试器
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0518) 				if(out_time>90) out_time --;
    044B E58A      LDI	R24,0x5A
    044C 90200111  LDS	R2,out_time
    044E 1582      CP	R24,R2
    044F F4D8      BCC	0x046B
    0450 2D82      MOV	R24,R2
    0451 5081      SUBI	R24,1
    0452 93800111  STS	out_time,R24
(0519) 			}
(0520) 		}
    0454 C016      RJMP	0x046B
(0521) 		else 		// 长按
(0522) 		{	
(0523) 			key2 = 490;
    0455 EE8A      LDI	R24,0xEA
    0456 E091      LDI	R25,1
    0457 9390010C  STS	key2+1,R25
    0459 9380010B  STS	key2,R24
(0524) 			if(out_time>90) out_time --;
    045B E58A      LDI	R24,0x5A
    045C 90200111  LDS	R2,out_time
    045E 1582      CP	R24,R2
    045F F458      BCC	0x046B
    0460 2D82      MOV	R24,R2
    0461 5081      SUBI	R24,1
    0462 93800111  STS	out_time,R24
(0525) 		}
(0526) 	}
    0464 C006      RJMP	0x046B
(0527) 	else key2 = 0;
    0465 2422      CLR	R2
    0466 2433      CLR	R3
    0467 9230010C  STS	key2+1,R3
    0469 9220010B  STS	key2,R2
    046B 9508      RET
(0528) }
(0529) 
(0530) 
(0531) 
(0532) /*---------------------------------------------------------------
(0533)    			main
(0534) ----------------------------------------------------------------*/
(0535) 
(0536) void main(void)
(0537) {	
(0538) 	init_devices();
_main:
    046C DC20      RCALL	_init_devices
(0539) 			
(0540) 	batt_test();
    046D DDC4      RCALL	_batt_test
    046E C014      RJMP	0x0483
(0541) 		
(0542) 	while(1)
(0543) 	{	
(0544) 		asm("WDR");	
    046F 95A8      WDR
(0545) 		if(flag_2ms)
    0470 9020011B  LDS	R2,flag_2ms
    0472 2022      TST	R2
    0473 F079      BEQ	0x0483
(0546) 		{
(0547) 			flag_2ms = 0;
    0474 2422      CLR	R2
    0475 9220011B  STS	flag_2ms,R2
(0548) 			
(0549) 			led_time ++;
    0477 91800107  LDS	R24,led_time
    0479 5F8F      SUBI	R24,0xFF
    047A 93800107  STS	led_time,R24
(0550) 			if(led_time>=200) led_time = 0;
    047C 3C88      CPI	R24,0xC8
    047D F010      BCS	0x0480
    047E 92200107  STS	led_time,R2
(0551) 
(0552) 			ADC_count();
    0480 DD56      RCALL	_ADC_count
(0553) 			LED_display();
    0481 DDD9      RCALL	_LED_display
(0554) 			key_scan();
    0482 DF26      RCALL	_key_scan
    0483 CFEB      RJMP	0x046F
    0484 9508      RET
_timer0_ovf_isr:
    0485 922A      ST	R2,-Y
    0486 923A      ST	R3,-Y
    0487 938A      ST	R24,-Y
    0488 939A      ST	R25,-Y
    0489 93EA      ST	R30,-Y
    048A B62F      IN	R2,0x3F
    048B 922A      ST	R2,-Y
(0555) 			
(0556) 		}
(0557) 	}
(0558) }
(0559) 
(0560) 
(0561) /*---------------------------------------------------------------
(0562)    			timer0 2ms 中断
(0563) ----------------------------------------------------------------*/
(0564) 
(0565) #pragma interrupt_handler timer0_ovf_isr:17
(0566) void timer0_ovf_isr(void)
(0567) {
(0568)  	TCNT0 = 0x04; 	// reload counter value
    048C E084      LDI	R24,4
    048D BD86      OUT	0x26,R24
(0569)  	
(0570)  	flag_2ms = 1;
    048E E081      LDI	R24,1
    048F 9380011B  STS	flag_2ms,R24
(0571)  	
(0572)  	batt_num ++;
    0491 91800113  LDS	R24,batt_num
    0493 91900114  LDS	R25,batt_num+1
    0495 9601      ADIW	R24,1
    0496 93900114  STS	batt_num+1,R25
    0498 93800113  STS	batt_num,R24
(0573)  	if(batt==2)
    049A 91800116  LDS	R24,batt
    049C 3082      CPI	R24,2
    049D F479      BNE	0x04AD
(0574)  	{
(0575)  		if(batt_num>=2000) batt_num = 0;
    049E 91800113  LDS	R24,batt_num
    04A0 91900114  LDS	R25,batt_num+1
    04A2 3D80      CPI	R24,0xD0
    04A3 E0E7      LDI	R30,7
    04A4 079E      CPC	R25,R30
    04A5 F160      BCS	0x04D2
    04A6 2422      CLR	R2
    04A7 2433      CLR	R3
    04A8 92300114  STS	batt_num+1,R3
    04AA 92200113  STS	batt_num,R2
(0576)  	}
    04AC C025      RJMP	0x04D2
(0577)  	else if(batt==3)
    04AD 91800116  LDS	R24,batt
    04AF 3083      CPI	R24,3
    04B0 F479      BNE	0x04C0
(0578)  	{
(0579)  		if(batt_num>=3000) batt_num = 0;
    04B1 91800113  LDS	R24,batt_num
    04B3 91900114  LDS	R25,batt_num+1
    04B5 3B88      CPI	R24,0xB8
    04B6 E0EB      LDI	R30,0xB
    04B7 079E      CPC	R25,R30
    04B8 F0C8      BCS	0x04D2
    04B9 2422      CLR	R2
    04BA 2433      CLR	R3
    04BB 92300114  STS	batt_num+1,R3
    04BD 92200113  STS	batt_num,R2
(0580)  	}
    04BF C012      RJMP	0x04D2
(0581)  	else if(batt==4)
    04C0 91800116  LDS	R24,batt
    04C2 3084      CPI	R24,4
    04C3 F471      BNE	0x04D2
(0582)  	{
(0583)  		if(batt_num>=4000) batt_num = 0;
    04C4 91800113  LDS	R24,batt_num
    04C6 91900114  LDS	R25,batt_num+1
    04C8 3A80      CPI	R24,0xA0
    04C9 E0EF      LDI	R30,0xF
    04CA 079E      CPC	R25,R30
    04CB F030      BCS	0x04D2
    04CC 2422      CLR	R2
    04CD 2433      CLR	R3
    04CE 92300114  STS	batt_num+1,R3
    04D0 92200113  STS	batt_num,R2
(0584)  	}
(0585)  		
(0586)  	if(mode==1||mode==2)
    04D2 91800112  LDS	R24,mode
    04D4 3081      CPI	R24,1
    04D5 F019      BEQ	0x04D9
    04D6 3082      CPI	R24,2
    04D7 F009      BEQ	0x04D9
    04D8 C050      RJMP	0x0529
(0587)  	{
(0588)  		flag_20ms ++;
    04D9 9180011A  LDS	R24,flag_20ms
    04DB 5F8F      SUBI	R24,0xFF
    04DC 9380011A  STS	flag_20ms,R24
(0589) 		if(flag_20ms>=10)
    04DE 308A      CPI	R24,0xA
    04DF F408      BCC	0x04E1
    04E0 C048      RJMP	0x0529
(0590) 		{
(0591) 	  		flag_20ms = 0;
    04E1 2422      CLR	R2
    04E2 9220011A  STS	flag_20ms,R2
(0592) 	   
(0593) 	 		TCNT1	= 0xFD00;	//预留512条指令时间
    04E4 E080      LDI	R24,0
    04E5 EF9D      LDI	R25,0xFD
    04E6 93900085  STS	0x85,R25
    04E8 93800084  STS	0x84,R24
(0594) 	    	TCCR1B	= 0x01;		//启动time1产生脉冲串	
    04EA E081      LDI	R24,1
    04EB 93800081  STS	0x81,R24
(0595) 	    	pulse   = 0;
    04ED 9220010A  STS	pulse,R2
(0596) 	    	
(0597) 	    	if(delay<100) delay ++;
    04EF 91800108  LDS	R24,delay
    04F1 3684      CPI	R24,0x64
    04F2 F418      BCC	0x04F6
    04F3 5F8F      SUBI	R24,0xFF
    04F4 93800108  STS	delay,R24
(0598) 	    	
(0599) 	    	if(mode==2)
    04F6 91800112  LDS	R24,mode
    04F8 3082      CPI	R24,2
    04F9 F579      BNE	0x0529
(0600) 	    	{
(0601) 	    		if(!down)
    04FA 90200109  LDS	R2,down
    04FC 2022      TST	R2
    04FD F4B1      BNE	0x0514
(0602) 	    		{
(0603) 	    			if(out_time<210) 
    04FE 91800111  LDS	R24,out_time
    0500 3D82      CPI	R24,0xD2
    0501 F458      BCC	0x050D
(0604) 	    			{
(0605) 	    				if(delay>30) out_time ++;
    0502 E18E      LDI	R24,0x1E
    0503 90200108  LDS	R2,delay
    0505 1582      CP	R24,R2
    0506 F510      BCC	0x0529
    0507 91800111  LDS	R24,out_time
    0509 5F8F      SUBI	R24,0xFF
    050A 93800111  STS	out_time,R24
(0606) 	    			}
    050C C01C      RJMP	0x0529
(0607) 	    			else  
(0608) 	    			{
(0609) 	    				down  = 1;
    050D E081      LDI	R24,1
    050E 93800109  STS	down,R24
(0610) 	    				delay = 0;
    0510 2422      CLR	R2
    0511 92200108  STS	delay,R2
(0611) 	    			}
(0612) 	    		}
    0513 C015      RJMP	0x0529
(0613) 	    		else 
(0614) 	    		{
(0615) 	    			if(out_time>90) 
    0514 E58A      LDI	R24,0x5A
    0515 90200111  LDS	R2,out_time
    0517 1582      CP	R24,R2
    0518 F458      BCC	0x0524
(0616) 	    			{
(0617) 	    				if(delay>30) out_time --;
    0519 E18E      LDI	R24,0x1E
    051A 90200108  LDS	R2,delay
    051C 1582      CP	R24,R2
    051D F458      BCC	0x0529
    051E 91800111  LDS	R24,out_time
    0520 5081      SUBI	R24,1
    0521 93800111  STS	out_time,R24
(0618) 	    			}
    0523 C005      RJMP	0x0529
(0619) 	    			else 
(0620) 	    			{
(0621) 	    				down  = 0;
    0524 2422      CLR	R2
    0525 92200109  STS	down,R2
(0622) 	    				delay = 0;
    0527 92200108  STS	delay,R2
(0623) 	    			}
(0624) 	    		}
(0625) 	    	}
(0626) 		}
(0627) 	}
    0529 9029      LD	R2,Y+
    052A BE2F      OUT	0x3F,R2
    052B 91E9      LD	R30,Y+
    052C 9199      LD	R25,Y+
    052D 9189      LD	R24,Y+
    052E 9039      LD	R3,Y+
    052F 9029      LD	R2,Y+
    0530 9518      RETI
_timer1_ovf_isr:
    0531 920A      ST	R0,-Y
    0532 921A      ST	R1,-Y
    0533 922A      ST	R2,-Y
    0534 938A      ST	R24,-Y
    0535 939A      ST	R25,-Y
    0536 B60F      IN	R0,0x3F
    0537 920A      ST	R0,-Y
(0628) }
(0629) 
(0630) /*---------------------------------------------------------------
(0631)    			T1 产生各通道的脉宽
(0632) ----------------------------------------------------------------*/
(0633) 
(0634) #pragma interrupt_handler timer1_ovf_isr:14
(0635) void timer1_ovf_isr(void)	
(0636) {
(0637) 	if(!pulse)
    0538 9020010A  LDS	R2,pulse
    053A 2022      TST	R2
    053B F489      BNE	0x054D
(0638) 	{
(0639) 		pulse  = 1;
    053C E081      LDI	R24,1
    053D 9380010A  STS	pulse,R24
(0640) 		TCNT1  = 0xffff - out_time*80;
    053F 90200111  LDS	R2,out_time
    0541 E580      LDI	R24,0x50
    0542 9D82      MUL	R24,R2
    0543 EF8F      LDI	R24,0xFF
    0544 EF9F      LDI	R25,0xFF
    0545 1980      SUB	R24,R0
    0546 0991      SBC	R25,R1
    0547 93900085  STS	0x85,R25
    0549 93800084  STS	0x84,R24
(0641) 		SET_OUT;
    054B 9A5A      SBI	0x0B,2
(0642) 	}
    054C C004      RJMP	0x0551
(0643) 	else 
(0644) 	{
(0645) 		CLR_OUT;
    054D 985A      CBI	0x0B,2
(0646) 		TCCR1B = 0;		// STOP T1
    054E 2422      CLR	R2
    054F 92200081  STS	0x81,R2
(0647) 	}
    0551 9009      LD	R0,Y+
    0552 BE0F      OUT	0x3F,R0
    0553 9199      LD	R25,Y+
    0554 9189      LD	R24,Y+
    0555 9029      LD	R2,Y+
    0556 9019      LD	R1,Y+
    0557 9009      LD	R0,Y+
    0558 9518      RETI
_int0_isr:
    0559 922A      ST	R2,-Y
    055A 938A      ST	R24,-Y
    055B B62F      IN	R2,0x3F
    055C 922A      ST	R2,-Y
(0648) }
(0649) 
(0650) /****************************************************************
(0651) 		INT0 interrupt
(0652) /****************************************************************/
(0653) 
(0654) #pragma interrupt_handler int0_isr:2
(0655) void int0_isr(void)
(0656) {
(0657) 	if(EICRA==0x03)
    055D 91800069  LDS	R24,0x69
    055F 3083      CPI	R24,3
    0560 F459      BNE	0x056C
(0658) 	{
(0659) 		TCNT1H = 0x00; 
    0561 2422      CLR	R2
    0562 92200085  STS	0x85,R2
(0660)  		TCNT1L = 0x00; 
    0564 92200084  STS	0x84,R2
(0661)  		TCCR1B = 0x02;  //start Timer1
    0566 E082      LDI	R24,2
    0567 93800081  STS	0x81,R24
(0662)  		
(0663)  		EICRA  = 0x02;
    0569 93800069  STS	0x69,R24
(0664) 	}
    056B C012      RJMP	0x057E
(0665) 	else if(EICRA==0x02)
    056C 91800069  LDS	R24,0x69
    056E 3082      CPI	R24,2
    056F F471      BNE	0x057E
(0666) 	{
(0667) 		CH.data[0] = TCNT1L;
    0570 90200084  LDS	R2,0x84
    0572 92200124  STS	CH,R2
(0668) 		CH.data[1] = TCNT1H;
    0574 90200085  LDS	R2,0x85
    0576 92200125  STS	CH+1,R2
(0669) 	
(0670) 		TCCR1B = 0x00;  //start Timer1
    0578 2422      CLR	R2
    0579 92200081  STS	0x81,R2
(0671) 		EICRA  = 0x03;
    057B E083      LDI	R24,3
    057C 93800069  STS	0x69,R24
(0672) 	}
FILE: <library>
    057E 9029      LD	R2,Y+
    057F BE2F      OUT	0x3F,R2
    0580 9189      LD	R24,Y+
    0581 9029      LD	R2,Y+
    0582 9518      RETI
push_arg4:
    0583 933A      ST	R19,-Y
    0584 932A      ST	R18,-Y
push_arg2:
    0585 931A      ST	R17,-Y
    0586 930A      ST	R16,-Y
    0587 9508      RET
mod16u:
    0588 9468      BSET	6
    0589 C001      RJMP	xdiv16u
div16u:
    058A 94E8      BCLR	6
xdiv16u:
    058B 92EA      ST	R14,-Y
    058C 92FA      ST	R15,-Y
    058D 938A      ST	R24,-Y
    058E 24EE      CLR	R14
    058F 24FF      CLR	R15
    0590 E180      LDI	R24,0x10
    0591 0F00      LSL	R16
    0592 1F11      ROL	R17
    0593 1CEE      ROL	R14
    0594 1CFF      ROL	R15
    0595 16E2      CP	R14,R18
    0596 06F3      CPC	R15,R19
    0597 F018      BCS	0x059B
    0598 1AE2      SUB	R14,R18
    0599 0AF3      SBC	R15,R19
    059A 9503      INC	R16
    059B 958A      DEC	R24
    059C F7A1      BNE	0x0591
    059D F416      BRTC	0x05A0
    059E 2D0E      MOV	R16,R14
    059F 2D1F      MOV	R17,R15
    05A0 9189      LD	R24,Y+
    05A1 90F9      LD	R15,Y+
    05A2 90E9      LD	R14,Y+
    05A3 9508      RET
empy16s:
    05A4 920A      ST	R0,-Y
    05A5 921A      ST	R1,-Y
    05A6 938A      ST	R24,-Y
    05A7 939A      ST	R25,-Y
    05A8 9F02      MUL	R16,R18
    05A9 01C0      MOVW	R24,R0
    05AA 9F12      MUL	R17,R18
    05AB 0D90      ADD	R25,R0
    05AC 9F03      MUL	R16,R19
    05AD 0D90      ADD	R25,R0
    05AE 018C      MOVW	R16,R24
    05AF 9199      LD	R25,Y+
    05B0 9189      LD	R24,Y+
    05B1 9019      LD	R1,Y+
    05B2 9009      LD	R0,Y+
    05B3 9508      RET
pop_gset3:
    05B4 E0E4      LDI	R30,4
    05B5 C00E      RJMP	pop
pop_gset5:
    05B6 27EE      CLR	R30
    05B7 C00C      RJMP	pop
push_gset5:
    05B8 92FA      ST	R15,-Y
    05B9 92EA      ST	R14,-Y
push_gset4:
    05BA 92DA      ST	R13,-Y
    05BB 92CA      ST	R12,-Y
push_gset3:
    05BC 92BA      ST	R11,-Y
    05BD 92AA      ST	R10,-Y
push_gset2:
    05BE 937A      ST	R23,-Y
    05BF 936A      ST	R22,-Y
push_gset1:
    05C0 935A      ST	R21,-Y
    05C1 934A      ST	R20,-Y
    05C2 9508      RET
pop_gset1:
    05C3 E0E1      LDI	R30,1
pop:
    05C4 9149      LD	R20,Y+
    05C5 9159      LD	R21,Y+
    05C6 FDE0      SBRC	R30,0
    05C7 9508      RET
    05C8 9169      LD	R22,Y+
    05C9 9179      LD	R23,Y+
    05CA FDE1      SBRC	R30,1
    05CB 9508      RET
    05CC 90A9      LD	R10,Y+
    05CD 90B9      LD	R11,Y+
    05CE FDE2      SBRC	R30,2
    05CF 9508      RET
    05D0 90C9      LD	R12,Y+
    05D1 90D9      LD	R13,Y+
    05D2 FDE3      SBRC	R30,3
    05D3 9508      RET
    05D4 90E9      LD	R14,Y+
    05D5 90F9      LD	R15,Y+
    05D6 9508      RET

⌨️ 快捷键说明

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