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

📄 main.s

📁 这个是个航模产品的锂电测试器
💻 S
📖 第 1 页 / 共 3 页
字号:
	.dbline 463
; 			mode ++;
	lds R24,_mode
	subi R24,255    ; addi 1
	sts _mode,R24
	.dbline 465
; 
; 			if(mode==1||mode==2)
	cpi R24,1
	breq L151
	cpi R24,2
	brne L149
L151:
	.dbline 466
; 			{
	.dbline 467
; 				DDRD   = 0xFF;
	ldi R24,255
	out 0xa,R24
	.dbline 468
; 				TIMSK1 = 0x01; 	// 开T1中断
	ldi R24,1
	sts 111,R24
	.dbline 469
; 				EIMSK  = 0x00;
	clr R2
	out 0x1d,R2
	.dbline 470
; 				out_time = 150;
	ldi R24,150
	sts _out_time,R24
	.dbline 471
; 				dp	   = 0x00;
	sts _dp,R2
	.dbline 473
; 				
; 			}
	rjmp L146
L149:
	.dbline 474
; 			else if(mode==3)
	lds R24,_mode
	cpi R24,3
	brne L152
	.dbline 475
; 			{
	.dbline 476
; 				DDRD   = 0xFB;
	ldi R24,251
	out 0xa,R24
	.dbline 477
; 				TIMSK1 = 0x00; 	// 开T1中断
	clr R2
	sts 111,R2
	.dbline 478
;  				EICRA  = 0x03; //extended ext ints
	ldi R24,3
	sts 105,R24
	.dbline 479
;  				EIMSK  = 0x01;
	ldi R24,1
	out 0x1d,R24
	.dbline 480
; 				dp	   = 0x00;
	sts _dp,R2
	.dbline 481
; 			}
	rjmp L146
L152:
	.dbline 482
; 			else if(mode>=4) 
	lds R24,_mode
	cpi R24,4
	brlo L146
	.dbline 483
; 			{
	.dbline 484
; 				TIMSK1 = 0x00; 	// 关T1中断
	clr R2
	sts 111,R2
	.dbline 485
; 				EIMSK  = 0x00;
	out 0x1d,R2
	.dbline 486
; 				mode   = 0;
	sts _mode,R2
	.dbline 487
; 				dp	   = 0x02;
	ldi R24,2
	sts _dp,R24
	.dbline 488
; 			}	
	.dbline 489
; 		}
	.dbline 490
; 	}
	rjmp L146
L145:
	.dbline 491
; 	else key = 0 ;
	clr R2
	clr R3
	sts _key+1,R3
	sts _key,R2
L146:
	.dbline 493
; 	
; 	if(temp==0x08&&mode==1) 	// k1
	cpi R16,8
	brne L156
	lds R24,_mode
	cpi R24,1
	brne L156
	.dbline 494
; 	{	
	.dbline 495
; 		if(key1<500) 	
	lds R24,_key1
	lds R25,_key1+1
	cpi R24,244
	ldi R30,1
	cpc R25,R30
	brsh L158
	.dbline 496
; 		{	
	.dbline 497
; 			key1 ++;
	adiw R24,1
	sts _key1+1,R25
	sts _key1,R24
	.dbline 498
; 			if(key1==5)		// 短按
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne L157
	.dbline 499
; 			{
	.dbline 500
; 				if(out_time<210) out_time ++;
	lds R24,_out_time
	cpi R24,210
	brsh L157
	.dbline 500
	subi R24,255    ; addi 1
	sts _out_time,R24
	.dbline 501
; 			}
	.dbline 502
; 		}
	rjmp L157
L158:
	.dbline 504
; 		else 		// 长按
; 		{	
	.dbline 505
; 			key1 = 490;
	ldi R24,490
	ldi R25,1
	sts _key1+1,R25
	sts _key1,R24
	.dbline 506
; 			if(out_time<210) out_time ++;
	lds R24,_out_time
	cpi R24,210
	brsh L157
	.dbline 506
	subi R24,255    ; addi 1
	sts _out_time,R24
	.dbline 507
; 		}
	.dbline 508
; 	}
	rjmp L157
L156:
	.dbline 509
; 	else key1 = 0;
	clr R2
	clr R3
	sts _key1+1,R3
	sts _key1,R2
L157:
	.dbline 511
; 	
; 	if(temp==0x04&&mode==1) 	// k2
	cpi R16,4
	brne L166
	lds R24,_mode
	cpi R24,1
	brne L166
	.dbline 512
; 	{	
	.dbline 513
; 		if(key2<500) 	
	lds R24,_key2
	lds R25,_key2+1
	cpi R24,244
	ldi R30,1
	cpc R25,R30
	brsh L168
	.dbline 514
; 		{	
	.dbline 515
; 			key2 ++;
	adiw R24,1
	sts _key2+1,R25
	sts _key2,R24
	.dbline 516
; 			if(key2==5)		// 短按
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne L167
	.dbline 517
; 			{
	.dbline 518
; 				if(out_time>90) out_time --;
	ldi R24,90
	lds R2,_out_time
	cp R24,R2
	brsh L167
	.dbline 518
	mov R24,R2
	subi R24,1
	sts _out_time,R24
	.dbline 519
; 			}
	.dbline 520
; 		}
	rjmp L167
L168:
	.dbline 522
; 		else 		// 长按
; 		{	
	.dbline 523
; 			key2 = 490;
	ldi R24,490
	ldi R25,1
	sts _key2+1,R25
	sts _key2,R24
	.dbline 524
; 			if(out_time>90) out_time --;
	ldi R24,90
	lds R2,_out_time
	cp R24,R2
	brsh L167
	.dbline 524
	mov R24,R2
	subi R24,1
	sts _out_time,R24
	.dbline 525
; 		}
	.dbline 526
; 	}
	rjmp L167
L166:
	.dbline 527
	clr R2
	clr R3
	sts _key2+1,R3
	sts _key2,R2
L167:
	.dbline -2
L144:
	.dbline 0 ; func end
	ret
	.dbsym r temp 16 c
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 537
; 	else key2 = 0;
; }
; 
; 
; 
; /*---------------------------------------------------------------
;    			main
; ----------------------------------------------------------------*/
; 
; void main(void)
; {	
	.dbline 538
; 	init_devices();
	rcall _init_devices
	.dbline 540
; 			
; 	batt_test();
	rcall _batt_test
	rjmp L178
L177:
	.dbline 543
; 		
; 	while(1)
; 	{	
	.dbline 544
; 		asm("WDR");	
	WDR
	.dbline 545
; 		if(flag_2ms)
	lds R2,_flag_2ms
	tst R2
	breq L180
	.dbline 546
; 		{
	.dbline 547
; 			flag_2ms = 0;
	clr R2
	sts _flag_2ms,R2
	.dbline 549
; 			
; 			led_time ++;
	lds R24,_led_time
	subi R24,255    ; addi 1
	sts _led_time,R24
	.dbline 550
; 			if(led_time>=200) led_time = 0;
	cpi R24,200
	brlo L182
	.dbline 550
	sts _led_time,R2
L182:
	.dbline 552
; 
; 			ADC_count();
	rcall _ADC_count
	.dbline 553
; 			LED_display();
	rcall _LED_display
	.dbline 554
; 			key_scan();
	rcall _key_scan
	.dbline 556
; 			
; 		}
L180:
	.dbline 557
L178:
	.dbline 542
	rjmp L177
X9:
	.dbline -2
L176:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 32
	rjmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\CHIYUA~1\LI_POT~1\main.c
	.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
	.even
_timer0_ovf_isr::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	st -y,R30
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 567
; 	}
; }
; 
; 
; /*---------------------------------------------------------------
;    			timer0 2ms 中断
; ----------------------------------------------------------------*/
; 
; #pragma interrupt_handler timer0_ovf_isr:17
; void timer0_ovf_isr(void)
; {
	.dbline 568
;  	TCNT0 = 0x04; 	// reload counter value
	ldi R24,4
	out 0x26,R24
	.dbline 570
;  	
;  	flag_2ms = 1;
	ldi R24,1
	sts _flag_2ms,R24
	.dbline 572
;  	
;  	batt_num ++;
	lds R24,_batt_num
	lds R25,_batt_num+1
	adiw R24,1
	sts _batt_num+1,R25
	sts _batt_num,R24
	.dbline 573
;  	if(batt==2)
	lds R24,_batt
	cpi R24,2
	brne L185
	.dbline 574
;  	{
	.dbline 575
;  		if(batt_num>=2000) batt_num = 0;
	lds R24,_batt_num
	lds R25,_batt_num+1
	cpi R24,208
	ldi R30,7
	cpc R25,R30
	brlo L186
	.dbline 575
	clr R2
	clr R3
	sts _batt_num+1,R3
	sts _batt_num,R2
	.dbline 576
;  	}
	rjmp L186
L185:
	.dbline 577
;  	else if(batt==3)
	lds R24,_batt
	cpi R24,3
	brne L189
	.dbline 578
;  	{
	.dbline 579
;  		if(batt_num>=3000) batt_num = 0;
	lds R24,_batt_num
	lds R25,_batt_num+1
	cpi R24,184
	ldi R30,11
	cpc R25,R30
	brlo L190
	.dbline 579
	clr R2
	clr R3
	sts _batt_num+1,R3
	sts _batt_num,R2
	.dbline 580
;  	}
	rjmp L190
L189:
	.dbline 581
;  	else if(batt==4)
	lds R24,_batt
	cpi R24,4
	brne L193
	.dbline 582
;  	{
	.dbline 583
;  		if(batt_num>=4000) batt_num = 0;
	lds R24,_batt_num
	lds R25,_batt_num+1
	cpi R24,160
	ldi R30,15
	cpc R25,R30
	brlo L195
	.dbline 583
	clr R2
	clr R3
	sts _batt_num+1,R3
	sts _batt_num,R2
L195:
	.dbline 584
;  	}
L193:
L190:
L186:
	.dbline 586
;  		
;  	if(mode==1||mode==2)
	lds R24,_mode
	cpi R24,1
	breq L199
	cpi R24,2
	breq X10
	rjmp L197
X10:
L199:
	.dbline 587
;  	{
	.dbline 588
;  		flag_20ms ++;
	lds R24,_flag_20ms
	subi R24,255    ; addi 1
	sts _flag_20ms,R24
	.dbline 589
; 		if(flag_20ms>=10)
	cpi R24,10
	brsh X11
	rjmp L200
X11:
	.dbline 590
; 		{
	.dbline 591
; 	  		flag_20ms = 0;
	clr R2
	sts _flag_20ms,R2
	.dbline 593
; 	   
; 	 		TCNT1	= 0xFD00;	//预留512条指令时间
	ldi R24,64768
	ldi R25,253
	sts 132+1,R25
	sts 132,R24
	.dbline 594
; 	    	TCCR1B	= 0x01;		//启动time1产生脉冲串	
	ldi R24,1
	sts 129,R24
	.dbline 595
; 	    	pulse   = 0;
	sts _pulse,R2
	.dbline 597
; 	    	
; 	    	if(delay<100) delay ++;
	lds R24,_delay
	cpi R24,100
	brsh L202
	.dbline 597
	subi R24,255    ; addi 1
	sts _delay,R24
L202:
	.dbline 599
; 	    	
; 	    	if(mode==2)
	lds R24,_mode
	cpi R24,2
	brne L204
	.dbline 600
; 	    	{
	.dbline 601
; 	    		if(!down)
	lds R2,_down
	tst R2
	brne L206
	.dbline 602
; 	    		{
	.dbline 603
; 	    			if(out_time<210) 
	lds R24,_out_time
	cpi R24,210
	brsh L208
	.dbline 604
; 	    			{
	.dbline 605
; 	    				if(delay>30) out_time ++;
	ldi R24,30
	lds R2,_delay
	cp R24,R2
	brsh L207
	.dbline 605
	lds R24,_out_time
	subi R24,255    ; addi 1
	sts _out_time,R24
	.dbline 606
; 	    			}
	rjmp L207
L208:
	.dbline 608
; 	    			else  
; 	    			{
	.dbline 609
; 	    				down  = 1;
	ldi R24,1
	sts _down,R24
	.dbline 610
; 	    				delay = 0;
	clr R2
	sts _delay,R2
	.dbline 611
; 	    			}
	.dbline 612
; 	    		}
	rjmp L207
L206:
	.dbline 614
; 	    		else 
; 	    		{
	.dbline 615
; 	    			if(out_time>90) 
	ldi R24,90
	lds R2,_out_time
	cp R24,R2
	brsh L212
	.dbline 616
; 	    			{
	.dbline 617
; 	    				if(delay>30) out_time --;
	ldi R24,30
	lds R2,_delay
	cp R24,R2
	brsh L213
	.dbline 617
	lds R24,_out_time
	subi R24,1
	sts _out_time,R24
	.dbline 618
; 	    			}
	rjmp L213
L212:
	.dbline 620
; 	    			else 
; 	    			{
	.dbline 621
; 	    				down  = 0;
	clr R2
	sts _down,R2
	.dbline 622
; 	    				delay = 0;
	sts _delay,R2
	.dbline 623
; 	    			}
L213:
	.dbline 624
; 	    		}
L207:
	.dbline 625
; 	    	}
L204:
	.dbline 626
; 		}
L200:
	.dbline 627
L197:
	.dbline -2
L184:
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area vector(rom, abs)
	.org 26
	rjmp _timer1_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\CHIYUA~1\LI_POT~1\main.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R0
	st -y,R1
	st -y,R2
	st -y,R24
	st -y,R25
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 636
; 	}
; }
; 
; /*---------------------------------------------------------------
;    			T1 产生各通道的脉宽
; ----------------------------------------------------------------*/
; 
; #pragma interrupt_handler timer1_ovf_isr:14
; void timer1_ovf_isr(void)	
; {
	.dbline 637
; 	if(!pulse)
	lds R2,_pulse
	tst R2
	brne L217
	.dbline 638
; 	{
	.dbline 639
; 		pulse  = 1;
	ldi R24,1
	sts _pulse,R24
	.dbline 640
; 		TCNT1  = 0xffff - out_time*80;
	lds R2,_out_time
	ldi R24,80
	mul R24,R2
	ldi R24,65535
	ldi R25,255
	sub R24,R0
	sbc R25,R1
	sts 132+1,R25
	sts 132,R24
	.dbline 641
; 		SET_OUT;
	sbi 0xb,2
	.dbline 642
; 	}
	rjmp L218
L217:
	.dbline 644
	.dbline 645
	cbi 0xb,2
	.dbline 646
	clr R2
	sts 129,R2
	.dbline 647
L218:
	.dbline -2
L216:
	ld R0,y+
	out 0x3f,R0
	ld R25,y+
	ld R24,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area vector(rom, abs)
	.org 2
	rjmp _int0_isr
	.area text(rom, con, rel)
	.dbfile E:\CHIYUA~1\LI_POT~1\main.c
	.dbfunc e int0_isr _int0_isr fV
	.even
_int0_isr::
	st -y,R2
	st -y,R24
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 656
; 	else 
; 	{
; 		CLR_OUT;
; 		TCCR1B = 0;		// STOP T1
; 	}
; }
; 
; /****************************************************************
; 		INT0 interrupt
; /****************************************************************/
; 
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
	.dbline 657
; 	if(EICRA==0x03)
	lds R24,105
	cpi R24,3
	brne L220
	.dbline 658
; 	{
	.dbline 659
; 		TCNT1H = 0x00; 
	clr R2
	sts 133,R2
	.dbline 660
;  		TCNT1L = 0x00; 
	sts 132,R2
	.dbline 661
;  		TCCR1B = 0x02;  //start Timer1
	ldi R24,2
	sts 129,R24
	.dbline 663
;  		
;  		EICRA  = 0x02;
	sts 105,R24
	.dbline 664
; 	}
	rjmp L221
L220:
	.dbline 665
; 	else if(EICRA==0x02)
	lds R24,105
	cpi R24,2
	brne L222
	.dbline 666
; 	{
	.dbline 667
; 		CH.data[0] = TCNT1L;
	lds R2,132
	sts _CH,R2
	.dbline 668
; 		CH.data[1] = TCNT1H;
	lds R2,133
	sts _CH+1,R2
	.dbline 670
; 	
; 		TCCR1B = 0x00;  //start Timer1
	clr R2
	sts 129,R2
	.dbline 671
; 		EICRA  = 0x03;
	ldi R24,3
	sts 105,R24
	.dbline 672
; 	}
L222:
L221:
	.dbline -2
L219:
	ld R2,y+
	out 0x3f,R2
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\CHIYUA~1\LI_POT~1\main.c
_flas4::
	.blkb 1
	.dbsym e flas4 _flas4 c
_flas3::
	.blkb 1
	.dbsym e flas3 _flas3 c
_flas2::
	.blkb 1
	.dbsym e flas2 _flas2 c
_flas1::
	.blkb 1
	.dbsym e flas1 _flas1 c
_led_flag::
	.blkb 1
	.dbsym e led_flag _led_flag c
_led_time::
	.blkb 1
	.dbsym e led_time _led_time c
_delay::
	.blkb 1
	.dbsym e delay _delay c
_down::
	.blkb 1
	.dbsym e down _down c
_pulse::
	.blkb 1
	.dbsym e pulse _pulse c
_key2::
	.blkb 2
	.dbsym e key2 _key2 i
_key1::
	.blkb 2
	.dbsym e key1 _key1 i
_key::
	.blkb 2
	.dbsym e key _key i
_out_time::
	.blkb 1
	.dbsym e out_time _out_time c
_mode::
	.blkb 1
	.dbsym e mode _mode c
_batt_num::
	.blkb 2
	.dbsym e batt_num _batt_num i
_dip_bit::
	.blkb 1
	.dbsym e dip_bit _dip_bit c
_batt::
	.blkb 1
	.dbsym e batt _batt c
_adc_num::
	.blkb 1
	.dbsym e adc_num _adc_num c
_ad_temp::
	.blkb 2
	.dbsym e ad_temp _ad_temp i
_flag_20ms::
	.blkb 1
	.dbsym e flag_20ms _flag_20ms c
_flag_2ms::
	.blkb 1
	.dbsym e flag_2ms _flag_2ms c
_V::
	.blkb 8
	.dbsym e V _V A[8:4]i
_CH::
	.blkb 2
	.dbunion 0 2 .13
	.dbfield 0 temp i
	.dbfield 0 data A[2:2]c
	.dbend
	.dbsym e CH _CH S[.13]

⌨️ 快捷键说明

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