📄 menutop.lst
字号:
C51 COMPILER V7.20 MENUTOP 09/04/2007 23:38:42 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MENUTOP
OBJECT MODULE PLACED IN .\Obj\MenuTop.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Src\MenuTop.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\Lst\MenuTop.lst) OBJE
-CT(.\Obj\MenuTop.obj)
line level source
1 /******************************************************************************
2 * MenuTop.C - 顶层菜单 条项菜单核心函数 图标层函数等
3 *
4 *
5 * DESCRIPTION: -
6 *
7 * modification history
8 * --------------------
9 * 01a, 04/sep/2007, 梁炎昌 written
10 * --------------------
11 ******************************************************************************/
12
13 #include "CPU.H"
14 #include "Ks0108.H"
15 #include "Menu.H"
16
17
18 //void Bar(U8 Item_,U8 ItemNum_);
19 void DispBuildTime(void);//编译时间
20
21 /*
22 *****************************************************************************
23 * InitMenuVal - 初始化菜单系统
24 * DESCRIPTION: -
25 * 该函数必须在进入菜单前被调用 初始化全局变量
26 * @Para void:
27 * Return :
28 *
29 *****************************************************************************
30 */
31 void InitMenuVal(void)
32 {
33 1 WhereBackup_i = 0;
34 1 ItemBackup_i = 0;
35 1 Layer = 0;
36 1 FatherIndex[Layer++] = MenuTopIndex; //push index 待机界面作为起点
37 1 }
38 /*
39 *****************************************************************************
40 * DispMenuTop - 待机界面层5个函数
41 * DESCRIPTION: -
42 * DispMenuTop DispMenuTopUp DispMenuTopDown DispMenuTopLeft DispMenuTopRight
43 *
44 *
45 *
46 *****************************************************************************
47 */
48 void DispMenuTop(void)//待机界面
49 {
50 1 GUI_Clear();
51 1 GUI_DispStringAtBar("Desktop",0,0,126,GUI_TA_HCENTER);
52 1 //显示按键对应的文字提示,0-->"菜单"
53 1 GUI_DispStringAtBar(*(Tip[language].Text),0,Enter_PosY,126,GUI_TA_HCENTER);
54 1 }
C51 COMPILER V7.20 MENUTOP 09/04/2007 23:38:42 PAGE 2
55 //待机界面下Up键的处理
56 void DispMenuTopUp(void)
57 {
58 1 //-------------------
59 1 KeyPressCount = 0;
60 1 //-------------------
61 1 GUI_Clear();
62 1 //-------------------
63 1 //这里是顶层菜单,因此在进入子菜单前需要初始化变量
64 1 InitMenuVal();
65 1 //--------------------------
66 1 //状态跳转,进入子菜单
67 1 //jump to Menu index
68 1 Jump2Menu(MenuIndex,FlashMode_AutoInit);
69 1 return;
70 1 }
71 //待机界面下Down键的处理
72 void DispMenuTopDown(void)
73 {
74 1
75 1 if((KeyPressCount++)==0x0F){
76 2 GUI_Clear();
77 2 DispBuildTime();
78 2 GUI_Delay(6500);
79 2 KeyPressCount = 0;
80 2 // we need reflash screen
81 2 Jump2Menu(MenuTopIndex,FlashMode_ReFlash);
82 2 return;
83 2
84 2 }
85 1 //return to MenuTop index
86 1 Jump2Menu(MenuTopIndex,FlashMode_NoAction);
87 1 return;
88 1 }
89 //待机界面下Left键的处理
90 void DispMenuTopLeft(void)
91 {
92 1 KeyPressCount = 0;
93 1 /*
94 1 * 这里可以做这个按键的功能定义,因为这是在待机界面下
95 1 * 比如,做某个子菜单的快捷链接--按下该按键就直接跳转到某个子菜单
96 1 */
97 1 //-------------------
98 1 //这里是顶层菜单,因此在进入子菜单前需要初始化变量
99 1 // InitMenuVal();
100 1 //--------------------------
101 1 //状态跳转,进入子菜单
102 1 Jump2Menu(MenuTopIndex,FlashMode_NoAction);
103 1 return;
104 1 }
105 //待机界面下Right键的处理
106 void DispMenuTopRight(void)
107 {
108 1 KeyPressCount = 0;
109 1 //----------------------
110 1 // ClearLCD();
111 1 // DispRate(0); //功能函数的"快捷方式" 到测量显示
112 1 //功能函数执行完毕后重新回到待机界面
113 1 // Jump2Menu(MenuTopIndex);
114 1 Jump2Menu(MenuTopIndex,FlashMode_NoAction);
115 1 return;
116 1 }
C51 COMPILER V7.20 MENUTOP 09/04/2007 23:38:42 PAGE 3
117 /*
118 ********************************************************
119 ********************************************************
120 */
121 //-----------------------
122 //菜单备份函数
123 //备份当前菜单的各个参数
124 void PUSH(void)
125 {
126 1 WhereBackup[WhereBackup_i++] = Where; //备份Where--->高亮显示的位置
127 1 ItemBackup[ItemBackup_i++] = Item; //备份Item--->当前项的位置
128 1 FatherIndex[Layer++] = KeyFuncIndex; //备份KeyFuncIndex--->状态机的状态
129 1 //-------------------------------
130 1
131 1 //-------------------------------
132 1
133 1 }
134 //菜单还原函数
135 void POP(void)
136 {
137 1 Layer--; //先弹出一层,因为使用的是++,因此当前Layer指向下一个数组位置
138 1 KeyFuncIndex = FatherIndex[Layer-1]; //恢复KeyFuncIndex
139 1 Where = WhereBackup[--WhereBackup_i]; //恢复高亮显示位置Where
140 1 Item = ItemBackup[--ItemBackup_i]; //恢复项位置Item
141 1 //-------------------------------
142 1
143 1 //-------------------------------
144 1 Flash = FlashMode_ReFlash; //子项返回,请求刷新
145 1 }
146
147 /*
148 *****************************************************************************
149 * BarDisp - Bar型菜单显示
150 * DESCRIPTION: -
151 *
152 * @Para s:BAR显示的文字内容
153 * @Para X:X轴坐标
154 * @Para Y:Y轴坐标
155 * @Para HighLight:1--->高亮显示当前项 0--->普通显示当前项
156 //HightLight = 1--->HightLight Disp
157 //HightLight = 0--->Normal Disp
158 * Return :
159 *
160 *****************************************************************************
161 */
162 //void BarDisp(U8 _CONST_ *s,U8 X,U8 Y,U8 HighLight)
163 void BarDisp(U8 *s,U8 X,U8 Y,U8 HighLight)
164 {
165 1
166 1 #ifdef LessCPUUseage
if (HighLight == 1) { //高亮显示
GUI_DispStringAtBar(s,X+8,Y,120,GUI_TA_LEFT);
GUI_SetEnFont(En_8x16);
GUI_DispCharAt('>',X,Y);
} else { //通常显示
//显示Bar的Text
GUI_DispStringAtBar(s,X+8,Y,120,GUI_TA_LEFT);
GUI_SetEnFont(En_8x16);
GUI_DispCharAt(' ',X,Y);
}
#else
178 1 if (HighLight == 1) { //高亮显示
C51 COMPILER V7.20 MENUTOP 09/04/2007 23:38:42 PAGE 4
179 2 //------------------------------------
180 2 GUI_SetTextMode(GUI_TEXTMODE_REVERSE);//更改字体颜色来突出显示
181 2 GUI_DispStringAtBar(s,X,Y,120,GUI_TA_LEFT);
182 2 GUI_SetTextMode(GUI_TEXTMODE_NORMAL); //恢复原有字体颜色和背景颜色
183 2 //------------------------------------
184 2 } else { //通常显示
185 2 //显示Bar的Text
186 2 GUI_DispStringAtBar(s,X,Y,120,GUI_TA_LEFT);
187 2 }
188 1 #endif
189 1 }
190 /*
191 FIXME!!!
192 如何修改BarMenuInit和如何处理Item Where的初始化来达到如此一个目的?
193 当前系统语言设定是英语,而英语这个项在第2项位置,因此如何能做到当菜单进入语言选择时,反显位置就在英语那里
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -