📄 avr.lst
字号:
(0047) break ;
10D4 C009 RJMP 0x10DE
(0048) }
(0049) case 1 :
(0050) {
(0051) Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
10D5 2722 CLR R18
10D6 940E4664 CALL 0x4664
10D8 DF53 RCALL _Jump2Menu
(0052) break ;
10D9 C004 RJMP 0x10DE
(0053) }
(0054) default :
(0055) {
(0056) Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
10DA 2722 CLR R18
10DB 940E4664 CALL 0x4664
10DD DF4E RCALL _Jump2Menu
(0057) break ;
10DE 940E43C0 CALL pop_gset1
10E0 9508 RET
(0058) }
(0059) }
(0060)
(0061) }
(0062) void DispMenuFuncDown()
(0063) {
(0064) POP();
_DispMenuFuncDown:
10E1 D29F RCALL _POP
10E2 9508 RET
(0065) }
(0066)
(0067) void DispMenuFuncLeft()
(0068) {
(0069) BarMenuLeft();
_DispMenuFuncLeft:
10E3 D368 RCALL _BarMenuLeft
10E4 9508 RET
(0070) }
(0071) void DispMenuFuncRight()
(0072) {
(0073) BarMenuRight();
_DispMenuFuncRight:
10E5 D3F8 RCALL _BarMenuRight
10E6 9508 RET
_DispMenuLanguageInit:
10E7 9721 SBIW R28,1
FILE: E:\电子制作\FAT_SD_MENU\MENU\MenuLanguage.C
(0001) /******************************************************************************
(0002) * MenuLanguage.C - 语言切换模版
(0003) ******************************************************************************/
(0004) #include "SYS_Config.h"
(0005) #include "GUI_Config.h"
(0006) #include "GUI.H"
(0007) #include "Menu.H"
(0008)
(0009) /*
(0010) 这里是语言切换界面,这里也演示了如何通过提前修改Item Where
(0011) void DispMenuLanguageInit()函数中:
(0012) -----------------------------
(0013) if(Flash == FlashMode_ManualInit){//首次进入本层菜单,调整Item where
(0014) PUSH();
(0015) Item = language;
(0016) Where = Item;
(0017) }
(0018) -----------------------------
(0019)
(0020) */
(0021) //语言
(0022) //Bar型菜单
(0023) void DispMenuLanguageInit()
(0024) {
(0025) //----------------------
(0026) GUI_Clear();
10E8 940E3AAD CALL _GUI_Clear
10EA 940E4699 CALL 0x4699
(0027) //--------------------
(0028) //切换Bar显示内容
(0029) //-----------------
(0030) BarMenu = &MenuLanguage[language];
10EC 0110 MOVW R2,R0
10ED ED8E LDI R24,0xDE
10EE 940E4571 CALL 0x4571
(0031) ItemNum = (*BarMenu).TextNum;
(0032) DispItem = (*BarMenu).Text;
(0033)
(0034) //用户的初始化代码请放在这里
(0035) //显示父菜单名字
(0036)
(0037) //显示按键对应的文字提示,1-->"选择"
(0038) GUI_DispStringAt(*(Tip[language].Text+1),1,LCD_YSIZE-14);
(0039) //显示按键对应的文字提示,0-->"退出"
(0040) GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
(0041)
(0042) if(Flash == FlashMode_ManualInit)
10F0 91800198 LDS R24,Flash
10F2 3082 CPI R24,2
10F3 F429 BNE 0x10F9
(0043) {//首次进入本层菜单,调整Item where
(0044) PUSH();
10F4 D264 RCALL _PUSH
(0045) Item = language;
10F5 90200199 LDS R2,language
10F7 940E4C94 CALL 0x4C94
(0046) Where = Item;
(0047) }
(0048) //公共初始化部分
(0049) BarMenuInit();
10F9 D2E7 RCALL _BarMenuInit
10FA 9621 ADIW R28,1
10FB 9508 RET
(0050) }
(0051) /*
(0052) ************************************************************
(0053) * FIXME!
(0054) * 这里是做语言切换的
(0055) * 但是这会有一个有意思的问题:
(0056) * 我们的菜单保存机制是备份过去的父菜单的Text等信息的,因此即便是更换了语言,
(0057) * 这个保存的信息依然没有被更换,就是说,在这里切换语言后,显示的父索引还是没有变
(0058) * 改正方法:
(0059) * 通常语言切换的地方就一个路径而已,因此更换语言后正确修改保存的信息...
(0060) ************************************************************
(0061) */
(0062) void DispMenuLanguageUp()
(0063) {
(0064) //-----------
(0065) PUSH();
_DispMenuLanguageUp:
10FC D25C RCALL _PUSH
(0066) //-------------------
(0067) GUI_Clear();
10FD 940E3AAD CALL _GUI_Clear
(0068) if(Item==0)
10FF 902008E4 LDS R2,Item
1101 2022 TST R2
1102 F421 BNE 0x1107
(0069) language = CH;
1103 2422 CLR R2
1104 92200199 STS language,R2
1106 C007 RJMP 0x110E
(0070)
(0071) else if(Item==1)
1107 918008E4 LDS R24,Item
1109 3081 CPI R24,1
110A F419 BNE 0x110E
(0072) language = EN;
110B E081 LDI R24,1
110C 93800199 STS language,R24
(0073)
(0074) GUI_Delay(10);
110E E00A LDI R16,0xA
110F E010 LDI R17,0
1110 940E3AAF CALL _GUI_Delay
(0075)
(0076) GUI_Clear();
1112 940E3AAD CALL _GUI_Clear
(0077) //-------------------
(0078) POP();
1114 D26C RCALL _POP
1115 9508 RET
(0079) //-------------------
(0080) }
(0081) void DispMenuLanguageDown()
(0082) {
(0083) POP();
_DispMenuLanguageDown:
1116 D26A RCALL _POP
1117 9508 RET
(0084) }
(0085) void DispMenuLanguageLeft()
(0086) {
(0087) BarMenuLeft();
_DispMenuLanguageLeft:
1118 D333 RCALL _BarMenuLeft
1119 9508 RET
(0088) }
(0089) void DispMenuLanguageRight()
(0090) {
(0091) BarMenuRight();
_DispMenuLanguageRight:
111A D3C3 RCALL _BarMenuRight
111B 9508 RET
_DispMenuMeasureInit:
111C 9721 SBIW R28,1
FILE: E:\电子制作\FAT_SD_MENU\MENU\MenuMeasure.C
(0001) /*这份代码经源码格式软件格式化过
(0002) yang_hx@neusoft.com */
(0003) /******************************************************************************
(0004) * MenuMeasure.C - "测量"菜单
(0005)
(0006) ******************************************************************************/
(0007) #include "SYS_Config.h"
(0008) #include "GUI_Config.h"
(0009) #include "GUI.H"
(0010) #include "Menu.H"
(0011)
(0012) //测量
(0013) //Bar型菜单
(0014) void DispMenuMeasureInit()
(0015) {
(0016) //----------------------
(0017) GUI_Clear();
111D 940E3AAD CALL _GUI_Clear
111F 940E4699 CALL 0x4699
(0018) //--------------------
(0019) BarMenu=&MenuMeasure[language];
1121 0110 MOVW R2,R0
1122 ED84 LDI R24,0xD4
1123 940E4571 CALL 0x4571
(0020) //--------------------
(0021)
(0022) ItemNum=(*BarMenu).TextNum ;
(0023) DispItem=(*BarMenu).Text ;
(0024)
(0025) //用户的初始化代码请放在这里
(0026)
(0027) //显示按键对应的文字提示,1-->"选择"
(0028) GUI_DispStringAt(*(Tip[language].Text+1),1,LCD_YSIZE-14);
(0029) //显示按键对应的文字提示,0-->"退出"
(0030) GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
(0031)
(0032) BarMenuInit();
1125 D2BB RCALL _BarMenuInit
1126 9621 ADIW R28,1
1127 9508 RET
_DispMenuMeasureUp:
1128 940E43BD CALL push_gset1
112A 9721 SBIW R28,1
(0033) }
(0034)
(0035)
(0036)
(0037) void DispMenuMeasureUp()
(0038) {
(0039) //-----------
(0040) PUSH();
112B D22D RCALL _PUSH
(0041) //-------------------
(0042) GUI_Clear();
112C 940E3AAD CALL _GUI_Clear
112E 940E4A2A CALL 0x4A2A
(0043) switch(Item)
1130 F0E1 BEQ 0x114D
1131 3041 CPI R20,1
1132 E0E0 LDI R30,0
1133 075E CPC R21,R30
1134 F0F9 BEQ 0x1154
1135 3042 CPI R20,2
1136 E0E0 LDI R30,0
1137 075E CPC R21,R30
1138 F111 BEQ 0x115B
1139 3043 CPI R20,3
113A E0E0 LDI R30,0
113B 075E CPC R21,R30
113C F129 BEQ 0x1162
113D 3044 CPI R20,4
113E E0E0 LDI R30,0
113F 075E CPC R21,R30
1140 F409 BNE 0x1142
1141 C027 RJMP 0x1169
1142 3045 CPI R20,5
1143 E0E0 LDI R30,0
1144 075E CPC R21,R30
1145 F409 BNE 0x1147
1146 C029 RJMP 0x1170
1147 3046 CPI R20,6
1148 E0E0 LDI R30,0
1149 075E CPC R21,R30
114A F409 BNE 0x114C
114B C02B RJMP 0x1177
114C C031 RJMP 0x117E
(0044) {
(0045) case 0 : GUI_DispStringAt("Measure 1",20,0);GUI_Delay(500);break ;
114D 2422 CLR R2
114E 8228 STD Y+0,R2
114F E124 LDI R18,0x14
1150 E705 LDI R16,0x75
1151 940E4752 CALL 0x4752
1153 C030 RJMP 0x1184
(0046) case 1 : GUI_DispStringAt("Measure 2",20,0);GUI_Delay(500);break ;
1154 2422 CLR R2
1155 8228 STD Y+0,R2
1156 E124 LDI R18,0x14
1157 E60B LDI R16,0x6B
1158 940E4752 CALL 0x4752
115A C029 RJMP 0x1184
(0047) case 2 : GUI_DispStringAt("Measure 3",20,0);GUI_Delay(500);break ;
115B 2422 CLR R2
115C 8228 STD Y+0,R2
115D E124 LDI R18,0x14
115E E601 LDI R16,0x61
115F 940E4752 CALL 0x4752
1161 C022 RJMP 0x1184
(0048) case 3 : GUI_DispStringAt("Measure 4",20,0);GUI_Delay(500);break ;
1162 2422 CLR R2
1163 8228 STD Y+0,R2
1164 E124 LDI R18,0x14
1165 E507 LDI R16,0x57
1166 940E4752 CALL 0x4752
1168 C01B RJMP 0x1184
(0049) case 4 : GUI_DispStringAt("Measure 5",20,0);GUI_Delay(500);break ;
1169 2422 CLR R2
116A 8228 STD Y+0,R2
116B E124 LDI R18,0x14
116C E40D LDI R16,0x4D
116D 940E4752 CALL 0x4752
116F C014 RJMP 0x1184
(0050) case 5 : GUI_DispStringAt("Measure 6",20,0);GUI_Delay(500);break ;
1170 2422 CLR R2
1171 8228 STD Y+0,R2
1172 E124 LDI R18,0x14
1173 E403 LDI R16,0x43
1174 940E4752 CALL 0x4752
1176 C00D RJMP 0x1184
(0051) case 6 : GUI_DispStringAt("Measure 7",20,0);GUI_Delay(500);break ;
1177 2422 CLR R2
1178 8228 STD Y+0,R2
1179 E124 LDI R18,0x14
117A E309 LDI R16,0x39
117B 940E4752 CALL 0x4752
117D C006 RJMP 0x1184
(0052) default :GUI_DispStringAt("Measure X",20,0);GUI_Delay(500);break ;
117E 2422 CLR R2
117F 8228 STD Y+0,R2
1180 E124 LDI R18,0x14
1181 E20F LDI R16,0x2F
1182 940E4752 CALL 0x4752
(0053) }
(0054) GUI_Clear();
1184 940E3AAD CALL _GUI_Clear
(0055) //-------------------
(0056) POP();
1186 D1FA RCALL _POP
1187 9621 ADIW R28,1
1188 940E43C0 CALL pop_gset1
118A 9508 RET
(0057) //-------------------
(0058) }
(0059)
(0060) void DispMenuMeasureDown()
(0061) {
(0062) POP();
_DispMenuMeasureDown:
118B D1F5 RCALL _POP
118C 9508 RET
(0063) }
(0064)
(0065) void DispMenuMeasureLeft()
(0066) {
(0067) BarMenuLeft();
_DispMenuMeasureLeft:
118D D2BE RCALL _BarMenuLeft
118E 9508 RET
(0068) }
(0069) void DispMenuMeasureRight()
(0070) {
(0071) BarMenuRight();
_DispMenuMeasureRight:
118F D34E RCALL _BarMenuRight
1190 9508 RET
_DispMenuParaInit:
1191 9721 SBIW R28,1
FILE: E:\电子制作\FAT_SD_MENU\MENU\MenuPara.C
(0001) /*这份代码经源码格式软件格式化过
(0002) yang_hx@neusoft.com */
(0003) /******************************************************************************
(0004) * MenuPara.C - "参数"菜单 菜单函数使用模版
(0005) ******************************************************************************/
(0006) #include "SYS_Config.h"
(0007) #include "GUI_Config.h"
(0008) #include "GUI.H"
(0009) #include "Menu.H"
(0010)
(0011)
(0012) //参数
(0013) void DispMenuParaInit()
(0014) {
(0015) //----------------------
(0016) GUI_Clear();
1192 940E3AAD CALL _GUI_Clear
1194 940E4699 CALL 0x4699
(0017) //--------------------
(0018) //切换Bar显示内容
(0019) //---------------------
(0020) BarMenu=&MenuPara[language];
1196 0110 MOVW R2,R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -