📄 mp3.s
字号:
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 + -