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

📄 avr.lst

📁 Atmega64单片机程序(完整工程)
💻 LST
📖 第 1 页 / 共 5 页
字号:
    1197 EC8A      LDI	R24,0xCA
    1198 940E4571  CALL	0x4571
(0021)     ItemNum=(*BarMenu).TextNum ;
(0022)     DispItem=(*BarMenu).Text ;
(0023)     
(0024)     //用户的初始化代码请放在这里
(0025)     
(0026) 	//显示按键对应的文字提示,1-->"选择"
(0027)     GUI_DispStringAt(*(Tip[language].Text+1),1,LCD_YSIZE-14);
(0028)     //显示按键对应的文字提示,0-->"退出"
(0029) 	GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
(0030) 
(0031) 	//公共初始化部分
(0032)     BarMenuInit();
    119A D246      RCALL	_BarMenuInit
    119B 9621      ADIW	R28,1
    119C 9508      RET
_DispMenuParaUp:
    119D 940E43BD  CALL	push_gset1
    119F 9721      SBIW	R28,1
    11A0 940E4A2A  CALL	0x4A2A
(0033) }
(0034) 
(0035) /*
(0036) *****************************************************************************
(0037) 菜单使用例程
(0038) 0.Jump2Menu + FlashMode_AutoInit/FlashMode_ManualInit
(0039)   跳转到任意菜单,FlashMode_AutoInit-->在BarMenuInit函数中执行PUSH;
(0040)   FlashMode_ManualInit-->子菜单的Init函数中PUSH,看例子:DispMenuLanguageInit
(0041) 1.PUSH + POP
(0042)   执行一些功能,并使用LCD后,回到原有界面,回到原有界面--包括反显位置都恢复
(0043) 2.Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
(0044)   执行一些功能,并使用LCD后,执行如上调用,回到原有界面--包括反显位置都恢复
(0045) 3.POP
(0046)   执行一些功能,并使用LCD后,回到上层菜单,恢复上层界面
(0047) 4.Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
(0048)   执行一定功能后,但不占用LCD的话,直接界面不动
(0049) 
(0050) *****************************************************************************
(0051) */
(0052) void DispMenuParaUp()
(0053) {
(0054)     switch(Item)
    11A2 F099      BEQ	0x11B6
    11A3 3041      CPI	R20,1
    11A4 E0E0      LDI	R30,0
    11A5 075E      CPC	R21,R30
    11A6 F0C1      BEQ	0x11BF
    11A7 3042      CPI	R20,2
    11A8 E0E0      LDI	R30,0
    11A9 075E      CPC	R21,R30
    11AA F0E1      BEQ	0x11C7
    11AB 3043      CPI	R20,3
    11AC E0E0      LDI	R30,0
    11AD 075E      CPC	R21,R30
    11AE F409      BNE	0x11B0
    11AF C021      RJMP	0x11D1
    11B0 3044      CPI	R20,4
    11B1 E0E0      LDI	R30,0
    11B2 075E      CPC	R21,R30
    11B3 F409      BNE	0x11B5
    11B4 C023      RJMP	0x11D8
    11B5 C027      RJMP	0x11DD
(0055)     {
(0056)         case 0 :
(0057)         {
(0058)             //Jump2Menu
(0059)             GUI_Clear();
    11B6 940E490F  CALL	0x490F
(0060)             GUI_DispStringAt("Do Something \nthen Back to \nTop Menu!",0,0);
    11B8 EC0F      LDI	R16,0xCF
    11B9 940E49BB  CALL	0x49BB
(0061)             GUI_Delay(5000);
(0062)             Jump2Menu(MenuTopIndex,FlashMode_AutoInit);
    11BB E021      LDI	R18,1
    11BC 2700      CLR	R16
    11BD DE6E      RCALL	_Jump2Menu
(0063)             break ;
    11BE C022      RJMP	0x11E1
(0064)         }
(0065)         case 1 :
(0066)         {
(0067)             //PUSH  -->POP
(0068)             PUSH();
    11BF D199      RCALL	_PUSH
    11C0 940E490F  CALL	0x490F
(0069)             GUI_Clear();
(0070)             GUI_DispStringAt("Do Something \nthen Back to \nThis Menu!",0,0);
    11C2 EA08      LDI	R16,0xA8
    11C3 940E49BB  CALL	0x49BB
(0071)             GUI_Delay(5000);
(0072)             POP();
    11C5 D1BB      RCALL	_POP
(0073)             break ;
    11C6 C01A      RJMP	0x11E1
(0074)         }
(0075)         case 2 :
(0076)         {
(0077)             //ReFlash = 1
(0078)             GUI_Clear();
    11C7 940E490F  CALL	0x490F
(0079)             GUI_DispStringAt("Do Something \nthen Back to \nThis Menu!",0,0);
    11C9 EA08      LDI	R16,0xA8
    11CA 940E49BB  CALL	0x49BB
(0080)             GUI_Delay(5000);
(0081)             Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
    11CC E023      LDI	R18,3
    11CD 940E4664  CALL	0x4664
    11CF DE5C      RCALL	_Jump2Menu
(0082)             break ;
    11D0 C010      RJMP	0x11E1
(0083)         }
(0084)         case 3 :
(0085)         {
(0086)             //POP
(0087)             GUI_Clear();
    11D1 940E490F  CALL	0x490F
(0088)             GUI_DispStringAt("Do Something \nthen Back to \nFather Menu!",0,0);
    11D3 E70F      LDI	R16,0x7F
    11D4 940E49BB  CALL	0x49BB
(0089)             GUI_Delay(5000);
(0090)             POP();
    11D6 D1AA      RCALL	_POP
(0091)             break ;
    11D7 C009      RJMP	0x11E1
(0092)         }
(0093)         case 4 :
(0094)         {
(0095)             //No ReFlash
(0096)             //No Action Here!
(0097)             //Or The Action no need the LCD Disp
(0098)             Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
    11D8 2722      CLR	R18
    11D9 940E4664  CALL	0x4664
    11DB DE50      RCALL	_Jump2Menu
(0099)             break ;
    11DC C004      RJMP	0x11E1
(0100)         }
(0101)         default :
(0102)         {
(0103)             Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
    11DD 2722      CLR	R18
    11DE 940E4664  CALL	0x4664
    11E0 DE4B      RCALL	_Jump2Menu
(0104)             return ;
    11E1 9621      ADIW	R28,1
    11E2 940E43C0  CALL	pop_gset1
    11E4 9508      RET
(0105)         }
(0106)     }
(0107) }
(0108) void DispMenuParaDown()
(0109) {
(0110)     POP();
_DispMenuParaDown:
    11E5 D19B      RCALL	_POP
    11E6 9508      RET
(0111) }
(0112) 
(0113) void DispMenuParaLeft()
(0114) {
(0115)     BarMenuLeft();
_DispMenuParaLeft:
    11E7 D264      RCALL	_BarMenuLeft
    11E8 9508      RET
(0116) }
(0117) void DispMenuParaRight()
(0118) {
(0119)     BarMenuRight();
_DispMenuParaRight:
    11E9 D2F4      RCALL	_BarMenuRight
    11EA 9508      RET
_DispMenuSetupInit:
    11EB 9721      SBIW	R28,1
FILE: E:\电子制作\FAT_SD_MENU\MENU\MenuSetup.c
(0001) /******************************************************************************
(0002)  * MenuSetup.C - "设置"菜单  菜单函数使用模版
(0003)  ******************************************************************************/
(0004) #include "MenuSetup.h" 
(0005) 
(0006) 
(0007) //设置
(0008) void DispMenuSetupInit()
(0009) {
(0010)     GUI_Clear();
    11EC 940E3AAD  CALL	_GUI_Clear
    11EE 940E4699  CALL	0x4699
(0011)     //--------------------
(0012)     //切换Bar显示内容
(0013)     //---------------------
(0014)     BarMenu=&MenuSetup[language];
    11F0 0110      MOVW	R2,R0
    11F1 EE88      LDI	R24,0xE8
    11F2 E098      LDI	R25,0x8
    11F3 0E28      ADD	R2,R24
    11F4 1E39      ADC	R3,R25
    11F5 923008DE  STS	BarMenu+1,R3
    11F7 922008DD  STS	BarMenu,R2
(0015)     ItemNum=(*BarMenu).TextNum ;
    11F9 01F1      MOVW	R30,R2
    11FA 9632      ADIW	R30,2
    11FB 91E4      LPM	R30,0(Z)
    11FC 93E008E3  STS	ItemNum,R30
(0016)     DispItem=(*BarMenu).Text ;
    11FE 01F1      MOVW	R30,R2
    11FF 9005      LPM	R0,Z+
    1200 9014      LPM	R1,0(Z)
    1201 01F0      MOVW	R30,R0
    1202 93F008E0  STS	DispItem+1,R31
    1204 93E008DF  STS	DispItem,R30
(0017)     
(0018)     //用户的初始化代码请放在这里
(0019) 	
(0020) 	//显示按键对应的文字提示,1-->"选择"
(0021)     GUI_DispStringAt(*(Tip[language].Text+1),0,LCD_YSIZE-14);
    1206 E386      LDI	R24,0x36
    1207 8388      STD	Y+0,R24
    1208 2722      CLR	R18
    1209 940E45B1  CALL	0x45B1
(0022)     //显示按键对应的文字提示,0-->"退出"
(0023) 	GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
(0024) 
(0025)     BarMenuInit();//公共初始化部分
    120B D1D5      RCALL	_BarMenuInit
    120C 9621      ADIW	R28,1
    120D 9508      RET
(0026) }
(0027) 
(0028) /*
(0029) *****************************************************************************
(0030) 菜单使用例程
(0031) 0.Jump2Menu + FlashMode_AutoInit/FlashMode_ManualInit
(0032)   跳转到任意菜单,FlashMode_AutoInit-->在BarMenuInit函数中执行PUSH;
(0033)   FlashMode_ManualInit-->子菜单的Init函数中PUSH,看例子:DispMenuLanguageInit
(0034) 1.PUSH + POP
(0035)   执行一些功能,并使用LCD后,回到原有界面,回到原有界面--包括反显位置都恢复
(0036) 2.Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
(0037)   执行一些功能,并使用LCD后,执行如上调用,回到原有界面--包括反显位置都恢复
(0038) 3.POP
(0039)   执行一些功能,并使用LCD后,回到上层菜单,恢复上层界面
(0040) 4.Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
(0041)   执行一定功能后,但不占用LCD的话,直接界面不动
(0042) 
(0043) *****************************************************************************
(0044) */
(0045) void DispMenuSetupDown(void)
(0046) {
(0047)     POP();
_DispMenuSetupDown:
    120E D172      RCALL	_POP
    120F 9508      RET
(0048) }
(0049) 
(0050) void DispMenuSetupLeft(void)
(0051) {
(0052)     BarMenuLeft();
_DispMenuSetupLeft:
    1210 D23B      RCALL	_BarMenuLeft
    1211 9508      RET
(0053) }
(0054) 
(0055) void DispMenuSetupRight(void)
(0056) {
(0057)     BarMenuRight();
_DispMenuSetupRight:
    1212 D2CB      RCALL	_BarMenuRight
    1213 9508      RET
_DispMenuSetupUp:
    1214 940E43BD  CALL	push_gset1
    1216 9725      SBIW	R28,5
    1217 940E4A2A  CALL	0x4A2A
(0058) }
(0059) 
(0060) void DispMenuSetupUp(void)
(0061) {
(0062)     switch(Item)
    1219 F081      BEQ	0x122A
    121A 3041      CPI	R20,1
    121B E0E0      LDI	R30,0
    121C 075E      CPC	R21,R30
    121D F409      BNE	0x121F
    121E C038      RJMP	0x1257
    121F 3042      CPI	R20,2
    1220 E0E0      LDI	R30,0
    1221 075E      CPC	R21,R30
    1222 F409      BNE	0x1224
    1223 C03B      RJMP	0x125F
    1224 3043      CPI	R20,3
    1225 E0E0      LDI	R30,0
    1226 075E      CPC	R21,R30
    1227 F409      BNE	0x1229
    1228 C040      RJMP	0x1269
    1229 C046      RJMP	0x1270
(0063)     {
(0064)         case 0 ://时间设置选项
(0065)         {
(0066) 		    PUSH();
    122A D12E      RCALL	_PUSH
    122B 940E49A7  CALL	0x49A7
(0067)             GUI_Clear();
    122D 2022      TST	R2
    122E F451      BNE	0x1239
    122F 940E4921  CALL	0x4921
(0068) 			if(language == CH)
    1231 2422      CLR	R2
    1232 8228      STD	Y+0,R2
    1233 2722      CLR	R18
    1234 E60A      LDI	R16,0x6A
    1235 E015      LDI	R17,5
    1236 940E3D5C  CALL	_GUI_DispStringAtBar
(0069) 			    GUI_DispStringAtBar("时间设置",0,0,LCD_XSIZE,GUI_TA_HCENTER);
(0070) 			else
    1238 C009      RJMP	0x1242
    1239 940E4921  CALL	0x4921
    123B 2422      CLR	R2
    123C 8228      STD	Y+0,R2
    123D 2722      CLR	R18
    123E E50C      LDI	R16,0x5C
    123F E015      LDI	R17,5
    1240 940E3D5C  CALL	_GUI_DispStringAtBar
(0071) 			    GUI_DispStringAtBar("Time Settings",0,0,LCD_XSIZE,GUI_TA_HCENTER);
(0072) 			
(0073) 			//显示按键对应的文字提示,1-->"确定"
    1242 E386      LDI	R24,0x36
    1243 8388      STD	Y+0,R24
    1244 E021      LDI	R18,1
    1245 940E45DA  CALL	0x45DA
    1247 8104      LDD	R16,Z+4
    1248 8115      LDD	R17,Z+5
    1249 940E3C92  CALL	_GUI_DispStringAt
(0074)             GUI_DispStringAt(*(Tip[language].Text+2),1,LCD_YSIZE-14);
(0075)             //显示按键对应的文字提示,0-->"退出"
    124B E386      LDI	R24,0x36
    124C 8388      STD	Y+0,R24
    124D E429      LDI	R18,0x49
    124E 940E45DA  CALL	0x45DA
    1250 8500      LDD	R16,Z+8
    1251 8511      LDD	R17,Z+9
    1252 940E3C92  CALL	_GUI_DispStringAt
(0076) 	        GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
(0077)             
    1254 D027      RCALL	_Time_Settings
(0078) 			Time_Settings();//时间设置函数
(0079) 			POP();//返回到父菜单
(0080)             break ;
(0081)         }
(0082)         case 1 :
(0083)         {
    1255 D12B      RCALL	_POP
    1256 C021      RJMP	0x1278
    1257 D101      RCALL	_PUSH
(0084)             //PUSH  -->POP
(0085)             PUSH();
    1258 940E490F  CALL	0x490F
    125A E305      LDI	R16,0x35
(0086)             GUI_Clear();
(0087)             GUI_DispStringAt("Do Something \nthen Back to \nThis Menu!",0,0);
    125B 940E4A9B  CALL	0x4A9B
(0088)             GUI_Delay(10000);
    125D D123      RCALL	_POP
    125E C019      RJMP	0x1278
(0089)             POP();
(0090)             break ;
(0091)         }
(0092)         case 2 :
(0093)         {
(0094)             //ReFlash = 1
    125F 940E490F  CALL	0x490F
    1261 E305      LDI	R16,0x35
(0095)             GUI_Clear();
(0096)             GUI_DispStringAt("Do Something \nthen Back to \nThis Menu!",0,0);
    1262 940E4A9B  CALL	0x4A9B
    1264 E023      LDI	R18,3
    1265 940E4664  CALL	0x4664
(0097)             GUI_Delay(10000);
    1267 DDC4      RCALL	_Jump2Menu
    1268 C00F      RJMP	0x1278
(0098)             Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
(0099)             break ;
(0100)         }
(0101)         case 3 :
(0102)         {
(0103)             //POP
    1269 940E490F  CALL	0x490F
    126B E00C      LDI	R16,0xC
(0104)             GUI_Clear();
(0105)             GUI_DispStringAt("Do 

⌨️ 快捷键说明

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