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

📄 main.lst

📁 这个是个航模产品的锂电测试器
💻 LST
📖 第 1 页 / 共 4 页
字号:
    02C8 F560      BCC	0x02F5
    02C9 EB88      LDI	R24,0xB8
    02CA E09B      LDI	R25,0xB
    02CB 1582      CP	R24,R2
    02CC 0593      CPC	R25,R3
    02CD F138      BCS	0x02F5
(0340) 		{
(0341) 			temp   = V[2]-V[1];
    02CE 9020011E  LDS	R2,V+2
    02D0 9030011F  LDS	R3,V+3
    02D2 91400120  LDS	R20,0x120
    02D4 91500121  LDS	R21,0x121
    02D6 1942      SUB	R20,R2
    02D7 0953      SBC	R21,R3
(0342) 			if(temp<101) flas3 = 1;
    02D8 3645      CPI	R20,0x65
    02D9 E0E0      LDI	R30,0
    02DA 075E      CPC	R21,R30
    02DB F420      BCC	0x02E0
    02DC E081      LDI	R24,1
    02DD 93800103  STS	flas3,R24
    02DF C003      RJMP	0x02E3
(0343) 			else flas3 = 0;
    02E0 2422      CLR	R2
    02E1 92200103  STS	flas3,R2
(0344) 						
(0345) 			if(led_time<80 && flas3)
    02E3 91800107  LDS	R24,led_time
    02E5 3580      CPI	R24,0x50
    02E6 F448      BCC	0x02F0
    02E7 90200103  LDS	R2,flas3
    02E9 2022      TST	R2
    02EA F029      BEQ	0x02F0
(0346) 			{
(0347) 				CLR_LED1;
    02EB 985C      CBI	0x0B,4
(0348) 				CLR_LED2;
    02EC 985B      CBI	0x0B,3
(0349) 				CLR_LED3;
    02ED 9859      CBI	0x0B,1
(0350) 				CLR_LED4;
    02EE 9858      CBI	0x0B,0
(0351) 			}
    02EF C034      RJMP	0x0324
(0352) 			else 
(0353) 			{
(0354) 				CLR_LED1;
    02F0 985C      CBI	0x0B,4
(0355) 				CLR_LED2;
    02F1 985B      CBI	0x0B,3
(0356) 				SET_LED3;
    02F2 9A59      SBI	0x0B,1
(0357) 				CLR_LED4;
    02F3 9858      CBI	0x0B,0
(0358) 			}
(0359) 			
(0360) 		}
    02F4 C02F      RJMP	0x0324
(0361) 		else if(batt_num>3000)
    02F5 EB88      LDI	R24,0xB8
    02F6 E09B      LDI	R25,0xB
    02F7 90200113  LDS	R2,batt_num
    02F9 90300114  LDS	R3,batt_num+1
    02FB 1582      CP	R24,R2
    02FC 0593      CPC	R25,R3
    02FD F530      BCC	0x0324
