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

📄 avr.lst

📁 Atmega64单片机程序(完整工程)
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -