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

📄 main.lst

📁 这个是个航模产品的锂电测试器
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0166) 	else if(batt==3)
    0138 91800116  LDS	R24,batt
    013A 3083      CPI	R24,3
    013B F4D9      BNE	0x0157
(0167) 	{
(0168) 		temp[0] = V[0];
    013C 9020011C  LDS	R2,V
    013E 9030011D  LDS	R3,V+1
    0140 8239      STD	Y+1,R3
    0141 8228      STD	Y+0,R2
(0169) 		temp[1] = V[1]-V[0];
    0142 9040011E  LDS	R4,V+2
    0144 9050011F  LDS	R5,V+3
    0146 1842      SUB	R4,R2
    0147 0853      SBC	R5,R3
    0148 825B      STD	Y+3,R5
    0149 824A      STD	Y+2,R4
(0170) 		temp[2] = V[2]-V[1];
    014A 9020011E  LDS	R2,V+2
    014C 9030011F  LDS	R3,V+3
    014E 90400120  LDS	R4,0x120
    0150 90500121  LDS	R5,0x121
    0152 1842      SUB	R4,R2
    0153 0853      SBC	R5,R3
    0154 825D      STD	Y+5,R5
    0155 824C      STD	Y+4,R4
(0171) 	}
    0156 C01E      RJMP	0x0175
(0172) 	else if(batt==2)
    0157 91800116  LDS	R24,batt
    0159 3082      CPI	R24,2
    015A F479      BNE	0x016A
(0173) 	{
(0174) 		temp[0] = V[0];
    015B 9020011C  LDS	R2,V
    015D 9030011D  LDS	R3,V+1
    015F 8239      STD	Y+1,R3
    0160 8228      STD	Y+0,R2
(0175) 		temp[1] = V[1]-V[0];
    0161 9040011E  LDS	R4,V+2
    0163 9050011F  LDS	R5,V+3
    0165 1842      SUB	R4,R2
    0166 0853      SBC	R5,R3
    0167 825B      STD	Y+3,R5
    0168 824A      STD	Y+2,R4
(0176) 	}
    0169 C00B      RJMP	0x0175
(0177) 	else if(batt==1)
    016A 91800116  LDS	R24,batt
    016C 3081      CPI	R24,1
    016D F009      BEQ	0x016F
    016E C066      RJMP	0x01D5
(0178) 	{
(0179) 		temp[0] = V[0];
    016F 9020011C  LDS	R2,V
    0171 9030011D  LDS	R3,V+1
    0173 8239      STD	Y+1,R3
    0174 8228      STD	Y+0,R2
(0180) 	} 
(0181) 	else return;
(0182) 	
(0183) 	
(0184) 	if(temp[1]<131) flas2 = 1;
    0175 818A      LDD	R24,Y+2
    0176 819B      LDD	R25,Y+3
    0177 3883      CPI	R24,0x83
    0178 E0E0      LDI	R30,0
    0179 079E      CPC	R25,R30
    017A F418      BCC	0x017E
    017B E081      LDI	R24,1
    017C 93800104  STS	flas2,R24
(0185) 	if(temp[2]<131) flas3 = 1;
    017E 818C      LDD	R24,Y+4
    017F 819D      LDD	R25,Y+5
    0180 3883      CPI	R24,0x83
    0181 E0E0      LDI	R30,0
    0182 079E      CPC	R25,R30
    0183 F418      BCC	0x0187
    0184 E081      LDI	R24,1
    0185 93800103  STS	flas3,R24
(0186) 	if(temp[3]<131) flas4 = 1;
    0187 818E      LDD	R24,Y+6
    0188 819F      LDD	R25,Y+7
    0189 3883      CPI	R24,0x83
    018A E0E0      LDI	R30,0
    018B 079E      CPC	R25,R30
    018C F418      BCC	0x0190
    018D E081      LDI	R24,1
    018E 93800102  STS	flas4,R24
(0187) 	
(0188) 	bubble_sort(temp, batt);
    0190 91200116  LDS	R18,batt
    0192 018E      MOVW	R16,R28
    0193 DF11      RCALL	_bubble_sort
(0189) 	
(0190) 	if(batt==4) 
    0194 91800116  LDS	R24,batt
    0196 3084      CPI	R24,4
    0197 F4A9      BNE	0x01AD
(0191) 	{
(0192) 		if( (temp[0]-temp[3])>10 )
    0198 802E      LDD	R2,Y+6
    0199 803F      LDD	R3,Y+7
    019A 8048      LDD	R4,Y+0
    019B 8059      LDD	R5,Y+1
    019C 1842      SUB	R4,R2
    019D 0853      SBC	R5,R3
    019E E08A      LDI	R24,0xA
    019F E090      LDI	R25,0
    01A0 1584      CP	R24,R4
    01A1 0595      CPC	R25,R5
    01A2 F590      BCC	0x01D5
(0193) 		{
(0194) 			flas1 = 1;
    01A3 E081      LDI	R24,1
    01A4 93800105  STS	flas1,R24
(0195) 			flas2 = 1;
    01A6 93800104  STS	flas2,R24
(0196) 			flas3 = 1;
    01A8 93800103  STS	flas3,R24
(0197) 			flas4 = 1;
    01AA 93800102  STS	flas4,R24
(0198) 		}
(0199) 	}
    01AC C028      RJMP	0x01D5
(0200) 	else if(batt==3)
    01AD 91800116  LDS	R24,batt
    01AF 3083      CPI	R24,3
    01B0 F481      BNE	0x01C1
(0201) 	{
(0202) 		if(temp[0]> (temp[2]+5))
    01B1 818C      LDD	R24,Y+4
    01B2 819D      LDD	R25,Y+5
    01B3 9605      ADIW	R24,5
    01B4 8028      LDD	R2,Y+0
    01B5 8039      LDD	R3,Y+1
    01B6 1582      CP	R24,R2
    01B7 0593      CPC	R25,R3
    01B8 F4E0      BCC	0x01D5
(0203) 		{
(0204) 			flas1 = 1;
    01B9 E081      LDI	R24,1
    01BA 93800105  STS	flas1,R24
(0205) 			flas2 = 1;
    01BC 93800104  STS	flas2,R24
(0206) 			flas3 = 1;
    01BE 93800103  STS	flas3,R24
(0207) 		}
(0208) 	}
    01C0 C014      RJMP	0x01D5
(0209) 	else if(batt==2)
    01C1 91800116  LDS	R24,batt
    01C3 3082      CPI	R24,2
    01C4 F481      BNE	0x01D5
(0210) 	{
(0211) 		if( (temp[0]-temp[1])>10 )
    01C5 802A      LDD	R2,Y+2
    01C6 803B      LDD	R3,Y+3
    01C7 8048      LDD	R4,Y+0
    01C8 8059      LDD	R5,Y+1
    01C9 1842      SUB	R4,R2
    01CA 0853      SBC	R5,R3
    01CB E08A      LDI	R24,0xA
    01CC E090      LDI	R25,0
    01CD 1584      CP	R24,R4
    01CE 0595      CPC	R25,R5
    01CF F428      BCC	0x01D5
(0212) 		{
(0213) 			flas1 = 1;
    01D0 E081      LDI	R24,1
    01D1 93800105  STS	flas1,R24
(0214) 			flas2 = 1;
    01D3 93800104  STS	flas2,R24
(0215) 		}
(0216) 	}
    01D5 9628      ADIW	R28,0x8
    01D6 9508      RET
_ADC_count:
  temp                 --> R20
    01D7 D3E8      RCALL	push_gset1
(0217) 	
(0218) }
(0219) 
(0220) 
(0221) 
(0222) 
(0223) /*---------------------------------------------------------------
(0224)    			A/D 转换
(0225) ----------------------------------------------------------------*/
(0226) 
(0227) void ADC_count(void)
(0228) {
(0229) 	uint temp;
(0230) 	
(0231) 	ad_temp += AD_CH(adc_ch);
    01D8 91000100  LDS	R16,adc_ch
    01DA DE6C      RCALL	_AD_CH
    01DB 90200118  LDS	R2,ad_temp
    01DD 90300119  LDS	R3,ad_temp+1
    01DF 0E20      ADD	R2,R16
    01E0 1E31      ADC	R3,R17
    01E1 92300119  STS	ad_temp+1,R3
    01E3 92200118  STS	ad_temp,R2
(0232) 	adc_num ++;
    01E5 91800117  LDS	R24,adc_num
    01E7 5F8F      SUBI	R24,0xFF
    01E8 93800117  STS	adc_num,R24
(0233) 	if(adc_num>=16)
    01EA 3180      CPI	R24,0x10
    01EB F408      BCC	0x01ED
    01EC C043      RJMP	0x0230
(0234) 	{
(0235) 		adc_num = 0;
    01ED 2422      CLR	R2
    01EE 92200117  STS	adc_num,R2
(0236) 		temp    = ad_temp>>4;
    01F0 91400118  LDS	R20,ad_temp
    01F2 91500119  LDS	R21,ad_temp+1
    01F4 9556      LSR	R21
    01F5 9547      ROR	R20
    01F6 9556      LSR	R21
    01F7 9547      ROR	R20
    01F8 9556      LSR	R21
    01F9 9547      ROR	R20
    01FA 9556      LSR	R21
    01FB 9547      ROR	R20
(0237) 		ad_temp = 0;
    01FC 2433      CLR	R3
    01FD 92300119  STS	ad_temp+1,R3
    01FF 92200118  STS	ad_temp,R2
(0238) 
(0239) 		if(adc_ch==0) 	   
    0201 90200100  LDS	R2,adc_ch
    0203 2022      TST	R2
    0204 F441      BNE	0x020D
(0240) 		{
(0241) 			V[1]   = temp;
    0205 9350011F  STS	V+3,R21
    0207 9340011E  STS	V+2,R20
(0242) 			adc_ch = 1; 
    0209 E081      LDI	R24,1
    020A 93800100  STS	adc_ch,R24
(0243) 		}
    020C C023      RJMP	0x0230
(0244) 		else if(adc_ch==1) 
    020D 91800100  LDS	R24,adc_ch
    020F 3081      CPI	R24,1
    0210 F441      BNE	0x0219
(0245) 		{
(0246) 			V[0]   = temp;
    0211 9350011D  STS	V+1,R21
    0213 9340011C  STS	V,R20
(0247) 			adc_ch = 6; 
    0215 E086      LDI	R24,6
    0216 93800100  STS	adc_ch,R24
(0248) 		}
    0218 C017      RJMP	0x0230
(0249) 		else if(adc_ch==6) 
    0219 91800100  LDS	R24,adc_ch
    021B 3086      CPI	R24,6
    021C F441      BNE	0x0225
(0250) 		{
(0251) 			V[3]   = temp ;
    021D 93500123  STS	0x123,R21
    021F 93400122  STS	0x122,R20
(0252) 			adc_ch = 7; 
    0221 E087      LDI	R24,7
    0222 93800100  STS	adc_ch,R24
(0253) 		}
    0224 C00B      RJMP	0x0230
(0254) 		else if(adc_ch==7) 
    0225 91800100  LDS	R24,adc_ch
    0227 3087      CPI	R24,7
    0228 F439      BNE	0x0230
(0255) 		{
(0256) 			V[2]   = temp ;
    0229 93500121  STS	0x121,R21
    022B 93400120  STS	0x120,R20
(0257) 			adc_ch = 0;
    022D 2422      CLR	R2
    022E 92200100  STS	adc_ch,R2
(0258) 		}
(0259) 		
(0260) 		//abcd();	
(0261) 	}
    0230 D392      RCALL	pop_gset1
    0231 9508      RET
(0262) 	
(0263) }
(0264) 
(0265) 
(0266) 
(0267) 
(0268) /*---------------------------------------------------------------
(0269)    			电池组数检测
(0270) ----------------------------------------------------------------*/
(0271) 
(0272) void batt_test(void)
(0273) {
(0274) 	if(AD_CH(1)>60)  batt =1;
_batt_test:
    0232 E001      LDI	R16,1
    0233 DE13      RCALL	_AD_CH
    0234 E38C      LDI	R24,0x3C
    0235 E090      LDI	R25,0
    0236 1780      CP	R24,R16
    0237 0791      CPC	R25,R17
    0238 F418      BCC	0x023C
    0239 E081      LDI	R24,1
    023A 93800116  STS	batt,R24
(0275) 	if(AD_CH(0)>120) batt =2;
    023C 2700      CLR	R16
    023D DE09      RCALL	_AD_CH
    023E E788      LDI	R24,0x78
    023F E090      LDI	R25,0
    0240 1780      CP	R24,R16
    0241 0791      CPC	R25,R17
    0242 F418      BCC	0x0246
    0243 E082      LDI	R24,2
    0244 93800116  STS	batt,R24
(0276) 	if(AD_CH(7)>180) batt =3;
    0246 E007      LDI	R16,7
    0247 DDFF      RCALL	_AD_CH
    0248 EB84      LDI	R24,0xB4
    0249 E090      LDI	R25,0
    024A 1780      CP	R24,R16
    024B 0791      CPC	R25,R17
    024C F418      BCC	0x0250
    024D E083      LDI	R24,3
    024E 93800116  STS	batt,R24
(0277) 	if(AD_CH(6)>240) batt =4;
    0250 E006      LDI	R16,6
    0251 DDF5      RCALL	_AD_CH
    0252 EF80      LDI	R24,0xF0
    0253 E090      LDI	R25,0
    0254 1780      CP	R24,R16
    0255 0791      CPC	R25,R17
    0256 F418      BCC	0x025A
    0257 E084      LDI	R24,4
    0258 93800116  STS	batt,R24
    025A 9508      RET
_LED_display:
  temp1                --> Y+1
  l                    --> R20
  m                    --> R22
  h                    --> R10
  temp                 --> R20
    025B D360      RCALL	push_gset3
(0278) 		
(0279) }
(0280) 
(0281) 
(0282) 
(0283)  
(0284) /*---------------------------------------------------------------
(0285)    			LED 显示
(0286) ----------------------------------------------------------------*/
(0287) 
(0288) void LED_display(void)
(0289) {
(0290) 	uint	temp,temp1;
(0291) 	uchar	h,m,l;
(0292) 	
(0293) 	if(mode==0)
    025C 90200112  LDS	R2,mode
    025E 2022      TST	R2
    025F F009      BEQ	0x0261
    0260 C0CF      RJMP	0x0330
(0294) 	{
(0295) 		if(batt_num<=1000)
    0261 EE88      LDI	R24,0xE8
    0262 E093      LDI	R25,3
    0263 90200113  LDS	R2,batt_num
    0265 90300114  LDS	R3,batt_num+1
    0267 1582      CP	R24,R2
    0268 0593      CPC	R25,R3
    0269 F108      BCS	0x028B
(0296) 		{
(0297) 			temp   = V[0];
    026A 9140011C  LDS	R20,V
    026C 9150011D  LDS	R21,V+1
(0298) 			
(0299) 			if(V[0]<131) flas1 = 1;
    026E 3843      CPI	R20,0x83
    026F E0E0      LDI	R30,0
    0270 075E      CPC	R21,R30
    0271 F420      BCC	0x0276
    0272 E081      LDI	R24,1
    0273 93800105  STS	flas1,R24
    0275 C003      RJMP	0x0279
(0300) 			else flas1 = 0;
    0276 2422      CLR	R2
    0277 92200105  STS	flas1,R2
(0301) 			
(0302) 			if(led_time<80 && flas1)
    0279 91800107  LDS	R24,led_time
    027B 3580      CPI	R24,0x50
    027C F448      BCC	0x0286
    027D 90200105  LDS	R2,flas1
    027F 2022      TST	R2
    0280 F029      BEQ	0x0286
(0303) 			{
(0304) 				CLR_LED1;
    0281 985C      CBI	0x0B,4
(0305) 				CLR_LED2;
    0282 985B      CBI	0x0B,3
(0306) 				CLR_LED3;
    0283 9859      CBI	0x0B,1
(0307) 				CLR_LED4;
    0284 9858      CBI	0x0B,0
(0308) 			}
    0285 C09E      RJMP	0x0324
(0309) 			else 
(0310) 			{
(0311) 				SET_LED1;
    0286 9A5C      SBI	0x0B,4
(0312) 				CLR_LED2;
    0287 985B      CBI	0x0B,3
(0313) 				CLR_LED3;
    0288 9859      CBI	0x0B,1
(0314) 				CLR_LED4;
    0289 9858      CBI	0x0B,0
(0315) 			}
(0316) 		}
    028A C099      RJMP	0x0324
(0317) 		
(0318) 		else if(batt_num>1000&&batt_num<=2000)
    028B EE88      LDI	R24,0xE8
    028C E093      LDI	R25,3
    028D 90200113  LDS	R2,batt_num
    028F 90300114  LDS	R3,batt_num+1
    0291 1582      CP	R24,R2
    0292 0593      CPC	R25,R3
    0293 F560      BCC	0x02C0
    0294 ED80      LDI	R24,0xD0
    0295 E097      LDI	R25,7
    0296 1582      CP	R24,R2
    0297 0593      CPC	R25,R3
    0298 F138      BCS	0x02C0
(0319) 		{
(0320) 			temp = V[1]-V[0];
    0299 9020011C  LDS	R2,V
    029B 9030011D  LDS	R3,V+1
    029D 9140011E  LDS	R20,V+2
    029F 9150011F  LDS	R21,V+3
    02A1 1942      SUB	R20,R2
    02A2 0953      SBC	R21,R3
(0321) 			if(temp<101) flas2 = 1;
    02A3 3645      CPI	R20,0x65
    02A4 E0E0      LDI	R30,0
    02A5 075E      CPC	R21,R30
    02A6 F420      BCC	0x02AB
    02A7 E081      LDI	R24,1
    02A8 93800104  STS	flas2,R24
    02AA C003      RJMP	0x02AE
(0322) 			else flas2 = 0;
    02AB 2422      CLR	R2
    02AC 92200104  STS	flas2,R2
(0323) 			
(0324) 			if(led_time<80 && flas2)
    02AE 91800107  LDS	R24,led_time
    02B0 3580      CPI	R24,0x50
    02B1 F448      BCC	0x02BB
    02B2 90200104  LDS	R2,flas2
    02B4 2022      TST	R2
    02B5 F029      BEQ	0x02BB
(0325) 			{
(0326) 				CLR_LED1;
    02B6 985C      CBI	0x0B,4
(0327) 				CLR_LED2;
    02B7 985B      CBI	0x0B,3
(0328) 				CLR_LED3;
    02B8 9859      CBI	0x0B,1
(0329) 				CLR_LED4;
    02B9 9858      CBI	0x0B,0
(0330) 			}
    02BA C069      RJMP	0x0324
(0331) 			else 
(0332) 			{
(0333) 				CLR_LED1;
    02BB 985C      CBI	0x0B,4
(0334) 				SET_LED2;
    02BC 9A5B      SBI	0x0B,3
(0335) 				CLR_LED3;
    02BD 9859      CBI	0x0B,1
(0336) 				CLR_LED4;
    02BE 9858      CBI	0x0B,0
(0337) 			}
(0338) 		}
    02BF C064      RJMP	0x0324
(0339) 		else if(batt_num>2000&&batt_num<=3000)
    02C0 ED80      LDI	R24,0xD0
    02C1 E097      LDI	R25,7
    02C2 90200113  LDS	R2,batt_num
    02C4 90300114  LDS	R3,batt_num+1
    02C6 1582      CP	R24,R2
    02C7 0593      CPC	R25,R3

⌨️ 快捷键说明

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