(0362) 		{
(0363) 			temp   = V[3]-V[2];
    02FE 90200120  LDS	R2,0x120
    0300 90300121  LDS	R3,0x121
    0302 91400122  LDS	R20,0x122
    0304 91500123  LDS	R21,0x123
    0306 1942      SUB	R20,R2
    0307 0953      SBC	R21,R3
(0364) 			if(temp<101) flas4 = 1;
    0308 3645      CPI	R20,0x65
    0309 E0E0      LDI	R30,0
    030A 075E      CPC	R21,R30
    030B F420      BCC	0x0310
    030C E081      LDI	R24,1
    030D 93800102  STS	flas4,R24
    030F C003      RJMP	0x0313
(0365) 			else flas4 = 0;
    0310 2422      CLR	R2
    0311 92200102  STS	flas4,R2
(0366) 			
(0367) 			if(led_time<80 && flas4)
    0313 91800107  LDS	R24,led_time
    0315 3580      CPI	R24,0x50
    0316 F448      BCC	0x0320
    0317 90200102  LDS	R2,flas4
    0319 2022      TST	R2
    031A F029      BEQ	0x0320
(0368) 			{
(0369) 				CLR_LED1;
    031B 985C      CBI	0x0B,4
(0370) 				CLR_LED2;
    031C 985B      CBI	0x0B,3
(0371) 				CLR_LED3;
    031D 9859      CBI	0x0B,1
(0372) 				CLR_LED4;
    031E 9858      CBI	0x0B,0
(0373) 			}
    031F C004      RJMP	0x0324
(0374) 			else 
(0375) 			{
(0376) 				CLR_LED1;
    0320 985C      CBI	0x0B,4
(0377) 				CLR_LED2;
    0321 985B      CBI	0x0B,3
(0378) 				CLR_LED3;
    0322 9859      CBI	0x0B,1
(0379) 				SET_LED4;
    0323 9A58      SBI	0x0B,0
(0380) 			}
(0381) 			
(0382) 		}
(0383) 		
(0384) 		temp = ((temp*125)/256)*5;
    0324 E70D      LDI	R16,0x7D
    0325 E010      LDI	R17,0
    0326 019A      MOVW	R18,R20
    0327 D27C      RCALL	empy16s
    0328 0198      MOVW	R18,R16
    0329 2F23      MOV	R18,R19
    032A 2733      CLR	R19
    032B E005      LDI	R16,5
    032C E010      LDI	R17,0
    032D D276      RCALL	empy16s
    032E 01A8      MOVW	R20,R16
(0385) 	
(0386) 	}
    032F C02A      RJMP	0x035A
(0387) 	else if(mode==1)
    0330 91800112  LDS	R24,mode
    0332 3081      CPI	R24,1
    0333 F441      BNE	0x033C
(0388) 	{
(0389) 		SET_LED1;
    0334 9A5C      SBI	0x0B,4
(0390) 		SET_LED2;
    0335 9A5B      SBI	0x0B,3
(0391) 		CLR_LED3;
    0336 9859      CBI	0x0B,1
(0392) 		CLR_LED4;
    0337 9858      CBI	0x0B,0
(0393) 		temp = out_time;
    0338 91400111  LDS	R20,out_time
    033A 2755      CLR	R21
(0394) 	}
    033B C01E      RJMP	0x035A
(0395) 	else if(mode==2)
    033C 91800112  LDS	R24,mode
    033E 3082      CPI	R24,2
    033F F441      BNE	0x0348
(0396) 	{
(0397) 		SET_LED1;
    0340 9A5C      SBI	0x0B,4
(0398) 		SET_LED2;
    0341 9A5B      SBI	0x0B,3
(0399) 		SET_LED3;
    0342 9A59      SBI	0x0B,1
(0400) 		CLR_LED4;
    0343 9858      CBI	0x0B,0
(0401) 		temp = out_time;
    0344 91400111  LDS	R20,out_time
    0346 2755      CLR	R21
(0402) 	}
    0347 C012      RJMP	0x035A
(0403) 	else if(mode==3)
    0348 91800112  LDS	R24,mode
    034A 3083      CPI	R24,3
    034B F471      BNE	0x035A
(0404) 	{
(0405) 		SET_LED1;
    034C 9A5C      SBI	0x0B,4
(0406) 		SET_LED2;
    034D 9A5B      SBI	0x0B,3
(0407) 		SET_LED3;
    034E 9A59      SBI	0x0B,1
(0408) 		SET_LED4;
    034F 9A58      SBI	0x0B,0
(0409) 		temp = (CH.temp+5)/10;
    0350 E02A      LDI	R18,0xA
    0351 E030      LDI	R19,0
    0352 91000124  LDS	R16,CH
    0354 91100125  LDS	R17,CH+1
    0356 5F0B      SUBI	R16,0xFB
    0357 4F1F      SBCI	R17,0xFF
    0358 D231      RCALL	div16u
    0359 01A8      MOVW	R20,R16
(0410) 	}
(0411) 	
(0412) 	h = temp/100;
    035A E624      LDI	R18,0x64
    035B E030      LDI	R19,0
    035C 018A      MOVW	R16,R20
    035D D22C      RCALL	div16u
    035E 2EA0      MOV	R10,R16
(0413) 	m = temp%100/10;
    035F E624      LDI	R18,0x64
    0360 E030      LDI	R19,0
    0361 018A      MOVW	R16,R20
    0362 D225      RCALL	mod16u
    0363 E02A      LDI	R18,0xA
    0364 E030      LDI	R19,0
    0365 D224      RCALL	div16u
    0366 2F60      MOV	R22,R16
(0414) 	l = temp%100%10;
    0367 E624      LDI	R18,0x64
    0368 E030      LDI	R19,0
    0369 018A      MOVW	R16,R20
    036A D21D      RCALL	mod16u
    036B E02A      LDI	R18,0xA
    036C E030      LDI	R19,0
    036D D21A      RCALL	mod16u
    036E 2F40      MOV	R20,R16
(0415) 	
(0416) 	dip_bit ++;
    036F 91800115  LDS	R24,dip_bit
    0371 5F8F      SUBI	R24,0xFF
    0372 93800115  STS	dip_bit,R24
(0417) 	
(0418) 	if(dip_bit==2)
    0374 3082      CPI	R24,2
    0375 F479      BNE	0x0385
(0419) 	{
(0420) 		SET_COM1;
    0376 9A5F      SBI	0x0B,7
(0421) 		CLR_COM2;
    0377 985E      CBI	0x0B,6
(0422) 		CLR_COM3;
    0378 985D      CBI	0x0B,5
(0423) 		PORTB = Char_tab[h] | dp;
    0379 E384      LDI	R24,0x34
    037A E090      LDI	R25,0
    037B 2DEA      MOV	R30,R10
    037C 27FF      CLR	R31
    037D 0FE8      ADD	R30,R24
    037E 1FF9      ADC	R31,R25
    037F 91E4      LPM	R30,0(Z)
    0380 90200101  LDS	R2,dp
    0382 29E2      OR	R30,R2
    0383 B9E5      OUT	0x05,R30
(0424) 	}	
    0384 C022      RJMP	0x03A7
(0425) 	else if(dip_bit==4)
    0385 91800115  LDS	R24,dip_bit
    0387 3084      CPI	R24,4
    0388 F461      BNE	0x0395
(0426) 	{
(0427) 		CLR_COM1;
    0389 985F      CBI	0x0B,7
(0428) 		SET_COM2;
    038A 9A5E      SBI	0x0B,6
(0429) 		CLR_COM3;
    038B 985D      CBI	0x0B,5
(0430) 		PORTB = Char_tab[m];
    038C E384      LDI	R24,0x34
    038D E090      LDI	R25,0
    038E 2FE6      MOV	R30,R22
    038F 27FF      CLR	R31
    0390 0FE8      ADD	R30,R24
    0391 1FF9      ADC	R31,R25
    0392 91E4      LPM	R30,0(Z)
    0393 B9E5      OUT	0x05,R30
(0431) 	}
    0394 C012      RJMP	0x03A7
(0432) 	else if(dip_bit==6)
    0395 91800115  LDS	R24,dip_bit
    0397 3086      CPI	R24,6
    0398 F471      BNE	0x03A7
(0433) 	{
(0434) 		CLR_COM1;
    0399 985F      CBI	0x0B,7
(0435) 		CLR_COM2;
    039A 985E      CBI	0x0B,6
(0436) 		SET_COM3;
    039B 9A5D      SBI	0x0B,5
(0437) 		PORTB = Char_tab[l];
    039C E384      LDI	R24,0x34
    039D E090      LDI	R25,0
    039E 2FE4      MOV	R30,R20
    039F 27FF      CLR	R31
    03A0 0FE8      ADD	R30,R24
    03A1 1FF9      ADC	R31,R25
    03A2 91E4      LPM	R30,0(Z)
    03A3 B9E5      OUT	0x05,R30
(0438) 		dip_bit = 0;
    03A4 2422      CLR	R2
    03A5 92200115  STS	dip_bit,R2
(0439) 	}
    03A7 D20C      RCALL	pop_gset3
    03A8 9508      RET
