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

📄 discharger.s

📁 这是一个电池放电器
💻 S
📖 第 1 页 / 共 4 页
字号:
	rjmp L84
L83:
	.dbline 173
	.dbline 174
	rcall _discharge_init
	.dbline 175
	rcall _discharge
	.dbline 176
	ldi R16,100
	ldi R17,0
	rcall _delay_nms
	.dbline 177
L84:
	.dbline 172
	rjmp L83
X16:
	.dbline -2
L82:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e desktop _desktop fV
;             ID -> R20
	.even
_desktop::
	rcall push_gset1
	sbiw R28,7
	.dbline -1
	.dbline 181
; 	 while(1)
; 	   {
; 	     discharge_init();
; 		 discharge();
; 		 delay_nms(100);
; 	   }
;   }
; 
; void desktop(void)
;  {
	.dbline 182
;     unsigned char ID=1;
	ldi R20,1
	.dbline 183
; 	  if(RunTab==ID)
	lds R2,_RunTab
	cp R2,R20
	brne L87
	.dbline 184
; 	    {  
	.dbline 185
; 		   if(keyboard==up){keyboard=0;RunTab=2;}
	lds R24,_keyboard
	cpi R24,1
	brne L89
	.dbline 185
	.dbline 185
	clr R2
	sts _keyboard,R2
	.dbline 185
	ldi R24,2
	sts _RunTab,R24
	.dbline 185
L89:
	.dbline 186
	ldi R24,10
	std y+2,R24
	ldi R24,<L91
	ldi R25,>L91
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_string
	.dbline 187
	ldi R24,5
	std y+6,R24
	lds R2,_sec
	std y+4,R2
	lds R2,_min
	std y+2,R2
	lds R2,_hour
	std y+0,R2
	ldi R18,1
	ldi R16,11
	rcall _LCD_write_time
	.dbline 188
L87:
	.dbline -2
L86:
	adiw R28,7
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ID 20 c
	.dbend
	.dbfunc e Discharging _Discharging fV
;             ID -> R10
	.even
_Discharging::
	rcall push_gset3
	sbiw R28,9
	.dbline -1
	.dbline 192
; 		   LCD_write_string(0,1,"Start",10);
; 		   LCD_write_time(11,1,hour,min,sec,5);
; 		}
;  }
; 
; void Discharging(void)
;  {
	.dbline 193
;    unsigned char ID=11;
	ldi R24,11
	mov R10,R24
	.dbline 194
; 	  if(RunTab==ID)
	lds R2,_RunTab
	cp R2,R24
	breq X17
	rjmp L93
X17:
	.dbline 195
; 	    {  
	.dbline 196
; 		   if(keyboard!=0)
	lds R2,_keyboard
	tst R2
	breq L95
	.dbline 197
; 		     { 
	.dbline 198
; 			   if(keyboard==back){RunTab=2;}
	mov R24,R2
	cpi R24,8
	brne L97
	.dbline 198
	.dbline 198
	ldi R24,2
	sts _RunTab,R24
	.dbline 198
L97:
	.dbline 200
; 			   
; 			   keyboard=0;
	clr R2
	sts _keyboard,R2
	.dbline 201
; 			 } 
L95:
	.dbline 203
; 		    //LCD_write_string(0,0,Menu[path],15);
; 			LCD_write_number(0,0,3,BT1_V,"V",6);
	ldi R24,6
	std y+8,R24
	ldi R24,<L99
	ldi R25,>L99
	std y+7,R25
	std y+6,R24
	lds R2,_BT1_V
	lds R3,_BT1_V+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,3
	std y+0,R24
	clr R18
	clr R16
	rcall _LCD_write_number
	.dbline 204
; 			LCD_write_number(0,1,3,BT1_I,"A",6);
	ldi R24,6
	std y+8,R24
	ldi R24,<L100
	ldi R25,>L100
	std y+7,R25
	std y+6,R24
	lds R2,_BT1_I
	lds R3,_BT1_I+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,3
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_number
	.dbline 205
; 			if(BT1_state&(1<<2))
	lds R2,_BT1_state
	sbrs R2,2
	rjmp L101
	.dbline 206
; 			LCD_write_string(7,0,"Finish",15);
	ldi R24,15
	std y+2,R24
	ldi R24,<L103
	ldi R25,>L103
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,7
	rcall _LCD_write_string
	rjmp L102
L101:
	.dbline 208
; 			  else
; 			LCD_write_number(7,0,0,PWM,"PWM",0);
	clr R2
	std y+8,R2
	ldi R24,<L104
	ldi R25,>L104
	std y+7,R25
	std y+6,R24
	lds R2,_PWM
	lds R3,_PWM+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	clr R2
	std y+0,R2
	clr R18
	ldi R16,7
	rcall _LCD_write_number
L102:
	.dbline 209
	ldi R24,15
	std y+8,R24
	ldi R24,<L105
	ldi R25,>L105
	std y+7,R25
	std y+6,R24
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_BT1_mAh+2
	lds R5,_BT1_mAh+2+1
	lds R2,_BT1_mAh
	lds R3,_BT1_mAh+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	rcall div32u
	std y+2,R16
	std y+3,R17
	std y+4,R18
	std y+5,R19
	ldi R24,1
	std y+0,R24
	ldi R18,1
	ldi R16,7
	rcall _LCD_write_number
	.dbline 210
L93:
	.dbline -2
L92:
	adiw R28,9
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r ID 10 c
	.dbend
	.dbfunc e D882 _D882 fV
;             ID -> R20
	.even
_D882::
	rcall push_gset1
	sbiw R28,9
	.dbline -1
	.dbline 214
; 			LCD_write_number(7,1,1,BT1_mAh/100,"mAh",15);
; 		}
;  }
;  
; void D882(void)
;  {
	.dbline 215
;    unsigned char ID=12;
	ldi R20,12
	.dbline 216
; 	  if(RunTab==ID)
	lds R2,_RunTab
	cp R2,R20
	breq X18
	rjmp L107
X18:
	.dbline 217
; 	    {  
	.dbline 218
; 		   if(keyboard!=0)
	lds R2,_keyboard
	tst R2
	breq L109
	.dbline 219
; 		     { 
	.dbline 220
; 			   if(keyboard==back){RunTab=2;}
	mov R24,R2
	cpi R24,8
	brne L111
	.dbline 220
	.dbline 220
	ldi R24,2
	sts _RunTab,R24
	.dbline 220
L111:
	.dbline 222
; 			   
; 			   keyboard=0;
	clr R2
	sts _keyboard,R2
	.dbline 223
; 			 } 
L109:
	.dbline 224
	ldi R24,6
	std y+2,R24
	lds R2,_path
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_Menu
	ldi R25,>_Menu
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	std y+1,R3
	std y+0,R2
	clr R18
	clr R16
	rcall _LCD_write_string
	.dbline 225
	ldi R24,10
	std y+8,R24
	ldi R24,<L113
	ldi R25,>L113
	std y+7,R25
	std y+6,R24
	lds R4,_BT1_time+2
	lds R5,_BT1_time+2+1
	lds R2,_BT1_time
	lds R3,_BT1_time+1
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	clr R2
	std y+0,R2
	clr R18
	ldi R16,7
	rcall _LCD_write_number
	.dbline 226
	clr R2
	std y+8,R2
	ldi R24,<L114
	ldi R25,>L114
	std y+7,R25
	std y+6,R24
	lds R2,_BT1_T
	lds R3,_BT1_T+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,1
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_number
	.dbline 227
	clr R2
	std y+8,R2
	ldi R24,<L115
	ldi R25,>L115
	std y+7,R25
	std y+6,R24
	lds R2,_D882_P
	lds R3,_D882_P+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	clr R2
	std y+0,R2
	ldi R18,1
	ldi R16,7
	rcall _LCD_write_number
	.dbline 228
L107:
	.dbline -2
L106:
	adiw R28,9
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ID 20 c
	.dbend
	.dbfunc e Record _Record fV
;             ID -> R20
	.even
_Record::
	rcall push_gset1
	sbiw R28,9
	.dbline -1
	.dbline 232
; 		    LCD_write_string(0,0,Menu[path],6);
; 			LCD_write_number(7,0,0,BT1_time,"sec",10);	
; 			LCD_write_number(0,1,1,BT1_T,"C",0); 
; 			LCD_write_number(7,1,0,D882_P,"mW",0);
; 		}
;  }
;  
; void Record(void)
;   {     
	.dbline 233
;      unsigned char ID=13; //程序标识
	ldi R20,13
	.dbline 234
; 		 if(RunTab==ID)
	lds R2,_RunTab
	cp R2,R20
	breq X21
	rjmp L117
X21:
	.dbline 235
; 		 {  
	.dbline 236
; 		   if(keyboard!=0)
	lds R2,_keyboard
	tst R2
	brne X22
	rjmp L119
X22:
	.dbline 237
; 		   {
	.dbline 238
; 		    if(keyboard==back){RunTab=2;}
	mov R24,R2
	cpi R24,8
	brne L121
	.dbline 238
	.dbline 238
	ldi R24,2
	sts _RunTab,R24
	.dbline 238
L121:
	.dbline 239
; 		    if((BT1_V_num_temp<BT1_V_num-1)&&BT1_V_num!=0)
	lds R24,_BT1_V_num
	lds R25,_BT1_V_num+1
	sbiw R24,1
	lds R2,_BT1_V_num_temp
	lds R3,_BT1_V_num_temp+1
	cp R2,R24
	cpc R3,R25
	brsh L123
	lds R2,_BT1_V_num
	lds R3,_BT1_V_num+1
	tst R2
	brne X19
	tst R3
	breq L123
X19:
	.dbline 240
; 			 {
	.dbline 241
; 			   if(keyboard==up)
	lds R24,_keyboard
	cpi R24,1
	brne L125
	.dbline 242
; 			    { 
	.dbline 243
; 				  BT1_V_num_temp++;
	lds R24,_BT1_V_num_temp
	lds R25,_BT1_V_num_temp+1
	adiw R24,1
	sts _BT1_V_num_temp+1,R25
	sts _BT1_V_num_temp,R24
	.dbline 244
; 				  EEPROM_READ(BT1_V_num_temp*2,bt1_v_temp_1);
	ldi R24,2
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_bt1_v_temp_1
	ldi R19,>_bt1_v_temp_1
	lds R2,_BT1_V_num_temp
	lds R3,_BT1_V_num_temp+1
	ldi R16,2
	ldi R17,0
	push R18
	push R19
	movw R18,R2
	rcall empy16s
	pop R19
	pop R18
	rcall _EEPROMReadBytes
	.dbline 245
; 				 }
L125:
	.dbline 246
; 			  }
L123:
	.dbline 248
; 
; 			if(BT1_V_num_temp>0)
	lds R2,_BT1_V_num_temp
	lds R3,_BT1_V_num_temp+1
	tst R2
	brne X20
	tst R3
	breq L127
X20:
	.dbline 249
; 			 {
	.dbline 250
; 			   if(keyboard==down)
	lds R24,_keyboard
	cpi R24,2
	brne L129
	.dbline 251
; 			    { 
	.dbline 252
; 				  BT1_V_num_temp--;
	lds R24,_BT1_V_num_temp
	lds R25,_BT1_V_num_temp+1
	sbiw R24,1
	sts _BT1_V_num_temp+1,R25
	sts _BT1_V_num_temp,R24
	.dbline 253
; 				  EEPROM_READ(BT1_V_num_temp*2,bt1_v_temp_1);
	ldi R24,2
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_bt1_v_temp_1
	ldi R19,>_bt1_v_temp_1
	lds R2,_BT1_V_num_temp
	lds R3,_BT1_V_num_temp+1
	ldi R16,2
	ldi R17,0
	push R18
	push R19
	movw R18,R2
	rcall empy16s
	pop R19
	pop R18
	rcall _EEPROMReadBytes
	.dbline 254
; 				 }
L129:
	.dbline 255
; 			  }
L127:
	.dbline 256
; 			   keyboard=0;
	clr R2
	sts _keyboard,R2
	.dbline 257
; 			}
L119:
	.dbline 258
	ldi R24,8
	std y+8,R24
	ldi R24,<L99
	ldi R25,>L99
	std y+7,R25
	std y+6,R24
	lds R2,_bt1_v_temp_1
	lds R3,_bt1_v_temp_1+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,3
	std y+0,R24
	ldi R18,1
	clr R16
	rcall _LCD_write_number
	.dbline 259
	ldi R24,8
	std y+8,R24
	ldi R24,<L131
	ldi R25,>L131
	std y+7,R25
	std y+6,R24
	lds R2,_BT1_V_num_temp
	lds R3,_BT1_V_num_temp+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	clr R2
	std y+0,R2
	clr R18
	clr R16
	rcall _LCD_write_number
	.dbline 260
	ldi R24,15
	std y+8,R24
	ldi R24,<L131
	ldi R25,>L131
	std y+7,R25
	std y+6,R24
	lds R2,_BT1_V_num
	lds R3,_BT1_V_num+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	clr R2
	std y+0,R2
	clr R18
	ldi R16,10
	rcall _LCD_write_number
	.dbline 261
	ldi R24,15
	std y+8,R24
	ldi R24,<L99
	ldi R25,>L99
	std y+7,R25
	std y+6,R24
	lds R2,_BT1_V
	lds R3,_BT1_V+1
	clr R4
	clr R5
	std y+2,R2
	std y+3,R3
	std y+4,R4
	std y+5,R5
	ldi R24,3
	std y+0,R24
	ldi R18,1
	ldi R16,10
	rcall _LCD_write_number
	.dbline 262
L117:
	.dbline -2
L116:
	adiw R28,9
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ID 20 c
	.dbend
	.dbfunc e Clear _Clear fV
;             ID -> R10
	.even
_Clear::
	rcall push_gset3
	sbiw R28,9
	.dbline -1
	.dbline 266
; 			LCD_write_number(0,1,3,bt1_v_temp_1,"V",8);
; 			LCD_write_number(0,0,0,BT1_V_num_temp,"min",8);
; 		    LCD_write_number(10,0,0,BT1_V_num,"min",15);
; 	        LCD_write_number(10,1,3,BT1_V,"V",15);
; 		 }
; } 
; 
; void Clear (void)
;  {   
	.dbline 267
;     unsigned char ID=14;
	ldi R24,14
	mov R10,R24
	.dbline 268
; 	  if(RunTab==ID)
	lds R2,_RunTab
	cp R2,R24
	breq X23
	rjmp L133
X23:
	.dbline 269
; 	    {  
	.dbline 270
; 		   if(keyboard!=0)
	lds R2,_keyboard
	tst R2
	brne X24
	rjmp L135
X24:
	.dbline 271
; 		     { 
	.dbline 272
; 			   if(keyboard==back){RunTab=2;}
	mov R24,R2
	cpi R24,8
	brne L137
	.dbline 272
	.dbline 272
	ldi R24,2
	sts _RunTab,R24
	.dbline 272
L137:
	.dbline 273
; 			   if(keyboard==enter_long)
	lds R24,_keyboard
	cpi R24,20
	breq X25
	rjmp L139
X25:
	.dbline 274
; 	             { 
	.dbline 275
; 	              BT1_mAh=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _BT1_mAh+1,R21
	sts _BT1_mAh,R20
	sts _BT1_mAh+2+1,R23
	sts _BT1_mAh+2,R22
	.dbline 276
; 			 	  BT1_time=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _BT1_time+1,R21
	sts _BT1_time,R20
	sts _BT1_time+2+1,R23
	sts _BT1_time+2,R22
	.dbline 277
; 		     	  EEPROM_WRITE(0x01F0,BT1_mAh);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_BT1_mAh
	ldi R19,>_BT1_mAh
	ldi R16,496
	ldi R17,1
	rcall _EEPROMWriteBytes
	.dbline 278
; 		    	  EEPROM_WRITE(0x01F4,BT1_time);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_BT1_time
	ldi R19,>_BT1_time
	ldi R16,500
	ldi R17,1
	rcall _EEPROMWriteBytes
	.dbline 279
; 		     	  BT1_V_num=0;BT1_V_num_temp=0;
	clr R2
	clr R3
	sts _BT1_V_num+1,R3
	sts _BT1_V_num,R2
	.dbline 279
	sts _BT1_V_num_temp+1,R3
	sts _BT1_V_num_temp,R2
	.dbline 280
; 		      	  EEPROM_WRITE(0x01F8,BT1_V_num);
	ldi R24,2
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_BT1_V_num
	ldi R19,>_BT1_V_num
	ldi R16,504
	ldi R17,1
	rcall _EEPROMWriteBytes
	.dbline 281
; 		     	  sc_bt1_record=7500;
	ldi R24,7500
	ldi R25,29
	sts _sc_bt1_record+1,R25
	sts _sc_bt1_record,R24
	.dbline 282
; 	           	  }
L139:
	.dbline 283
; 			      keyboard=0;
	clr R2
	sts _keyboard,R2
	.dbline 284
; 			 } 
L135:
	.dbline 285
	ldi R24,15
	std y+2,R24
	lds R2,_path
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_Menu
	ldi R25,>_Menu
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	std y+1,R3
	std y+0,R2
	clr R18
	clr R16
	rcall _LCD_write_string
	.dbline 286
	ldi R24,15
	std y+8,R24
	ldi R24,<L105
	ldi R25,>L105
	std y+7,R25
	std y+6,R24
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_BT1_mAh+2
	lds R5,_BT1_mAh+2+1
	lds R2,_BT1_mAh
	lds R3,_BT1_mAh+1
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R2
	movw R18,R4
	rcall div32u
	std y+2,R16
	std y+3,R17
	std y+4,R18
	std y+5,R19
	ldi R24,1
	std y+0,R24
	ldi R18,1
	ldi R16,7
	rcall _LCD_write_number
	.dbline 287
L133:
	.dbline -2
L132:
	adiw R28,9
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r ID 10 c
	.dbend
	.dbfunc e usart _usart fV
;             ID -> R10
	.even
_usart::
	rcall push_gset3
	sbiw R28,3
	.dbline -1
	.dbline 291
; 		    LCD_write_string(0,0,Menu[path],15);
; 			LCD_write_number(7,1,1,BT1_mAh/100,"mAh",15);
; 		}      
;  }
;  
; void usart(void)
;  { 
	.dbline 292
;    unsigned char ID=15;
	ldi R24,15
	mov R10,R24
	.dbline 293
; 	  if(RunTab==ID)
	lds R2,_RunTab
	cp R2,R24
	breq X27
	rjmp L142
X27:
	.dbline 294
; 	    {  
	.dbline 295
; 		   if(keyboard!=0)
	lds R2,_keyboard
	tst R2
	breq L144
	.dbline 296
; 		     { 
	.dbline 297
; 			   if(keyboard==back){RunTab=2;}
	mov R24,R2
	cpi R24,8
	brne L146
	.dbline 297
	.dbline 297
	ldi R24,2
	sts _RunTab,R24
	.dbline 297
L146:
	.dbline 298
; 			   if((keyboard==enter)&&BT1_V_num!=0)
	lds R24,_keyboard
	cpi R24,4
	brne L148
	lds R2,_BT1_V_num
	lds R3,_BT1_V_num+1
	tst R2
	brne X26
	tst R3
	breq L148
X26:
	.dbline 299
; 			    {
	.dbline 300
; 				  BT1_state|=(1<<7);
	lds R24,_BT1_state

⌨️ 快捷键说明

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