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

📄 main.s

📁 这个是个航模产品的锂电测试器
💻 S
📖 第 1 页 / 共 3 页
字号:
	clr R2
	sts _adc_num,R2
	.dbline 236
; 		temp    = ad_temp>>4;
	lds R20,_ad_temp
	lds R21,_ad_temp+1
	lsr R21
	ror R20
	lsr R21
	ror R20
	lsr R21
	ror R20
	lsr R21
	ror R20
	.dbline 237
; 		ad_temp = 0;
	clr R3
	sts _ad_temp+1,R3
	sts _ad_temp,R2
	.dbline 239
; 
; 		if(adc_ch==0) 	   
	lds R2,_adc_ch
	tst R2
	brne L80
	.dbline 240
; 		{
	.dbline 241
; 			V[1]   = temp;
	sts _V+2+1,R21
	sts _V+2,R20
	.dbline 242
; 			adc_ch = 1; 
	ldi R24,1
	sts _adc_ch,R24
	.dbline 243
; 		}
	rjmp L81
L80:
	.dbline 244
; 		else if(adc_ch==1) 
	lds R24,_adc_ch
	cpi R24,1
	brne L83
	.dbline 245
; 		{
	.dbline 246
; 			V[0]   = temp;
	sts _V+1,R21
	sts _V,R20
	.dbline 247
; 			adc_ch = 6; 
	ldi R24,6
	sts _adc_ch,R24
	.dbline 248
; 		}
	rjmp L84
L83:
	.dbline 249
; 		else if(adc_ch==6) 
	lds R24,_adc_ch
	cpi R24,6
	brne L85
	.dbline 250
; 		{
	.dbline 251
; 			V[3]   = temp ;
	sts _V+6+1,R21
	sts _V+6,R20
	.dbline 252
; 			adc_ch = 7; 
	ldi R24,7
	sts _adc_ch,R24
	.dbline 253
; 		}
	rjmp L86
L85:
	.dbline 254
; 		else if(adc_ch==7) 
	lds R24,_adc_ch
	cpi R24,7
	brne L88
	.dbline 255
; 		{
	.dbline 256
; 			V[2]   = temp ;
	sts _V+4+1,R21
	sts _V+4,R20
	.dbline 257
; 			adc_ch = 0;
	clr R2
	sts _adc_ch,R2
	.dbline 258
; 		}
L88:
L86:
L84:
L81:
	.dbline 261
L78:
	.dbline -2
L77:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 i
	.dbend
	.dbfunc e batt_test _batt_test fV
	.even
_batt_test::
	.dbline -1
	.dbline 273
; 		
; 		//abcd();	
; 	}
; 	
; }
; 
; 
; 
; 
; /*---------------------------------------------------------------
;    			电池组数检测
; ----------------------------------------------------------------*/
; 
; void batt_test(void)
; {
	.dbline 274
; 	if(AD_CH(1)>60)  batt =1;
	ldi R16,1
	rcall _AD_CH
	ldi R24,60
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brsh L92
	.dbline 274
	ldi R24,1
	sts _batt,R24
L92:
	.dbline 275
; 	if(AD_CH(0)>120) batt =2;
	clr R16
	rcall _AD_CH
	ldi R24,120
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brsh L94
	.dbline 275
	ldi R24,2
	sts _batt,R24
L94:
	.dbline 276
; 	if(AD_CH(7)>180) batt =3;
	ldi R16,7
	rcall _AD_CH
	ldi R24,180
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brsh L96
	.dbline 276
	ldi R24,3
	sts _batt,R24
L96:
	.dbline 277
	ldi R16,6
	rcall _AD_CH
	ldi R24,240
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brsh L98
	.dbline 277
	ldi R24,4
	sts _batt,R24
L98:
	.dbline -2
L91:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LED_display _LED_display fV
;          temp1 -> <dead>
;              l -> R20
;              m -> R22
;              h -> R10
;           temp -> R20,R21
	.even
_LED_display::
	rcall push_gset3
	.dbline -1
	.dbline 289
; 	if(AD_CH(6)>240) batt =4;
; 		
; }
; 
; 
; 
;  
; /*---------------------------------------------------------------
;    			LED 显示
; ----------------------------------------------------------------*/
; 
; void LED_display(void)
; {
	.dbline 293
; 	uint	temp,temp1;
; 	uchar	h,m,l;
; 	
; 	if(mode==0)
	lds R2,_mode
	tst R2
	breq X6
	rjmp L101
X6:
	.dbline 294
; 	{
	.dbline 295
; 		if(batt_num<=1000)
	ldi R24,1000
	ldi R25,3
	lds R2,_batt_num
	lds R3,_batt_num+1
	cp R24,R2
	cpc R25,R3
	brlo L103
	.dbline 296
; 		{
	.dbline 297
; 			temp   = V[0];
	lds R20,_V
	lds R21,_V+1
	.dbline 299
; 			
; 			if(V[0]<131) flas1 = 1;
	cpi R20,131
	ldi R30,0
	cpc R21,R30
	brsh L105
	.dbline 299
	ldi R24,1
	sts _flas1,R24
	rjmp L106
L105:
	.dbline 300
; 			else flas1 = 0;
	clr R2
	sts _flas1,R2
L106:
	.dbline 302
; 			
; 			if(led_time<80 && flas1)
	lds R24,_led_time
	cpi R24,80
	brsh L107
	lds R2,_flas1
	tst R2
	breq L107
	.dbline 303
; 			{
	.dbline 304
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 305
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 306
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 307
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 308
; 			}
	rjmp L104
L107:
	.dbline 310
; 			else 
; 			{
	.dbline 311
; 				SET_LED1;
	sbi 0xb,4
	.dbline 312
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 313
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 314
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 315
; 			}
	.dbline 316
; 		}
	rjmp L104
L103:
	.dbline 318
; 		
; 		else if(batt_num>1000&&batt_num<=2000)
	ldi R24,1000
	ldi R25,3
	lds R2,_batt_num
	lds R3,_batt_num+1
	cp R24,R2
	cpc R25,R3
	brsh L109
	ldi R24,2000
	ldi R25,7
	cp R24,R2
	cpc R25,R3
	brlo L109
	.dbline 319
; 		{
	.dbline 320
; 			temp = V[1]-V[0];
	lds R2,_V
	lds R3,_V+1
	lds R20,_V+2
	lds R21,_V+2+1
	sub R20,R2
	sbc R21,R3
	.dbline 321
; 			if(temp<101) flas2 = 1;
	cpi R20,101
	ldi R30,0
	cpc R21,R30
	brsh L112
	.dbline 321
	ldi R24,1
	sts _flas2,R24
	rjmp L113
L112:
	.dbline 322
; 			else flas2 = 0;
	clr R2
	sts _flas2,R2
L113:
	.dbline 324
; 			
; 			if(led_time<80 && flas2)
	lds R24,_led_time
	cpi R24,80
	brsh L114
	lds R2,_flas2
	tst R2
	breq L114
	.dbline 325
; 			{
	.dbline 326
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 327
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 328
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 329
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 330
; 			}
	rjmp L110
L114:
	.dbline 332
; 			else 
; 			{
	.dbline 333
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 334
; 				SET_LED2;
	sbi 0xb,3
	.dbline 335
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 336
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 337
; 			}
	.dbline 338
; 		}
	rjmp L110
L109:
	.dbline 339
; 		else if(batt_num>2000&&batt_num<=3000)
	ldi R24,2000
	ldi R25,7
	lds R2,_batt_num
	lds R3,_batt_num+1
	cp R24,R2
	cpc R25,R3
	brsh L116
	ldi R24,3000
	ldi R25,11
	cp R24,R2
	cpc R25,R3
	brlo L116
	.dbline 340
; 		{
	.dbline 341
; 			temp   = V[2]-V[1];
	lds R2,_V+2
	lds R3,_V+2+1
	lds R20,_V+4
	lds R21,_V+4+1
	sub R20,R2
	sbc R21,R3
	.dbline 342
; 			if(temp<101) flas3 = 1;
	cpi R20,101
	ldi R30,0
	cpc R21,R30
	brsh L120
	.dbline 342
	ldi R24,1
	sts _flas3,R24
	rjmp L121
L120:
	.dbline 343
; 			else flas3 = 0;
	clr R2
	sts _flas3,R2
L121:
	.dbline 345
; 						
; 			if(led_time<80 && flas3)
	lds R24,_led_time
	cpi R24,80
	brsh L122
	lds R2,_flas3
	tst R2
	breq L122
	.dbline 346
; 			{
	.dbline 347
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 348
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 349
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 350
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 351
; 			}
	rjmp L117
L122:
	.dbline 353
; 			else 
; 			{
	.dbline 354
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 355
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 356
; 				SET_LED3;
	sbi 0xb,1
	.dbline 357
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 358
; 			}
	.dbline 360
; 			
; 		}
	rjmp L117
L116:
	.dbline 361
; 		else if(batt_num>3000)
	ldi R24,3000
	ldi R25,11
	lds R2,_batt_num
	lds R3,_batt_num+1
	cp R24,R2
	cpc R25,R3
	brsh L124
	.dbline 362
; 		{
	.dbline 363
; 			temp   = V[3]-V[2];
	lds R2,_V+4
	lds R3,_V+4+1
	lds R20,_V+6
	lds R21,_V+6+1
	sub R20,R2
	sbc R21,R3
	.dbline 364
; 			if(temp<101) flas4 = 1;
	cpi R20,101
	ldi R30,0
	cpc R21,R30
	brsh L128
	.dbline 364
	ldi R24,1
	sts _flas4,R24
	rjmp L129
L128:
	.dbline 365
; 			else flas4 = 0;
	clr R2
	sts _flas4,R2
L129:
	.dbline 367
; 			
; 			if(led_time<80 && flas4)
	lds R24,_led_time
	cpi R24,80
	brsh L130
	lds R2,_flas4
	tst R2
	breq L130
	.dbline 368
; 			{
	.dbline 369
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 370
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 371
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 372
; 				CLR_LED4;
	cbi 0xb,0
	.dbline 373
; 			}
	rjmp L131
L130:
	.dbline 375
; 			else 
; 			{
	.dbline 376
; 				CLR_LED1;
	cbi 0xb,4
	.dbline 377
; 				CLR_LED2;
	cbi 0xb,3
	.dbline 378
; 				CLR_LED3;
	cbi 0xb,1
	.dbline 379
; 				SET_LED4;
	sbi 0xb,0
	.dbline 380
; 			}
L131:
	.dbline 382
; 			
; 		}
L124:
L117:
L110:
L104:
	.dbline 384
; 		
; 		temp = ((temp*125)/256)*5;
	ldi R16,125
	ldi R17,0
	movw R18,R20
	rcall empy16s
	movw R18,R16
	mov R18,R19
	clr R19
	ldi R16,5
	ldi R17,0
	rcall empy16s
	movw R20,R16
	.dbline 386
; 	
; 	}
	rjmp L102
L101:
	.dbline 387
; 	else if(mode==1)
	lds R24,_mode
	cpi R24,1
	brne L132
	.dbline 388
; 	{
	.dbline 389
; 		SET_LED1;
	sbi 0xb,4
	.dbline 390
; 		SET_LED2;
	sbi 0xb,3
	.dbline 391
; 		CLR_LED3;
	cbi 0xb,1
	.dbline 392
; 		CLR_LED4;
	cbi 0xb,0
	.dbline 393
; 		temp = out_time;
	lds R20,_out_time
	clr R21
	.dbline 394
; 	}
	rjmp L133
L132:
	.dbline 395
; 	else if(mode==2)
	lds R24,_mode
	cpi R24,2
	brne L134
	.dbline 396
; 	{
	.dbline 397
; 		SET_LED1;
	sbi 0xb,4
	.dbline 398
; 		SET_LED2;
	sbi 0xb,3
	.dbline 399
; 		SET_LED3;
	sbi 0xb,1
	.dbline 400
; 		CLR_LED4;
	cbi 0xb,0
	.dbline 401
; 		temp = out_time;
	lds R20,_out_time
	clr R21
	.dbline 402
; 	}
	rjmp L135
L134:
	.dbline 403
; 	else if(mode==3)
	lds R24,_mode
	cpi R24,3
	brne L136
	.dbline 404
; 	{
	.dbline 405
; 		SET_LED1;
	sbi 0xb,4
	.dbline 406
; 		SET_LED2;
	sbi 0xb,3
	.dbline 407
; 		SET_LED3;
	sbi 0xb,1
	.dbline 408
; 		SET_LED4;
	sbi 0xb,0
	.dbline 409
; 		temp = (CH.temp+5)/10;
	ldi R18,10
	ldi R19,0
	lds R16,_CH
	lds R17,_CH+1
	subi R16,251  ; offset = 5
	sbci R17,255
	rcall div16u
	movw R20,R16
	.dbline 410
; 	}
L136:
L135:
L133:
L102:
	.dbline 412
; 	
; 	h = temp/100;
	ldi R18,100
	ldi R19,0
	movw R16,R20
	rcall div16u
	mov R10,R16
	.dbline 413
; 	m = temp%100/10;
	ldi R18,100
	ldi R19,0
	movw R16,R20
	rcall mod16u
	ldi R18,10
	ldi R19,0
	rcall div16u
	mov R22,R16
	.dbline 414
; 	l = temp%100%10;
	ldi R18,100
	ldi R19,0
	movw R16,R20
	rcall mod16u
	ldi R18,10
	ldi R19,0
	rcall mod16u
	mov R20,R16
	.dbline 416
; 	
; 	dip_bit ++;
	lds R24,_dip_bit
	subi R24,255    ; addi 1
	sts _dip_bit,R24
	.dbline 418
; 	
; 	if(dip_bit==2)
	cpi R24,2
	brne L138
	.dbline 419
; 	{
	.dbline 420
; 		SET_COM1;
	sbi 0xb,7
	.dbline 421
; 		CLR_COM2;
	cbi 0xb,6
	.dbline 422
; 		CLR_COM3;
	cbi 0xb,5
	.dbline 423
; 		PORTB = Char_tab[h] | dp;
	ldi R24,<_Char_tab
	ldi R25,>_Char_tab
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	lds R2,_dp
	or R30,R2
	out 0x5,R30
	.dbline 424
; 	}	
	rjmp L139
L138:
	.dbline 425
; 	else if(dip_bit==4)
	lds R24,_dip_bit
	cpi R24,4
	brne L140
	.dbline 426
; 	{
	.dbline 427
; 		CLR_COM1;
	cbi 0xb,7
	.dbline 428
; 		SET_COM2;
	sbi 0xb,6
	.dbline 429
; 		CLR_COM3;
	cbi 0xb,5
	.dbline 430
; 		PORTB = Char_tab[m];
	ldi R24,<_Char_tab
	ldi R25,>_Char_tab
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	out 0x5,R30
	.dbline 431
; 	}
	rjmp L141
L140:
	.dbline 432
; 	else if(dip_bit==6)
	lds R24,_dip_bit
	cpi R24,6
	brne L142
	.dbline 433
; 	{
	.dbline 434
; 		CLR_COM1;
	cbi 0xb,7
	.dbline 435
; 		CLR_COM2;
	cbi 0xb,6
	.dbline 436
; 		SET_COM3;
	sbi 0xb,5
	.dbline 437
; 		PORTB = Char_tab[l];
	ldi R24,<_Char_tab
	ldi R25,>_Char_tab
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	out 0x5,R30
	.dbline 438
; 		dip_bit = 0;
	clr R2
	sts _dip_bit,R2
	.dbline 439
; 	}
L142:
L141:
L139:
	.dbline -2
L100:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym l temp1 1 i
	.dbsym r l 20 c
	.dbsym r m 22 c
	.dbsym r h 10 c
	.dbsym r temp 20 i
	.dbend
	.dbfunc e key_scan _key_scan fV
;           temp -> R16
	.even
_key_scan::
	.dbline -1
	.dbline 448
; }
; 
; 
; /*---------------------------------------------------------------
;    		按键扫描
; ----------------------------------------------------------------*/
; 
; void key_scan(void)
; {
	.dbline 451
; 	uchar temp;
; 	
; 	PORTC |= 0x0C;
	in R24,0x8
	ori R24,12
	out 0x8,R24
	.dbline 453
; 	
; 	asm("nop"); asm("nop");
	nop
	.dbline 453
	nop
	.dbline 455
; 	
; 	temp = PINC & 0x0C;
	in R16,0x6
	andi R16,12
	.dbline 457
; 
; 	if(temp==0x00) 	// 双键
	breq X7
	rjmp L145
X7:
	.dbline 458
; 	{	
	.dbline 459
; 		key ++;
	lds R24,_key
	lds R25,_key+1
	adiw R24,1
	sts _key+1,R25
	sts _key,R24
	.dbline 460
; 		if(key>=400)
	cpi R24,144
	ldi R30,1
	cpc R25,R30
	brsh X8
	rjmp L146
X8:
	.dbline 461
; 		{
	.dbline 462
; 			key = 0;
	clr R2
	clr R3
	sts _key+1,R3
	sts _key,R2

⌨️ 快捷键说明

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