(0440) }
(0441) 
(0442) 
(0443) /*---------------------------------------------------------------
(0444)    		按键扫描
(0445) ----------------------------------------------------------------*/
(0446) 
(0447) void key_scan(void)
(0448) {
(0449) 	uchar temp;
(0450) 	
(0451) 	PORTC |= 0x0C;
_key_scan:
  temp                 --> R16
    03A9 B188      IN	R24,0x08
    03AA 608C      ORI	R24,0xC
    03AB B988      OUT	0x08,R24
(0452) 	
(0453) 	asm("nop"); asm("nop");
    03AC 0000      NOP
    03AD 0000      NOP
(0454) 	
(0455) 	temp = PINC & 0x0C;
    03AE B106      IN	R16,0x06
    03AF 700C      ANDI	R16,0xC
(0456) 
(0457) 	if(temp==0x00) 	// 双键
    03B0 F009      BEQ	0x03B2
    03B1 C049      RJMP	0x03FB
(0458) 	{	
(0459) 		key ++;
    03B2 9180010F  LDS	R24,key
    03B4 91900110  LDS	R25,key+1
    03B6 9601      ADIW	R24,1
    03B7 93900110  STS	key+1,R25
    03B9 9380010F  STS	key,R24
(0460) 		if(key>=400)
    03BB 3980      CPI	R24,0x90
    03BC E0E1      LDI	R30,1
    03BD 079E      CPC	R25,R30
    03BE F408      BCC	0x03C0
    03BF C041      RJMP	0x0401
(0461) 		{
(0462) 			key = 0;
    03C0 2422      CLR	R2
    03C1 2433      CLR	R3
    03C2 92300110  STS	key+1,R3
    03C4 9220010F  STS	key,R2
(0463) 			mode ++;
    03C6 91800112  LDS	R24,mode
    03C8 5F8F      SUBI	R24,0xFF
    03C9 93800112  STS	mode,R24
(0464) 
(0465) 			if(mode==1||mode==2)
    03CB 3081      CPI	R24,1
    03CC F011      BEQ	0x03CF
    03CD 3082      CPI	R24,2
    03CE F469      BNE	0x03DC
(0466) 			{
(0467) 				DDRD   = 0xFF;
    03CF EF8F      LDI	R24,0xFF
    03D0 B98A      OUT	0x0A,R24
(0468) 				TIMSK1 = 0x01; 	// 开T1中断
    03D1 E081      LDI	R24,1
    03D2 9380006F  STS	0x6F,R24
(0469) 				EIMSK  = 0x00;
    03D4 2422      CLR	R2
    03D5 BA2D      OUT	0x1D,R2
(0470) 				out_time = 150;
    03D6 E986      LDI	R24,0x96
    03D7 93800111  STS	out_time,R24
(0471) 				dp	   = 0x00;
    03D9 92200101  STS	dp,R2
(0472) 				
(0473) 			}
    03DB C025      RJMP	0x0401
(0474) 			else if(mode==3)
    03DC 91800112  LDS	R24,mode
    03DE 3083      CPI	R24,3
    03DF F469      BNE	0x03ED
(0475) 			{
(0476) 				DDRD   = 0xFB;
    03E0 EF8B      LDI	R24,0xFB
    03E1 B98A      OUT	0x0A,R24
(0477) 				TIMSK1 = 0x00; 	// 开T1中断
    03E2 2422      CLR	R2
    03E3 9220006F  STS	0x6F,R2
(0478)  				EICRA  = 0x03; //extended ext ints
    03E5 E083      LDI	R24,3
    03E6 93800069  STS	0x69,R24
(0479)  				EIMSK  = 0x01;
    03E8 E081      LDI	R24,1
    03E9 BB8D      OUT	0x1D,R24
(0480) 				dp	   = 0x00;
    03EA 92200101  STS	dp,R2
(0481) 			}
    03EC C014      RJMP	0x0401
(0482) 			else if(mode>=4) 
    03ED 91800112  LDS	R24,mode
    03EF 3084      CPI	R24,4
    03F0 F080      BCS	0x0401
(0483) 			{
(0484) 				TIMSK1 = 0x00; 	// 关T1中断
    03F1 2422      CLR	R2
    03F2 9220006F  STS	0x6F,R2
(0485) 				EIMSK  = 0x00;
    03F4 BA2D      OUT	0x1D,R2
(0486) 				mode   = 0;
    03F5 92200112  STS	mode,R2
(0487) 				dp	   = 0x02;
    03F7 E082      LDI	R24,2
    03F8 93800101  STS	dp,R24
(0488) 			}	
(0489) 		}
(0490) 	}
    03FA C006      RJMP	0x0401
(0491) 	else key = 0 ;
    03FB 2422      CLR	R2
    03FC 2433      CLR	R3
    03FD 92300110  STS	key+1,R3
    03FF 9220010F  STS	key,R2
(0492) 	
(0493) 	if(temp==0x08&&mode==1) 	// k1
    0401 3008      CPI	R16,0x8
    0402 F559      BNE	0x042E
    0403 91800112  LDS	R24,mode
    0405 3081      CPI	R24,1
    0406 F539      BNE	0x042E
(0494) 	{	
(0495) 		if(key1<500) 	
    0407 9180010D  LDS	R24,key1
    0409 9190010E  LDS	R25,key1+1
    040B 3F84      CPI	R24,0xF4
    040C E0E1      LDI	R30,1
    040D 079E      CPC	R25,R30
    040E F488      BCC	0x0420
(0496) 		{	
(0497) 			key1 ++;
    040F 9601      ADIW	R24,1
    0410 9390010E  STS	key1+1,R25
    0412 9380010D  STS	key1,R24
(0498) 			if(key1==5)		// 短按
    0414 3085      CPI	R24,5
    0415 E0E0      LDI	R30,0
    0416 079E      CPC	R25,R30
    0417 F4E1      BNE	0x0434
(0499) 			{
(0500) 				if(out_time<210) out_time ++;
    0418 91800111  LDS	R24,out_time
    041A 3D82      CPI	R24,0xD2
    041B F4C0      BCC	0x0434
    041C 5F8F      SUBI	R24,0xFF
    041D 93800111  STS	out_time,R24
(0501) 			}
(0502) 		}
    041F C014      RJMP	0x0434
(0503) 		else 		// 长按
(0504) 		{	
(0505) 			key1 = 490;
    0420 EE8A      LDI	R24,0xEA
    0421 E091      LDI	R25,1
    0422 9390010E  STS	key1+1,R25
    0424 9380010D  STS	key1,R24
(0506) 			if(out_time<210) out_time ++;
    0426 91800111  LDS	R24,out_time
    0428 3D82      CPI	R24,0xD2
    0429 F450      BCC	0x0434
    042A 5F8F      SUBI	R24,0xFF
    042B 93800111  STS	out_time,R24
(0507) 		}
(0508) 	}
    042D C006      RJMP	0x0434
(0509) 	else key1 = 0;
    042E 2422      CLR	R2
    042F 2433      CLR	R3
    0430 9230010E  STS	key1+1,R3
    0432 9220010D  STS	key1,R2
(0510) 	
(0511) 	if(temp==0x04&&mode==1) 	// k2
    0434 3004      CPI	R16,4
    0435 F579      BNE	0x0465
    0436 91800112  LDS	R24,mode
    0438 3081      CPI	R24,1
    0439 F559      BNE	0x0465
(0512) 	{	
(0513) 		if(key2<500) 	
    043A 9180010B  LDS	R24,key2
    043C 9190010C  LDS	R25,key2+1
    043E 3F84      CPI	R24,0xF4
    043F E0E1      LDI	R30,1
    0440 079E      CPC	R25,R30
    0441 F498      BCC	0x0455
(0514) 		{	
(0515) 			key2 ++;
    0442 9601      ADIW	R24,1
    0443 9390010C  STS	key2+1,R25
    0445 9380010B  STS	key2,R24
(0516) 			if(key2==5)		// 短按
    0447 3085      CPI	R24,5
    0448 E0E0      LDI	R30,0
    0449 079E      CPC	R25,R30
    044A F501      BNE	0x046B
(0517) 			{

⌨️ 快捷键说明

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