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

📄 menulanguage.s

📁 Atmega64单片机程序(完整工程)
💻 S
字号:
	.module MenuLanguage.C
	.area text(rom, con, rel)
	.even
_DispMenuLanguageInit::
	sbiw R28,1
; /******************************************************************************
;  * MenuLanguage.C - 语言切换模版
;  ******************************************************************************/
; #include "SYS_Config.h"
; #include "GUI_Config.h"
; #include "GUI.H"
; #include "Menu.H"
; 
; /*
; 这里是语言切换界面,这里也演示了如何通过提前修改Item Where
; void DispMenuLanguageInit()函数中:
; -----------------------------
;     if(Flash == FlashMode_ManualInit){//首次进入本层菜单,调整Item where
;         PUSH();
;         Item = language;
;         Where = Item;
;     }
; -----------------------------
; 
; */
; //语言
; //Bar型菜单
; void DispMenuLanguageInit()
; {
; //----------------------
;     GUI_Clear();
	xcall _GUI_Clear
; //--------------------
; //切换Bar显示内容
; //-----------------
;     BarMenu = &MenuLanguage[language];
	lds R2,_language
	ldi R24,5
	mul R24,R2
	movw R2,R0
	ldi R24,<_MenuLanguage
	ldi R25,>_MenuLanguage
	add R2,R24
	adc R3,R25
	sts _BarMenu+1,R3
	sts _BarMenu,R2
;     ItemNum = (*BarMenu).TextNum;
	movw R30,R2
	adiw R30,2
	lpm R30,Z
	sts _ItemNum,R30
;     DispItem = (*BarMenu).Text;
	movw R30,R2
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	sts _DispItem+1,R31
	sts _DispItem,R30
; 
;     //用户的初始化代码请放在这里
;     //显示父菜单名字
; 
;     //显示按键对应的文字提示,1-->"选择"
;     GUI_DispStringAt(*(Tip[language].Text+1),1,LCD_YSIZE-14);
	ldi R24,54
	std y+0,R24
	ldi R18,1
	lds R2,_language
	ldi R24,5
	mul R24,R2
	movw R30,R0
	ldi R24,<_Tip
	ldi R25,>_Tip
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ldd R16,z+2
	ldd R17,z+3
	xcall _GUI_DispStringAt
;     //显示按键对应的文字提示,0-->"退出"
; 	GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
	ldi R24,54
	std y+0,R24
	ldi R18,73
	lds R2,_language
	ldi R24,5
	mul R24,R2
	movw R30,R0
	ldi R24,<_Tip
	ldi R25,>_Tip
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ldd R16,z+8
	ldd R17,z+9
	xcall _GUI_DispStringAt
; 	
; 	if(Flash == FlashMode_ManualInit)
	lds R24,_Flash
	cpi R24,2
	brne L2
; 	{//首次进入本层菜单,调整Item where
;         PUSH();
	xcall _PUSH
;         Item = language;
	lds R2,_language
	sts _Item,R2
;         Where = Item;
	sts _Where,R2
;     }
L2:
;     //公共初始化部分
;     BarMenuInit();
	xcall _BarMenuInit
L1:
	adiw R28,1
	.dbline 0 ; func end
	ret
	.even
_DispMenuLanguageUp::
; }
; /*
; ************************************************************
; *   FIXME!
; *   这里是做语言切换的
; *   但是这会有一个有意思的问题:
; *   我们的菜单保存机制是备份过去的父菜单的Text等信息的,因此即便是更换了语言,
; *   这个保存的信息依然没有被更换,就是说,在这里切换语言后,显示的父索引还是没有变
; *   改正方法:
; *   通常语言切换的地方就一个路径而已,因此更换语言后正确修改保存的信息...
; ************************************************************
; */
; void DispMenuLanguageUp()
; {
; //-----------
;     PUSH();
	xcall _PUSH
; //-------------------
;     GUI_Clear();
	xcall _GUI_Clear
;     if(Item==0)
	lds R2,_Item
	tst R2
	brne L5
;         language = CH;
	clr R2
	sts _language,R2
	xjmp L6
L5:
;         
; 	else if(Item==1)
	lds R24,_Item
	cpi R24,1
	brne L7
;         language = EN;
	ldi R24,1
	sts _language,R24
L7:
L6:
; 		
;     GUI_Delay(10);
	ldi R16,10
	ldi R17,0
	xcall _GUI_Delay
; 	
;     GUI_Clear();
	xcall _GUI_Clear
; //-------------------
;     POP();
	xcall _POP
L4:
	.dbline 0 ; func end
	ret
	.even
_DispMenuLanguageDown::
; //-------------------
; }
; void DispMenuLanguageDown()
; {
;     POP();
	xcall _POP
L9:
	.dbline 0 ; func end
	ret
	.even
_DispMenuLanguageLeft::
; }
; void DispMenuLanguageLeft()
; {
;     BarMenuLeft();
	xcall _BarMenuLeft
L10:
	.dbline 0 ; func end
	ret
	.even
_DispMenuLanguageRight::
; }
; void DispMenuLanguageRight()
; {
;     BarMenuRight();
	xcall _BarMenuRight
L11:
	.dbline 0 ; func end
	ret

⌨️ 快捷键说明

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