?? 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 + -