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

📄 mp3.s

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 S
📖 第 1 页 / 共 3 页
字号:
	ldd R24,z+1
	andi R24,15
	add R14,R24
	.dbline 311
; 										 (--temp == 255) ? (temp = 59) : 0;
	mov R24,R14
	subi R24,1
	mov R14,R24
	cpi R24,255
	brne L210
	ldi R24,59
	mov R14,R24
	xjmp L210
L210:
	.dbline 312
; 										 ps->min = temp/10;
	ldi R17,10
	mov R16,R14
	xcall div8u
	mov R2,R16
	ldd R30,y+12
	ldd R31,y+13
	std z+1,R2
	.dbline 313
; 										 ps->min <<= 4;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,1
	movw R30,R24
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	std z+0,R24
	.dbline 314
; 										 ps->min += temp%10;
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,1
	movw R2,R24
	ldi R17,10
	mov R16,R14
	xcall mod8u
	movw R30,R2
	ldd R4,z+0
	add R4,R16
	std z+0,R4
	.dbline 315
; 								         break;		
	xjmp L203
L211:
	.dbline 316
; 							    case 2:  temp = ps->sec;
	ldd R30,y+12
	ldd R31,y+13
	ldd R14,z+0
	.dbline 317
; 								         temp >>= 4;
	mov R24,R14
	swap R24
	andi R24,#0x0F
	.dbline 318
; 										 temp &= 0x0f;
	andi R24,15
	mov R14,R24
	.dbline 319
; 										 temp *= 10;
	ldi R24,10
	mul R24,R14
	mov R14,R0
	.dbline 320
; 										 temp += (ps->sec&0x0f);
	ldd R24,z+0
	andi R24,15
	add R14,R24
	.dbline 321
; 										 (--temp == 255) ? (temp = 59) : 0;
	mov R24,R14
	subi R24,1
	mov R14,R24
	cpi R24,255
	brne L213
	ldi R24,59
	mov R14,R24
	xjmp L213
L213:
	.dbline 322
; 										 ps->sec = temp/10;
	ldi R17,10
	mov R16,R14
	xcall div8u
	mov R2,R16
	ldd R30,y+12
	ldd R31,y+13
	std z+0,R2
	.dbline 323
; 										 ps->sec <<= 4;
	ldd R24,z+0
	andi R24,#0x0F
	swap R24
	std z+0,R24
	.dbline 324
; 										 ps->sec += temp%10;
	ldi R17,10
	mov R16,R14
	xcall mod8u
	ldd R30,y+12
	ldd R31,y+13
	ldd R3,z+0
	add R3,R16
	std z+0,R3
	.dbline 325
; 								         break;			 	 
L202:
L203:
	.dbline 327
; 							    }//switch
; 		                     }
L200:
	.dbline 328
;             if(keybuf == K_RIFT) (++ii == 3) ? (ii = 0) : 0;
	lds R24,_keybuf
	cpi R24,6
	brne L214
	.dbline 328
	mov R24,R22
	subi R24,255    ; addi 1
	mov R22,R24
	cpi R22,3
	brne L217
	clr R22
	xjmp L217
L217:
L214:
	.dbline 329
;             if(keybuf == K_LIFT) (--ii == 255) ? (ii = 2) : 0;									 							 
	lds R24,_keybuf
	cpi R24,2
	brne L218
	.dbline 329
	mov R24,R22
	subi R24,1
	mov R22,R24
	cpi R22,255
	brne L221
	ldi R22,2
	xjmp L221
L221:
L218:
	.dbline 330
; 			if(keybuf == K_ESC)  break;
	lds R24,_keybuf
	cpi R24,5
	brne L222
	.dbline 330
	xjmp L182
L222:
	.dbline 331
; 			if(keybuf == K_ENTER) {//根据需要进行一个保护数据动作
	lds R24,_keybuf
	cpi R24,4
	brne L224
	.dbline 331
	.dbline 332
; 					  	 		  break;}
	xjmp L182
L224:
	.dbline 333
L181:
	.dbline 255
	xjmp L180
L182:
	.dbline -2
L179:
	adiw R28,2
	xcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r temp 14 c
	.dbsym r ii 22 c
	.dbsym r page 10 c
	.dbsym l ps 12 pX
	.dbend
	.dbfunc e set_system _set_system fV
;             ii -> R20
	.even
_set_system::
	xcall push_gset2
	.dbline -1
	.dbline 338
;           }
; }
; 
; 
; void set_system(void)
; {
	.dbline 340
;   uchar ii;
;   ii = 0;
	clr R20
	.dbline 341
;   show_clear();
	xcall _show_clear
	xjmp L228
L227:
	.dbline 342
;   while(1){
	.dbline 343
;   		   show_set_system(ii);
	mov R16,R20
	clr R17
	xcall _show_set_system
	.dbline 344
; 		   KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 344
L230:
	.dbline 345
L231:
	.dbline 345
; 		   while(keybuf == NULL);
	lds R2,_keybuf
	tst R2
	breq L230
	.dbline 346
; 		   if(keybuf == K_UP){
	mov R24,R2
	cpi R24,3
	brne L233
	.dbline 346
	.dbline 347
; 		   			 		  (--ii == 255) ? (ii = 2) : 0;
	mov R24,R20
	subi R24,1
	mov R20,R24
	cpi R20,255
	brne L236
	ldi R20,2
	xjmp L236
L236:
	.dbline 348
; 		                     }
L233:
	.dbline 349
; 		   if(keybuf == K_DOWN){
	lds R24,_keybuf
	cpi R24,1
	brne L237
	.dbline 349
	.dbline 350
; 		   			 		  (++ii == 3) ? (ii = 0) : 0;
	mov R24,R20
	subi R24,255    ; addi 1
	mov R20,R24
	cpi R20,3
	brne L240
	clr R20
	xjmp L240
L240:
	.dbline 351
; 		                     }							 
L237:
	.dbline 352
; 		   if(keybuf == K_ESC) break;
	lds R24,_keybuf
	cpi R24,5
	brne L241
	.dbline 352
	xjmp L229
L241:
	.dbline 353
; 		   if(keybuf != K_ENTER) continue;
	lds R24,_keybuf
	cpi R24,4
	breq L243
	.dbline 353
	xjmp L228
L243:
	.dbline 354
	mov R22,R20
	clr R23
	cpi R22,0
	cpc R22,R23
	breq L248
X27:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L249
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L250
	xjmp L245
X28:
	.dbline 354
; 		   switch(ii){
L248:
	.dbline 356
; 		   			  case 0: //设置时间
; 					  	     set_system_time();
	xcall _set_system_time
	.dbline 357
; 					  	     break;
	xjmp L246
L249:
	.dbline 359
; 				      case 1: //设置日期
; 					  	     set_system_date();
	xcall _set_system_date
	.dbline 360
; 					  	     break;
	xjmp L246
L250:
	.dbline 362
; 					  case 2: //设置星期
; 					  	     set_system_week();
	xcall _set_system_week
	.dbline 363
; 					  	     break;
L245:
L246:
	.dbline 365
	xcall _show_clear
	.dbline 366
L228:
	.dbline 342
	xjmp L227
L229:
	.dbline -2
L226:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r ii 20 c
	.dbend
	.dbfunc e main_menu _main_menu fV
;           path -> y+0
;             ii -> R20
;       time_out -> R22
	.even
_main_menu::
	xcall push_gset3
	sbiw R28,10
	.dbline -1
	.dbline 369
; 		             }
;  			show_clear();					 
;           } 
; }
; void main_menu(void) //主菜单
; {
	.dbline 373
;   uchar ii;
;   uchar time_out;
;   uchar path[10];
;   ii = 0;	
	clr R20
	.dbline 374
;   time_out = 0;
	clr R22
	.dbline 375
;   show_clear();	  
	xcall _show_clear
	xjmp L253
L252:
	.dbline 376
;   while(1){		  
	.dbline 377
;            show_menu(ii);
	mov R16,R20
	clr R17
	xcall _show_menu
	.dbline 378
; 		   KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 378
	xjmp L256
L255:
	.dbline 379
;   		   while(keybuf == NULL){delay_ms(200);	
	.dbline 379
	ldi R16,200
	ldi R17,0
	xcall _delay_ms
	.dbline 380
; 						         if(++time_out >= 50) return;		   						   
	mov R24,R22
	subi R24,255    ; addi 1
	mov R22,R24
	cpi R22,50
	brlo L258
	.dbline 380
	xjmp L251
L258:
	.dbline 381
L256:
	.dbline 379
	lds R2,_keybuf
	tst R2
	breq L255
	.dbline 382
; 						        }
;            time_out = 0;																
	clr R22
	.dbline 383
; 		   if(keybuf == K_UP){
	mov R24,R2
	cpi R24,3
	brne L260
	.dbline 383
	.dbline 384
; 		                    if((ii%2) == 0) {
	ldi R17,2
	mov R16,R20
	xcall mod8u
	tst R16
	brne L262
	.dbline 384
	.dbline 385
; 									  	     if(ii != 0) ii -= 2;
	tst R20
	brne X31
	xjmp L253
X31:
	.dbline 385
	subi R20,2
	.dbline 386
; 							                }
	xjmp L253
L262:
	.dbline 387
; 		   		   		       else {if(ii != 1) ii -= 2;
	.dbline 387
	cpi R20,1
	brne X32
	xjmp L253
X32:
	.dbline 387
	subi R20,2
	.dbline 388
; 							        }
	.dbline 389
; 						    continue;
	xjmp L253
L260:
	.dbline 391
; 		                   }
; 			if(keybuf == K_DOWN){
	lds R24,_keybuf
	cpi R24,1
	brne L268
	.dbline 391
	.dbline 392
; 		                    if((ii%2) == 0) {
	ldi R17,2
	mov R16,R20
	xcall mod8u
	tst R16
	brne L270
	.dbline 392
	.dbline 393
; 									  	     if(ii != 4) ii += 2;
	cpi R20,4
	brne X33
	xjmp L253
X33:
	.dbline 393
	subi R20,254    ; addi 2
	.dbline 394
; 											}
	xjmp L253
L270:
	.dbline 395
; 		   		   		       else {if(ii != 5) ii += 2;
	.dbline 395
	cpi R20,5
	brne X34
	xjmp L253
X34:
	.dbline 395
	subi R20,254    ; addi 2
	.dbline 396
; 							        }
	.dbline 397
; 				            continue;
	xjmp L253
L268:
	.dbline 399
; 		                   }			   
; 	        if(keybuf == K_RIFT){
	lds R24,_keybuf
	cpi R24,6
	brne L276
	.dbline 399
	.dbline 400
; 		                    if((ii%2) == 0)  ii += 1;
	ldi R17,2
	mov R16,R20
	xcall mod8u
	tst R16
	breq X35
	xjmp L253
X35:
	.dbline 400
	inc R20
	.dbline 401
; 				            continue;
	xjmp L253
L276:
	.dbline 403
; 		                   }
; 		    if(keybuf == K_LIFT){
	lds R24,_keybuf
	cpi R24,2
	brne L280
	.dbline 403
	.dbline 404
; 		                    if((ii%2) != 0)  ii -= 1;
	ldi R17,2
	mov R16,R20
	xcall mod8u
	tst R16
	brne X36
	xjmp L253
X36:
	.dbline 404
	dec R20
	.dbline 405
; 				            continue;
	xjmp L253
L280:
	.dbline 407
; 		                   }				   
; 			if(keybuf == K_ESC) break;
	lds R24,_keybuf
	cpi R24,5
	brne L284
	.dbline 407
	xjmp L254
L284:
	.dbline 408
; 		    if(keybuf != K_ENTER) continue;
	lds R24,_keybuf
	cpi R24,4
	breq L286
	.dbline 408
	xjmp L253
L286:
	.dbline 409
	mov R10,R20
	clr R11
	tst R10
	brne X29
	tst R11
	breq L291
X29:
	movw R24,R10
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L292
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L293
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brne X37
	xjmp L298
X37:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X38
	xjmp L299
X38:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X39
	xjmp L302
X39:
	xjmp L288
X30:
	.dbline 409
;             switch(ii){
L291:
	.dbline 411
; 			case 0: //编辑播放
; 				 	 Play_edit_data();
	xcall _Play_edit_data
	.dbline 412
; 				     show_clear();
	xcall _show_clear
	.dbline 413
; 			 	  	 break;
	xjmp L289
L292:
	.dbline 415
; 			 case 1: //系统设置
; 			         set_system();
	xcall _set_system
	.dbline 416
; 				     show_clear();
	xcall _show_clear
	.dbline 417
; 			 	  	 break;
	xjmp L289
L293:
	.dbline 419
; 			 case 2: //直选播放
; 			 	     get_sys_path(&path[0]);
	movw R16,R28
	xcall _get_sys_path
	.dbline 420
; 					 Print_str("选择工作目录=");
	ldi R16,<L294
	ldi R17,>L294
	xcall _Print_str
	.dbline 421
; 					 Print_str(&path[0]);
	movw R16,R28
	xcall _Print_str
	.dbline 422
; 					 Print_str("\r\n");
	ldi R16,<L295
	ldi R17,>L295
	xcall _Print_str
	.dbline 423
; 					 if(path[0] == 0x00) {show_clear();break;}
	ldd R2,y+0
	tst R2
	brne L296
	.dbline 423
	.dbline 423
	xcall _show_clear
	.dbline 423
	xjmp L289
L296:
	.dbline 424
; 					 adjust_cheng(1);  //手动操作打开MP3通道  
	ldi R16,1
	ldi R17,0
	xcall _adjust_cheng
	.dbline 425
; 					 Play_xuanzhe(&path[0],0);
	clr R18
	clr R19
	movw R16,R28
	xcall _Play_xuanzhe
	.dbline 426
; 					 adjust_cheng(0);  //恢复原来通道
	clr R16
	clr R17
	xcall _adjust_cheng
	.dbline 427
; 					 show_clear();
	xcall _show_clear
	.dbline 428
; 			 	  	 break;
	xjmp L289
L298:
	.dbline 430
; 			 case 3: //录音开始
; 			 	  	 Play_record();//创建文件
	xcall _Play_record
	.dbline 431
; 					 show_clear();
	xcall _show_clear
	.dbline 432
; 			 	  	 break;
	xjmp L289
L299:
	.dbline 434
; 			 case 4: //随机播放
; 			 	     get_sys_path(&path[0]);
	movw R16,R28
	xcall _get_sys_path
	.dbline 435
; 					 Print_str("选择工作目录=");
	ldi R16,<L294
	ldi R17,>L294
	xcall _Print_str
	.dbline 436
; 					 Print_str(&path[0]);
	movw R16,R28
	xcall _Print_str
	.dbline 437
; 					 Print_str("\r\n");
	ldi R16,<L295
	ldi R17,>L295
	xcall _Print_str
	.dbline 438
; 					 if(path[0] == 0x00) {show_clear();break;}
	ldd R2,y+0
	tst R2
	brne L300
	.dbline 438
	.dbline 438
	xcall _show_clear
	.dbline 438
	xjmp L289
L300:
	.dbline 439
; 					 adjust_cheng(1);  //手动操作打开MP3通道
	ldi R16,1
	ldi R17,0
	xcall _adjust_cheng
	.dbline 440
; 					 Play_audio(&path[0]);
	movw R16,R28
	xcall _Play_audio
	.dbline 441
; 					 adjust_cheng(0);  //恢复原来通道
	clr R16
	clr R17
	xcall _adjust_cheng
	.dbline 442
; 					 show_clear(); 
	xcall _show_clear
	.dbline 443
; 			 	  	 break;
	xjmp L289
L302:
	.dbline 445
; 			 case 5: //音源切换
; 			 	  	 Line_in();
	xcall _Line_in
	.dbline 446
; 					 show_clear();
	xcall _show_clear
	.dbline 447
; 			 	  	 break;	 		 		 		 		 
L288:
L289:
	.dbline 449
L253:
	.dbline 376
	xjmp L252
L254:
	.dbline -2
L251:
	adiw R28,10
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym l path 0 A[10:10]c
	.dbsym r ii 20 c
	.dbsym r time_out 22 c
	.dbend
	.dbfunc e main _main fV
;             ii -> <dead>
	.even
_main::
	.dbline -1
	.dbline 452
; 			}
; 		}//while(1);			  					  
;   }
; void main(void)
; {
	.dbline 454
;   uchar ii;
;   Init_system();
	xcall _Init_system
	xjmp L305
L304:
	.dbline 455
;   while(1){
	.dbline 456
;   KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 456
	.dbline 457
;   show_status();	   //播放起空闲的状态
	xcall _show_status
	xjmp L308
L307:
	.dbline 458
;   while(1){
	.dbline 459
;     	   Read_InfoDs1302buf(); 
	xcall _Read_InfoDs1302buf
	.dbline 460
;            show_tiem();
	xcall _show_tiem
	.dbline 461
; 		   autoplay(&timebuf);  //自动播放测试playedit.c
	ldi R16,<_timebuf
	ldi R17,>_timebuf
	xcall _autoplay
	.dbline 462
; 		   if(keybuf != NULL) {keybuf = NULL;break;} 
	lds R2,_keybuf
	tst R2
	breq L310
	.dbline 462
	.dbline 462
	clr R2
	sts _keybuf,R2
	.dbline 462
	xjmp L309
L310:
	.dbline 463
L308:
	.dbline 458
	xjmp L307
L309:
	.dbline 464
	xcall _main_menu
	.dbline 465
L305:
	.dbline 455
	xjmp L304
X40:
	.dbline -2
L303:
	.dbline 0 ; func end
	ret
	.dbsym l ii 1 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
_timebuf::
	.blkb 7
	.dbsym e timebuf _timebuf X
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L295:
	.blkb 3
	.area idata
	.byte 13,10,0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L294:
	.blkb 14
	.area idata
	.byte 209,161,212,241,185,164,215,247,196,191,194,188,61,0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L11:
	.blkb 17
	.area idata
	.byte 'S,'t,'a,'r,'t,32,'s,'y,'s,'t,'e,'m,32,46,46,46
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L7:
	.blkb 13
	.area idata
	.byte 'D,'i,'s,'k,32,'e,'r,'r,'o,'r,13,10,0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L6:
	.blkb 15
	.area idata
	.byte 'i,'n,'i,'t,32,'D,'i,'s,'k,46,46,46,'o,'k,0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L3:
	.blkb 19
	.area idata
	.byte 'i,'n,'i,'t,32,'K,'e,'y,'b,'o,'a,'r,'d,46,46,46
	.byte 'o,'k,0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c
L2:
	.blkb 17
	.area idata
	.byte 'i,'n,'i,'t,32,'V,'s,49,48,48,51,46,46,46,'o,'k
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\software\MP3程序\Main\mp3.c

⌨️ 快捷键说明

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