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

📄 main.s

📁 采用Mega16+VS1011B+SD卡制作的Mp3
💻 S
📖 第 1 页 / 共 5 页
字号:
	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 + -