📄 menu_func.lst
字号:
C51 COMPILER V8.08 MENU_FUNC 07/23/2007 08:20:59 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MENU_FUNC
OBJECT MODULE PLACED IN MENU_FUNC.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE MENU_FUNC.C LARGE BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include <at89x52.h>
2 #include <stdio.h>
3 #include <absacc.h>
4 #include <intrins.h>
5 #include <xbyte.h>
6 #include <lcd_code.h>
7 #include <ocm12864.h>
8 #include <iic.h>
9 #include <pca9555.h>
10 #include <18b20.H>
11 #include <24c32.h>
12 #include <menu_func.h>
13
14 typedef xdata struct
15 {
16 uchar KeyTab_MenuIndex; //当前状态索引号
17 uchar KeyTab_PressOk; //按下"回车"键时转向的状态索引号
18 uchar KeyTab_PressEsc; //按下"返回"键时转向的状态索引号
19 uchar KeyTab_PressDown; //按下"向下"键时转向的状态索引号
20 uchar KeyTab_PressUp; //按下"向上"键时转向的状态索引号
21 void ( code *CurrentOperate)(); //当前状态应该执行的功能操作
22 }KeyTabStruct;
23 void ( code *KeyFuncPtr)(); //按键功能指针
24 //CurMenuID=本菜单ID
25 //OkMenuID=子菜单层所对应的菜单ID,ID=254已经到底了
26 //EscMenuID=父菜单层所对应的菜单ID,ID=254为菜单已经到顶了
27 //DownMenuID=弟菜单层所对应的菜单ID,ID=254为菜单是独生子
28 //UpMenuID=兄菜单层所对应的菜单ID,ID=254 单是独生子
29 //CurFunction=本菜单所对应的菜单函数指针
30 KeyTabStruct xdata KeyTab[]=
31 {
32 //CurMenuID, OkMenuID, EscMenuID, DownMenuID, UpMenuID, CurFunctio
-n
33 {MENU_FACE, MENU_ROOT, 254, 254, 254, (*DispFaceBmp
-)},
34 {MENU_ROOT, MENU_VIEW, 254, 254, 254, (*DispMenu
-_Root)},
35 {MENU_VIEW, MENU_VIEW_1, MENU_ROOT, MENU_OPERATION, MENU_HELP, (*DispMenu
-_View)},
36 {MENU_VIEW_1, 254, MENU_VIEW, MENU_VIEW_2, MENU_VIEW_3, (*Menu_Dis
-pTmp)},
37 {MENU_VIEW_2, 254, MENU_VIEW, MENU_VIEW_3, MENU_VIEW_1, (*Menu_DAC
-0808)},
38 {MENU_VIEW_3, 254, MENU_VIEW, MENU_VIEW_1, MENU_VIEW_2, (*Menu_ADC
-0832)},
39 {MENU_OPERATION, MENU_OPERATION_1, MENU_ROOT, MENU_TEST, MENU_VIEW, (*DispMenu_Op
-eration)},
40 {MENU_OPERATION_1, 254, MENU_OPERATION, MENU_OPERATION_2, MENU_OPERATION_3,(*Menu_Mot
-or_s)},
41 {MENU_OPERATION_2, 254, MENU_OPERATION, MENU_OPERATION_3, MENU_OPERATION_1,(*MenuFunc
-tion)},
42 {MENU_OPERATION_3, 254, MENU_OPERATION, MENU_OPERATION_1, MENU_OPERATION_2,(*Menu_Mem
-oryData)},
43 {MENU_TEST, MENU_TEST_1, MENU_ROOT, MENU_HELP, MENU_OPERATION, (*DispMenu
-_Test)},
C51 COMPILER V8.08 MENU_FUNC 07/23/2007 08:20:59 PAGE 2
44 {MENU_TEST_1, 254, MENU_TEST, MENU_TEST_2, MENU_TEST_3, (*Menu_Ser
-ialReceive_PC)},
45 {MENU_TEST_2, 254, MENU_TEST, MENU_TEST_3, MENU_TEST_1, (*Menu_Seria
-lSend_PC)},
46 {MENU_TEST_3, 254, MENU_TEST, MENU_TEST_4, MENU_TEST_2, (*Menu_Seria
-lReceive_MCU)},
47 {MENU_TEST_4, 254, MENU_TEST, MENU_TEST_1, MENU_TEST_3, (*Menu_Seria
-lSend_MCU)},
48 {MENU_HELP, MENU_HELP_1, MENU_ROOT, MENU_VIEW, MENU_TEST, (*DispMenu
-_Help)},
49 {MENU_HELP_1, 254, MENU_HELP, MENU_HELP_2, MENU_HELP_2, (*MenuFunc
-tion)},
50 {MENU_HELP_2, 254, MENU_HELP, MENU_HELP_1, MENU_HELP_1, (*MenuFunctio
-n_Help_2)},
51 };
52
53 /*----------------------接收菜单功能键---------*/
54 void GetKeyInput()
55 {
56 1 switch(NowKey)
57 1 {
58 2 case KEY_OK:// KEY_OK, KEY_UP, KEY_ESC,
59 2
60 2 if(KeyTab[iMenuID].KeyTab_PressOk!=254) // 按下OK键时的状态
61 2 {
62 3 iMenuID=KeyTab[iMenuID].KeyTab_PressOk;
63 3 JudgeHLight();
64 3 }
65 2 else //已经到底层
66 2 {
67 3 KeyFuncPtr=KeyTab[iMenuID].CurrentOperate;
68 3 ( *KeyFuncPtr)(); // 执行当前ID的功能函数
69 3 }
70 2
71 2 break;
72 2 case KEY_ESC:
73 2
74 2 if(KeyTab[iMenuID].KeyTab_PressEsc!=254)
75 2 {
76 3 iMenuID=KeyTab[iMenuID].KeyTab_PressEsc; // 按下ESC键时的状态
77 3 JudgeHLight();
78 3 }
79 2 break;
80 2 case KEY_DOWN:
81 2 if(KeyTab[iMenuID].KeyTab_PressDown!=254)
82 2 { // 按下DOWN键时的状态
83 3 iMenuID=KeyTab[iMenuID].KeyTab_PressDown;
84 3 JudgeHLight();
85 3 }
86 2 break;
87 2 case KEY_UP:
88 2 if(KeyTab[iMenuID].KeyTab_PressUp!=254)
89 2 { // 按下UP键时的状态
90 3 iMenuID=KeyTab[iMenuID].KeyTab_PressUp;
91 3 JudgeHLight();
92 3 }
93 2 break;
94 2
95 2 default:
96 2 break;
97 2 }
98 1
C51 COMPILER V8.08 MENU_FUNC 07/23/2007 08:20:59 PAGE 3
99 1 }
100
101
102
103
104
105 /*-----------显示当前的菜单----------*/
106 void JudgeHLight()
107 {
108 1 switch(iMenuID)
109 1 {
110 2 case MENU_FACE:
111 2 DispFaceBmp();
112 2 break;
113 2 case MENU_ROOT:
114 2 DispFaceBmp();
115 2 break;
116 2 case MENU_VIEW:
117 2 DispMenu_Root();
118 2 break;
119 2 case MENU_VIEW_1:
120 2 case MENU_VIEW_2:
121 2 case MENU_VIEW_3:
122 2 DispMenu_View();
123 2 break;
124 2 case MENU_OPERATION:
125 2 DispMenu_Root();
126 2 break;
127 2 case MENU_OPERATION_1:
128 2 case MENU_OPERATION_2:
129 2 case MENU_OPERATION_3:
130 2 DispMenu_Operation();
131 2 break;
132 2 case MENU_TEST:
133 2 DispMenu_Root();
134 2 break;
135 2 case MENU_TEST_1:
136 2 case MENU_TEST_2:
137 2 case MENU_TEST_3:
138 2 case MENU_TEST_4:
139 2 DispMenu_Test();
140 2 break;
141 2 case MENU_HELP:
142 2 DispMenu_Root();
143 2 break;
144 2 case MENU_HELP_1:
145 2 case MENU_HELP_2:
146 2 DispMenu_Help();
147 2 break;
148 2 default:
149 2 break;
150 2 }
151 1
152 1 //////////////////////////反百显示当前按钮//////////////////////
153 1 switch (iMenuID)
154 1 {
155 2 case MENU_VIEW:
156 2
157 2 chn_fdisp(0,0,2,16,1,2,hz_view);
158 2
159 2 break;
160 2 case MENU_VIEW_1:
C51 COMPILER V8.08 MENU_FUNC 07/23/2007 08:20:59 PAGE 4
161 2
162 2 chn_fdisp(0,0,2,16,1,2,hz_view_1);
163 2
164 2 break;
165 2 case MENU_VIEW_2:
166 2 chn_fdisp(2,0,2,16,1,2,hz_view_2);
167 2 break;
168 2 case MENU_VIEW_3:
169 2 chn_fdisp(4,0,2,16,1,1,hz_view_2+32);
170 2 chn_fdisp(4,16,2,16,1,1,hz_view_2);
171 2 break;
172 2 case MENU_OPERATION:
173 2
174 2 chn_fdisp(2,0,2,16,1,2,hz_operation);
175 2 break;
176 2 case MENU_OPERATION_1:
177 2
178 2 chn_fdisp(0,0,2,16,1,4,hz_operation_1);
179 2 break;
180 2 case MENU_OPERATION_2:
181 2 chn_fdisp(2,0,2,16,1,2,hz_operation_2); //数据
182 2 chn_fdisp(2,32,2,16,1,2,hz_operation_3); //存储
183 2 break;
184 2 case MENU_OPERATION_3:
185 2
186 2 chn_fdisp(4,0,2,16,1,2,hz_operation_2); //数据
187 2 chn_fdisp(4,32,2,16,1,2,hz_operation_4); //读取
188 2 break;
189 2 case MENU_TEST:
190 2
191 2 chn_fdisp(4,0,2,16,1,2,hz_test);
192 2
193 2 break;
194 2 case MENU_TEST_1:
195 2
196 2 chn_fdisp(0,0,2,16,1,2,hz_test_1);
197 2 chn_fdisp(0,32,2,16,1,2,hz_test_2);
198 2
199 2 break;
200 2 case MENU_TEST_2:
201 2
202 2 chn_fdisp(2,0,2,16,1,2,hz_test_1);
203 2 chn_fdisp(2,32,2,16,1,2,hz_test_3);
204 2
205 2 break;
206 2 case MENU_TEST_3:
207 2 chn_fdisp(4,0,2,16,1,2,hz_test_4);
208 2 chn_fdisp(4,32,2,16,1,2,hz_test_2);
209 2 break;
210 2 case MENU_TEST_4:
211 2 chn_fdisp(6,0,2,16,1,2,hz_test_4);
212 2 chn_fdisp(6,32,2,16,1,2,hz_test_3);
213 2 break;
214 2 case MENU_HELP:
215 2 chn_fdisp(6,0,2,16,1,2,hz_help);
216 2 break;
217 2 case MENU_HELP_1:
218 2 chn_fdisp(0,0,2,16,1,2,hz_help);
219 2 num_disp(1,0,32,1);
220 2 break;
221 2 case MENU_HELP_2:
222 2 chn_fdisp(2,0,2,16,1,2,hz_about);
C51 COMPILER V8.08 MENU_FUNC 07/23/2007 08:20:59 PAGE 5
223 2 break;
224 2 default:
225 2 break;
226 2 }
227 1
228 1 }
229
230 void MenuFunction()
231 {
232 1 }
233
234 /*-------显示开机画面-------*/
235 void DispFaceBmp()
236 {
237 1 clrscr();
238 1 cs1=1;
239 1 cs2=0;
240 1 chn_disp(0,0,2,16,1,4,hz_face);
241 1 chn_disp(4,0,2,16,1,3,hz_make);
242 1 chn_disp(6,32,2,8,1,4,hz_me);
243 1 cs1=0;
244 1 cs2=1;
245 1 chn_disp(0,0,2,16,1,4,(hz_face+128));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -