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

📄 test.s

📁 a good program for battery charge,only for reference
💻 S
📖 第 1 页 / 共 5 页
字号:
; 			goto	step_3;    
	rjmp L122
L153:
	.dbline 671
; 			}			
; 			
; 			
; 			adc_mux=0X07;  		    			//采样当前电流大小		
	ldi R24,7
	sts _adc_mux,R24
	.dbline 672
; 			Delay(0xff);   						//A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 673
; 			ad_reulst();						//刷新A/D采样值		
	rcall _ad_reulst
	.dbline 674
; 			Second_count_3=0;					//为3秒等待做准备,因为拔掉电池插座也会满足此条件,但应该进入0电流报警,所以等3秒再检测电流
	clr R2
	clr R3
	sts _Second_count_3+1,R3
	sts _Second_count_3,R2
	.dbline 675
; 			if(adc_old > 0x33 && adc_old < 217) //检测当前电流是不是小于2A---0.6V A/D
	ldi R24,51
	ldi R25,0
	lds R2,_adc_old
	lds R3,_adc_old+1
	cp R24,R2
	cpc R25,R3
	brlo X13
	rjmp L155
X13:
	movw R24,R2
	cpi R24,217
	ldi R30,0
	cpc R25,R30
	brlo X14
	rjmp L155
X14:
	.dbline 676
; 			{			  		    	   		//小于则跳到第5步
L157:
	.dbline 678
	.dbline 685
	.dbline 686
L158:
	.dbline 677
; 			 	  while(Second_count_3<4)
	lds R24,_Second_count_3
	lds R25,_Second_count_3+1
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brlo L157
	.dbline 687
; 				  {	  
; //				  	  temp |= (1<<anther);
; //	  				  alarm();
; //					  PORTB &= ~(1<<P0);		//关断P0   4A恒流充电
; //					  PORTD &= ~(1<<P1);		//关断P1   4A恒流充电
; //					  PORTB &= ~(1<<P2);		//关断P2   4A恒流充电
; //					  PORTB |= (1<<P3);   		//打开P3   4A恒流充电				  
; 					  ;		
; 				  }	  
; 					  adc_mux=0X07;
	ldi R24,7
	sts _adc_mux,R24
	.dbline 688
; 			          Delay(0xff);   			//A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 689
; 			 		  ad_reulst();
	rcall _ad_reulst
	.dbline 692
; 			
; 				
; 					  Second_count_3=00; 		//延时3分钟
	clr R2
	clr R3
	sts _Second_count_3+1,R3
	sts _Second_count_3,R2
	.dbline 693
;  					  Second_count_4=00; 		//Second_count_1*Second_count_2=60*3
	sts _Second_count_4+1,R3
	sts _Second_count_4,R2
	rjmp L161
L160:
	.dbline 695
; 				while(adc_old > 0x33 && adc_old < 217)//延时3分钟,防止电流反灌
; 				{	  
	.dbline 696
; 				 	TC1321_SET_138(900);	 	// D/A送电压13.8V
	ldi R16,900
	ldi R17,3
	rcall _TC1321_SET_138
L163:
	.dbline 697
	.dbline 697
	.dbline 697
L164:
	.dbline 697
; 				    while(Second_count_3<119){;}   //死等2分钟
	lds R24,_Second_count_3
	lds R25,_Second_count_3+1
	cpi R24,119
	ldi R30,0
	cpc R25,R30
	brlo L163
	rjmp L167
L166:
	.dbline 701
; 					
; 					
; 							while(1)
; 							{
	.dbline 702
; 							 adc_mux=0X01;  	//采样当前电池电压大小		
	ldi R24,1
	sts _adc_mux,R24
	.dbline 703
; 							 Delay(0xff);   	//A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 704
; 							 ad_reulst();	  	//刷新A/D采样值
	rcall _ad_reulst
	.dbline 705
; 							if(adc_old < 353)	//检测当前电压是不是大于13V 
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,97
	ldi R30,1
	cpc R25,R30
	brsh L169
	.dbline 706
; 							{goto	step_3;}		
	.dbline 706
	rjmp L122
L169:
	.dbline 708
; 								
; 					  		 	adc_mux=0X07;
	ldi R24,7
	sts _adc_mux,R24
	.dbline 709
; 			          		 	Delay(0xff);   	//A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 710
; 			 		  		 	ad_reulst();
	rcall _ad_reulst
	.dbline 712
; 					  			//if(adc_old > 0x45 )
; 								if(adc_old > 0x33 && adc_old < 217)
	ldi R24,51
	ldi R25,0
	lds R2,_adc_old
	lds R3,_adc_old+1
	cp R24,R2
	cpc R25,R3
	brsh L171
	movw R24,R2
	cpi R24,217
	ldi R30,0
	cpc R25,R30
	brsh L171
	.dbline 713
; 								{goto	step_7;}	
	.dbline 713
	rjmp L131
L171:
	.dbline 715
	ldi R16,814
	ldi R17,3
	rcall _TC1321_SET_1
	.dbline 716
L167:
	.dbline 700
	rjmp L166
X7:
	.dbline 717
L161:
	.dbline 694
	ldi R24,51
	ldi R25,0
	lds R2,_adc_old
	lds R3,_adc_old+1
	cp R24,R2
	cpc R25,R3
	brsh L173
	movw R24,R2
	cpi R24,217
	ldi R30,0
	cpc R25,R30
	brsh X15
	rjmp L160
X15:
L173:
	.dbline 718
; 												
; 				 			 TC1321_SET_1(814);	// D/输出14.1V,不补偿					
; 							}
; 				}	   
; 			}		
L155:
	.dbline 719
L143:
	.dbline 638
	rjmp L142
X8:
	.dbline 722
; 		}	
; /************************ 第五步 分析、绿色灯 12V *****************************/
; step_5:
; goto	 step_3;
	rjmp L122
X9:
	.dbline 725
; /****************** 第六步 最高充电电压、15.8V 绿色指示灯 *********************/	
; step_6:
; goto	 step_3;
L131:
	.dbline 728
; /******************* 第七步 维护模式、浮充13.8V 绿色指示灯 ********************/	 
; step_7:
;        		Second_count_1=00; 					//延时48小时,等于172800秒 
	clr R2
	clr R3
	sts _Second_count_1+1,R3
	sts _Second_count_1,R2
	.dbline 729
;  			Second_count_2=00; 					//Second_count_1*Second_count_2=60*2880
	sts _Second_count_2+1,R3
	sts _Second_count_2,R2
	rjmp L177
L176:
	.dbline 731
; 			while(1)
; 			{
	.dbline 732
; 			 temp |= (1<<anther);
	lds R24,_temp
	ori R24,32
	sts _temp,R24
	.dbline 733
; 			 alarm();	   		    			//报警扫描			
	rcall _alarm
	.dbline 734
; 			 PORTD |= (1<<Green);				//指示灯显示绿色		
	sbi 0xb,3
	.dbline 735
; 			 PORTD &= ~(1<<Red);					//红色指示灯灭
	cbi 0xb,2
	.dbline 737
; 				  	 											  	 
; 		     PORTB &= ~(1<<P0);					//关断P0   2A恒流充电
	cbi 0x5,1
	.dbline 738
; 			 PORTD &= ~(1<<P1);					//关断P1   2A恒流充电
	cbi 0xb,5
	.dbline 739
; 			 PORTB |= (1<<P2);   				//打开P2   2A恒流充电
	sbi 0x5,7
	.dbline 740
; 			 PORTB &= ~(1<<P3);					//关断P3   2A恒流充电
	cbi 0x5,6
	.dbline 742
; 			
; 			 TC1321_SET_138(900);	 	// D/A送电压13.8V 	
	ldi R16,900
	ldi R17,3
	rcall _TC1321_SET_138
	.dbline 744
; 					
; 			 if(Second_count_2>28880)   //大于48小时 28880
	ldi R24,28880
	ldi R25,112
	lds R2,_Second_count_2
	lds R3,_Second_count_2+1
	cp R24,R2
	cpc R25,R3
	brsh L179
	.dbline 745
; 			 {						   	//则跳到第8步					    
	.dbline 746
; 			 goto	step_8;
	rjmp L181
L179:
	.dbline 750
; 			 }
; 			 
; 			
; 		 	 adc_mux=0X07;
	ldi R24,7
	sts _adc_mux,R24
	.dbline 751
; 			 Delay(0xff);   				  		  //A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 752
; 			 ad_reulst();
	rcall _ad_reulst
	.dbline 753
; 			 Second_count_3=00;
	clr R2
	clr R3
	sts _Second_count_3+1,R3
	sts _Second_count_3,R2
	.dbline 754
; 			 if(adc_old > 56 && adc_old < 90 )     	  //电流	   0.5A
	ldi R24,56
	ldi R25,0
	lds R2,_adc_old
	lds R3,_adc_old+1
	cp R24,R2
	cpc R25,R3
	brsh L182
	movw R24,R2
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brsh L182
	.dbline 755
; 			 {	
L184:
	.dbline 757
	.dbline 764
	.dbline 765
L185:
	.dbline 756
; 			 	  while(Second_count_3<3) 			  //等待2秒,因为拔掉电池,电流下降也会满足此条件,但是应该进入
	lds R24,_Second_count_3
	lds R25,_Second_count_3+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brlo L184
	.dbline 766
; 				  {	  								  //0电流报警,而不该进入第四步,所以等待2秒															   
; 				  	//temp |= (1<<anther);
; 				  	//alarm();	   
; 					//PORTB &= ~(1<<P0);			  //关断P0   2A恒流充电
; 					//PORTD &= ~(1<<P1);			  //关断P1   2A恒流充电
; 					//PORTB |= (1<<P2);   			  //打开P2   2A恒流充电
; 					//PORTB &= ~(1<<P3);			  //关断P3   2A恒流充电	
; 					;		  
; 				  }	  
; 					 adc_mux=0X07;
	ldi R24,7
	sts _adc_mux,R24
	.dbline 767
; 			         Delay(0xff);   				  //A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 768
; 			 		 ad_reulst();
	rcall _ad_reulst
	.dbline 769
; 					 if(adc_old > 56 && adc_old < 90 )
	ldi R24,56
	ldi R25,0
	lds R2,_adc_old
	lds R3,_adc_old+1
	cp R24,R2
	cpc R25,R3
	brsh L187
	movw R24,R2
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brsh L187
	.dbline 770
; 					 {
	.dbline 771
; 			 		 goto	step_8;  
	rjmp L181
L187:
	.dbline 773
; 					 }
; 			 }				 
L182:
	.dbline 776
; 			 
; 			 
; 			adc_mux=0X01;  		   				  	 //采样当前电池电压大小		
	ldi R24,1
	sts _adc_mux,R24
	.dbline 777
; 			Delay(0xff);   		   				  	 //A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 778
; 			ad_reulst();		   				  	 //刷新A/D采样值
	rcall _ad_reulst
	.dbline 779
; 			if(adc_old < 353) 					  	 //检测当前电压是不是小于13V 
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,97
	ldi R30,1
	cpc R25,R30
	brsh L189
	.dbline 780
; 			{			  		   				  	 //小于则跳到第3步
	.dbline 781
; 			goto	step_3;    
	rjmp L122
L189:
	.dbline 783
L177:
	.dbline 730
	rjmp L176
L181:
	.dbline 786
; 			}	
; 		}
; /***************** 第八步 脉冲维护充电 13.8V 绿色指示灯 ***********************/			
; step_8:		
; 		_nop_();  
	nop
	rjmp L192
L191:
	.dbline 788
; 	while(1)
; 		{temp &= ~(1<<anther);		   //关断0电流报警
	.dbline 788
	lds R24,_temp
	andi R24,223
	sts _temp,R24
	.dbline 789
; 		 alarm();	   		    	   //报警扫描		
	rcall _alarm
	.dbline 790
; 		 PORTB &= ~(1<<P0);			   //关断P0   0.16A恒流充电
	cbi 0x5,1
	.dbline 791
; 		 PORTD |= (1<<P1); 			   //打开P1   0.16A恒流充电
	sbi 0xb,5
	.dbline 792
; 		 PORTB &= ~(1<<P2);			   //关断P2   0.16A恒流充电
	cbi 0x5,7
	.dbline 793
; 		 PORTB &= ~(1<<P3);			   //关断P3   0.16A恒流充电			
	cbi 0x5,6
	.dbline 794
; 		 TC1321_SET_1(945);	 		   // D/A送电压11.5V 	
	ldi R16,945
	ldi R17,3
	rcall _TC1321_SET_1
	.dbline 795
; 		 PORTD |= (1<<Green);		   //指示灯显示绿色		
	sbi 0xb,3
	.dbline 796
; 		 PORTD &= ~(1<<Red);		   //红色指示灯灭
	cbi 0xb,2
	.dbline 799
; 	
; 	
; 		 adc_mux=0X01;  			   //采样当前电池电压大小		
	ldi R24,1
	sts _adc_mux,R24
	.dbline 800
; 		 Delay(0xff);   			   //A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 801
; 		 ad_reulst();				   //刷新A/D采样值
	rcall _ad_reulst
	.dbline 802
; 			if(adc_old < 345)   	   //检测当前电压是不是小于13V
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,89
	ldi R30,1
	cpc R25,R30
	brsh L194
	.dbline 803
; 			{			  			   //如果小于则跳到第3步
	.dbline 804
; 				goto	step_3;    	
	rjmp L122
L194:
	.dbline 807
; 			}	
; 	
; 		 adc_mux=0X01;  	    	   //采样当前电池电压大小		
	ldi R24,1
	sts _adc_mux,R24
	.dbline 808
; 		 Delay(0xff);   			   //A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 809
; 		 ad_reulst();				   //刷新A/D采样值
	rcall _ad_reulst
	.dbline 810
; 			if(adc_old < 350)   	   //检测当前电压是不是小于13.2V 
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,94
	ldi R30,1
	cpc R25,R30
	brsh L196
	.dbline 811
; 			{			  		   	   //则用脉冲充电
	.dbline 812
; 			PORTD |= (1<<Green);   	   //指示灯显示绿色		
	sbi 0xb,3
	.dbline 813
; 			PORTD &= ~(1<<Red);	   	   //红色指示灯灭			
	cbi 0xb,2
	.dbline 815
; 			
; 			PORTB &= ~(1<<P0);	   	   //关断P0   2A恒流充电
	cbi 0x5,1
	.dbline 816
; 			PORTD |= (1<<P1); 	   	   //打开P1   2A恒流充电
	sbi 0xb,5
	.dbline 817
; 			PORTB &= ~(1<<P2);	   	   //关断P2   2A恒流充电
	cbi 0x5,7
	.dbline 818
; 			PORTB &= ~(1<<P3);	   	   //关断P3   2A恒流充电
	cbi 0x5,6
	.dbline 819
; 			 TC1321_SET_138(892);  	   // D/A送电压13.8V 	
	ldi R16,892
	ldi R17,3
	rcall _TC1321_SET_138
	.dbline 821
; 			 
; 			adc_mux=0X01;  		   	   //采样当前电池电压大小		
	ldi R24,1
	sts _adc_mux,R24
	.dbline 822
; 			Delay(0xff);   		   	   //A/D采样延时
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 823
; 			ad_reulst();		   	   //刷新A/D采样值
	rcall _ad_reulst
	rjmp L199
L198:
	.dbline 827
	.dbline 828
	ldi R24,1
	sts _adc_mux,R24
	.dbline 829
	ldi R16,255
	ldi R17,0
	rcall _Delay
	.dbline 830
	rcall _ad_reulst
	.dbline 831
L199:
	.dbline 826
; 
; 			
; 					while(adc_old >= 345 && adc_old < 365)  //检测当前电压是不是小于13.75V
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,89
	ldi R30,1
	cpc R25,R30
	brlo L201
	cpi R24,109
	ldi R30,1
	cpc R25,R30
	brlo L198
L201:
	.dbline 832
; 					{
; 					adc_mux=0X01;  	   //采样当前电池电压大小		
; 					Delay(0xff);   	   //A/D采样延时
; 					ad_reulst();	   //刷新A/D采样值
; 			  		} 
; 			 }				 
L196:
	.dbline 833
L192:
	.dbline 787
	rjmp L191
X10:
	.dbline 834
L120:
	.dbline 566
	rjmp L122
X11:
	.dbline -2
L116:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\MYDATA~1\DIFAMO~1\soft_Difa\test.c
_temp1::
	.blkb 1
	.dbsym e temp1 _temp1 c
_xyz::
	.blkb 2
	.dbsym e xyz _xyz i
_abc::
	.blkb 2
	.dbsym e abc _abc i
_temp_rep::
	.blkb 2
	.dbsym e temp_rep _temp_rep I
_now_temp::
	.blkb 2
	.dbsym e now_temp _now_temp I
_DA_result::
	.blkb 1
	.dbsym e DA_result _DA_result c
_adc_mux::
	.blkb 1
	.dbsym e adc_mux _adc_mux c
_Second_count_4::
	.blkb 2
	.dbsym e Second_count_4 _Second_count_4 i
_Second_count_3::
	.blkb 2
	.dbsym e Second_count_3 _Second_count_3 i
_Second_count_2::
	.blkb 2
	.dbsym e Second_count_2 _Second_count_2 i
_Second_count_1::
	.blkb 2
	.dbsym e Second_count_1 _Second_count_1 i
_adc_rel::
	.blkb 2
	.dbsym e adc_rel _adc_rel i
_cycle::
	.blkb 1
	.dbsym e cycle _cycle c
_temp::
	.blkb 1
	.dbsym e temp _temp c
_temp_dange::
	.blkb 1
	.dbsym e temp_dange _temp_dange c
_temp_step::
	.blkb 1
	.dbsym e temp_step _temp_step C
_temp_start::
	.blkb 2
	.dbsym e temp_start _temp_start i
_xxyy::
	.blkb 2
	.dbsym e xxyy _xxyy i
_adc_old:

⌨️ 快捷键说明

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