📄 main.s
字号:
in R22,0x16
andi R22,8
out 0x16,R22
tst R22
brne L145
X53:
.dbline 400
; { //等待该键释放
.dbline 401
; Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
xjmp L148
L147:
.dbline 402
; while(KeySt04==0) Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
L148:
.dbline 402
in R22,0x16
andi R22,8
out 0x16,R22
tst R22
breq L147
X54:
.dbline 403
; break;
xjmp L122
L145:
.dbline 405
; }
; else if(KeySt01==0) //取消退出
in R22,0x16
andi R22,1
out 0x16,R22
tst R22
brne L150
X55:
.dbline 406
; {
.dbline 408
; //等待该键释放
; Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
xjmp L153
L152:
.dbline 409
; while(KeySt01==0) Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
L153:
.dbline 409
in R22,0x16
andi R22,1
out 0x16,R22
tst R22
breq L152
X56:
.dbline 410
; *Pos=Bak_Pos;
movw R30,R10
std z+1,R13
std z+0,R12
.dbline 411
; break;
xjmp L122
L150:
L135:
L124:
.dbline 413
; }
; }
L121:
.dbline 369
xjmp L120
L122:
.dbline -2
L113:
.dbline 0 ; func end
adiw R28,3
xjmp pop_xgsetF0FC
.dbsym r Bak_Pos 12 i
.dbsym r j 20 c
.dbsym r i 22 c
.dbsym r Pos 10 pi
.dbend
.dbfunc e MainMenu _MainMenu fV
; retry -> R10
; pdata -> R10,R11
.even
_MainMenu::
xcall push_xgset303C
movw R10,R16
sbiw R28,5
.dbline -1
.dbline 417
; }
;
; void MainMenu(unsigned int *pdata)
; {
.dbline 419
; unsigned char retry;
; IniData_From_EEPROM(); //先读取一下原先的数据
xcall _IniData_From_EEPROM
.dbline 420
; ClearLCD();
xcall _ClearLCD
.dbline 422
; //显示主菜单测试
; CLI();//关中断
cli
.dbline 423
; UsrSel=0;
clr R2
sts _UsrSel,R2
.dbline 424
; PrintConstAscStr(0,16,Menustr6[0],13);
ldi R24,13
std y+2,R24
ldi R24,<_Menustr6
ldi R25,>_Menustr6
std y+1,R25
std y+0,R24
ldi R18,16
clr R16
xcall _PrintConstAscStr
.dbline 425
; PrintConstAscStr(1,16,Menustr6[1],13);
ldi R24,13
std y+2,R24
ldi R24,<_Menustr6+13
ldi R25,>_Menustr6+13
std y+1,R25
std y+0,R24
ldi R18,16
ldi R16,1
xcall _PrintConstAscStr
.dbline 426
; PrintConstAscStr(2,16,Menustr6[2],13);
ldi R24,13
std y+2,R24
ldi R24,<_Menustr6+26
ldi R25,>_Menustr6+26
std y+1,R25
std y+0,R24
ldi R18,16
ldi R16,2
xcall _PrintConstAscStr
.dbline 427
; PrintConstAscStr(3,16,Menustr6[3],13);
ldi R24,13
std y+2,R24
ldi R24,<_Menustr6+39
ldi R25,>_Menustr6+39
std y+1,R25
std y+0,R24
ldi R18,16
ldi R16,3
xcall _PrintConstAscStr
.dbline 428
; PrintConstAscStr(4,16,Menustr6[4],13);
ldi R24,13
std y+2,R24
ldi R24,<_Menustr6+52
ldi R25,>_Menustr6+52
std y+1,R25
std y+0,R24
ldi R18,16
ldi R16,4
xcall _PrintConstAscStr
.dbline 429
; PrintConstAscStr(5,16,Menustr6[5],13);
ldi R24,13
std y+2,R24
ldi R24,<_Menustr6+65
ldi R25,>_Menustr6+65
std y+1,R25
std y+0,R24
ldi R18,16
ldi R16,5
xcall _PrintConstAscStr
.dbline 432
;
; //默认选中第一项
; PrintOneASCII(0,0,'>');
ldi R24,62
std y+0,R24
clr R18
clr R16
xcall _PrintOneASCII
.dbline 433
; PrintOneASCII(1,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,1
xcall _PrintOneASCII
.dbline 434
; PrintOneASCII(2,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,2
xcall _PrintOneASCII
.dbline 435
; PrintOneASCII(3,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,3
xcall _PrintOneASCII
.dbline 436
; PrintOneASCII(4,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,4
xcall _PrintOneASCII
.dbline 437
; PrintOneASCII(5,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,5
xcall _PrintOneASCII
.dbline 439
;
; KeyIni();KeyInput();
in R24,0x18
ori R24,15
out 0x18,R24
.dbline 439
in R24,0x17
andi R24,240
out 0x17,R24
xjmp L162
L161:
.dbline 441
; while(1)
; {
.dbline 442
; if(KeySt01==0) //退出
in R24,0x16
andi R24,1
out 0x16,R24
tst R24
brne L164
X59:
.dbline 443
; {
.dbline 445
; //等待该键释放
; Delay(200); //去抖
ldi R16,200
ldi R17,0
xcall _Delay
xjmp L167
L166:
.dbline 446
; while(KeySt01==0) Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
L167:
.dbline 446
in R24,0x16
andi R24,1
out 0x16,R24
tst R24
breq L166
X60:
.dbline 447
; UsrSel=255;
ldi R24,255
sts _UsrSel,R24
.dbline 448
; break; //退出
xjmp L163
L164:
.dbline 450
; }
; else if(KeySt02==0) //向上一项
in R20,0x16
andi R20,2
out 0x16,R20
tst R20
breq X86
xjmp L169
X86:
X61:
.dbline 451
; {
.dbline 452
; Delay(200); //去抖
ldi R16,200
ldi R17,0
xcall _Delay
xjmp L172
L171:
.dbline 453
; while(KeySt02==0) Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
L172:
.dbline 453
in R20,0x16
andi R20,2
out 0x16,R20
tst R20
breq L171
X62:
.dbline 454
; if(UsrSel==0) UsrSel=5;
lds R2,_UsrSel
tst R2
brne L174
X63:
.dbline 454
ldi R24,5
sts _UsrSel,R24
xjmp L175
L174:
.dbline 455
; else if(UsrSel>0) UsrSel--;
ldi R24,0
lds R2,_UsrSel
cp R24,R2
brsh L176
X64:
.dbline 455
mov R24,R2
subi R24,1
sts _UsrSel,R24
L176:
L175:
.dbline 457
; //显示选择当前项
; PrintOneASCII(0,0,' ');
ldi R24,32
std y+0,R24
clr R18
clr R16
xcall _PrintOneASCII
.dbline 458
; PrintOneASCII(1,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,1
xcall _PrintOneASCII
.dbline 459
; PrintOneASCII(2,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,2
xcall _PrintOneASCII
.dbline 460
; PrintOneASCII(3,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,3
xcall _PrintOneASCII
.dbline 461
; PrintOneASCII(4,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,4
xcall _PrintOneASCII
.dbline 462
; PrintOneASCII(5,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,5
xcall _PrintOneASCII
.dbline 463
; PrintOneASCII(UsrSel,0,'>');
ldi R24,62
std y+0,R24
clr R18
lds R16,_UsrSel
xcall _PrintOneASCII
.dbline 464
; }
xjmp L170
L169:
.dbline 465
; else if(KeySt03==0) //向下一项
in R20,0x16
andi R20,4
out 0x16,R20
tst R20
breq X87
xjmp L178
X87:
X65:
.dbline 466
; {
.dbline 467
; Delay(200); //去抖
ldi R16,200
ldi R17,0
xcall _Delay
xjmp L181
L180:
.dbline 468
; while(KeySt03==0) Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
L181:
.dbline 468
in R20,0x16
andi R20,4
out 0x16,R20
tst R20
breq L180
X66:
.dbline 469
; if(UsrSel==5) UsrSel=0;
lds R24,_UsrSel
cpi R24,5
brne L183
X67:
.dbline 469
clr R2
sts _UsrSel,R2
xjmp L184
L183:
.dbline 470
; else if(UsrSel<5) UsrSel++;
lds R24,_UsrSel
cpi R24,5
brsh L185
X68:
.dbline 470
subi R24,255 ; addi 1
sts _UsrSel,R24
L185:
L184:
.dbline 472
; //显示选择当前项
; PrintOneASCII(0,0,' ');
ldi R24,32
std y+0,R24
clr R18
clr R16
xcall _PrintOneASCII
.dbline 473
; PrintOneASCII(1,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,1
xcall _PrintOneASCII
.dbline 474
; PrintOneASCII(2,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,2
xcall _PrintOneASCII
.dbline 475
; PrintOneASCII(3,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,3
xcall _PrintOneASCII
.dbline 476
; PrintOneASCII(4,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,4
xcall _PrintOneASCII
.dbline 477
; PrintOneASCII(5,0,' ');
ldi R24,32
std y+0,R24
clr R18
ldi R16,5
xcall _PrintOneASCII
.dbline 478
; PrintOneASCII(UsrSel,0,'>');
ldi R24,62
std y+0,R24
clr R18
lds R16,_UsrSel
xcall _PrintOneASCII
.dbline 479
; }
xjmp L179
L178:
.dbline 480
; else if(KeySt04==0) //选中当前项
in R20,0x16
andi R20,8
out 0x16,R20
tst R20
brne L187
X69:
.dbline 481
; {
.dbline 482
; Delay(200); //去抖
ldi R16,200
ldi R17,0
xcall _Delay
xjmp L190
L189:
.dbline 483
; while(KeySt04==0) Delay(200);
ldi R16,200
ldi R17,0
xcall _Delay
L190:
.dbline 483
in R20,0x16
andi R20,8
out 0x16,R20
tst R20
breq L189
X70:
.dbline 484
; break;
xjmp L163
L187:
L179:
L170:
.dbline 486
; }
; }
L162:
.dbline 440
xjmp L161
L163:
.dbline 487
; ClearLCD();
xcall _ClearLCD
.dbline 488
; if(UsrSel==0) //LCD背光开关
lds R2,_UsrSel
tst R2
brne L192
X71:
.dbline 489
; {
.dbline 490
; Lcdak=!Lcdak;
lds R2,_Lcdak
tst R2
brne L194
X72:
ldi R20,1
ldi R21,0
xjmp L195
L194:
clr R20
clr R21
L195:
sts _Lcdak,R20
.dbline 491
; LCD_AK_Control(Lcdak); //开关背光
mov R16,R20
xcall _LCD_AK_Control
.dbline 492
; if(Lcdak) PrintConstAscStr(1,0,ScreenStr12[22],16); else PrintConstAscStr(1,0,ScreenStr12[23],16);
lds R2,_Lcdak
tst R2
breq L196
X73:
.dbline 492
ldi R24,16
std y+2,R24
ldi R24,<_ScreenStr12+352
ldi R25,>_ScreenStr12+352
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
xcall _PrintConstAscStr
xjmp L197
L196:
.dbline 492
ldi R24,16
std y+2,R24
ldi R24,<_ScreenStr12+368
ldi R25,>_ScreenStr12+368
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
xcall _PrintConstAscStr
L197:
.dbline 493
; Delay(800);
ldi R16,800
ldi R17,3
xcall _Delay
.dbline 494
; }else if(UsrSel==1) //开关播放时间显示
xjmp L193
L192:
.dbline 494
lds R24,_UsrSel
cpi R24,1
brne L200
X74:
.dbline 495
; {
.dbline 496
; SWPlayTime=!SWPlayTime;
lds R2,_SWPlayTime
tst R2
brne L202
X75:
ldi R20,1
ldi R21,0
xjmp L203
L202:
clr R20
clr R21
L203:
sts _SWPlayTime,R20
.dbline 497
; if(SWPlayTime) PrintConstAscStr(1,0,ScreenStr12[24],16); else PrintConstAscStr(1,0,ScreenStr12[25],16);
tst R20
breq L204
X76:
.dbline 497
ldi R24,16
std y+2,R24
ldi R24,<_ScreenStr12+384
ldi R25,>_ScreenStr12+384
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
xcall _PrintConstAscStr
xjmp L205
L204:
.dbline 497
ldi R24,16
std y+2,R24
ldi R24,<_ScreenStr12+400
ldi R25,>_ScreenStr12+400
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
xcall _PrintConstAscStr
L205:
.dbline 498
; Delay(800);
ldi R16,800
ldi R17,3
xcall _Delay
.dbline 499
; }
xjmp L201
L200:
.dbline 500
; else if(UsrSel==2) //音量控制
lds R24,_UsrSel
cpi R24,2
brne L208
X77:
.dbline 501
; {
.dbline 502
; ChangeVS1011Vol(&CurVol);
ldi R16,<_CurVol
ldi R17,>_CurVol
xcall _ChangeVS1011Vol
.dbline 503
; }
xjmp L209
L208:
.dbline 504
; else if(UsrSel==3) //低音调整
lds R24,_UsrSel
cpi R24,3
brne L210
X78:
.dbline 505
; {
.dbline 506
; ChangeVS1011Bass(&CurBass);
ldi R16,<_CurBass
ldi R17,>_CurBass
xcall _ChangeVS1011Bass
.dbline 507
; }
xjmp L211
L210:
.dbline 508
; else if(UsrSel==4) //外接喇叭
lds R24,_UsrSel
cpi R24,4
brne L212
X79:
.dbline 509
; {
.dbline 510
; SWSpeaker=!SWSpeaker;
lds R2,_SWSpeaker
tst R2
brne L214
X80:
ldi R20,1
ldi R21,0
xjmp L215
L214:
clr R20
clr R21
L215:
sts _SWSpeaker,R20
.dbline 511
; if(SWSpeaker) PrintConstAscStr(1,0,ScreenStr12[26],16); else PrintConstAscStr(1,0,ScreenStr12[27],16);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -