📄 menu.lst
字号:
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN Menu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Menu.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <string.h>
2 #include "System.h"
3 #include "Lcd.h"
4 #include "Menu.h"
5 #include "UART.h"
6 #include "USBCLOCK.h"
7 //#include "GPS.h"
8 #include "mmc.h"
9 #include "adda.h"
10
11 void GPS();
12 void Test()
13 {
14 1 Clear(0,240);
15 1 circle(100,100,50);
16 1 }
17
18 char Len(char *ptr) //求参数字符串长度
19 {
20 1 char n=0;
21 1 while(*ptr!=',')
22 1 {
23 2 n++;
24 2 ptr++;
25 2 }
26 1 return n;
27 1 }
28
29 char *Jump(char *ptr, char n) //跳过n项参数字符串
30 {
31 1 while(*ptr!='(' && *ptr!='\0' && n>0)
32 1 {
33 2 if(*ptr==',')
34 2 n--;
35 2 ptr++;
36 2 }
37 1 return ptr;
38 1 }
39
40 char GetValue(char *ptr) //返回ptr指向处ASCII码所对应的数字(char),失败返回0
41 {
42 1 char TempBuf[3]={0,0,0};
43 1 char n=0;
44 1 while (*ptr>=48 && *ptr<=57)
45 1 {
46 2 TempBuf[n]=*ptr-48;
47 2 ptr++;
48 2 n++;
49 2 }
50 1 if(n==0)
51 1 return (0);
52 1 if(n==1)
53 1 return (TempBuf[0]);
54 1 if(n==2)
55 1 return (TempBuf[0]*10+TempBuf[1]);
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 2
56 1 if(n==3)
57 1 return (TempBuf[0]*100+TempBuf[1]*10+TempBuf[0]);
58 1 }
59
60 char GetParaTotal(char *ptr) //检测某条目选项个数
61 {
62 1 char counter=0;
63 1 while(*ptr!='(' && *ptr!='\0')
64 1 {
65 2 if(*ptr==',') counter++;
66 2 ptr++;
67 2 }
68 1 return counter;
69 1 }
70
71 char *MyPrintf(unsigned char X,unsigned char Y,char *ptr,char Type) //显示某参数字符串
72 {
73 1 char temp[20];
74 1 char *p;
75 1 p=temp;
76 1 while(*ptr!=',')
77 1 {
78 2 *p=*ptr;
79 2 ptr++;
80 2 p++;
81 2 }
82 1 *p='\0';
83 1 if(Type)
84 1 Udprintf(X,Y,temp);
85 1 else
86 1 dprintf(X,Y,temp);
87 1 return ptr;
88 1 }
89
90 //主菜单函数
91 void MainMenu()
92 {
93 1 char code *Item[]={"01 串行接口传输实验","02 串行接口GPS接收机实验","03 并行接口传输实验",\
94 1 "04 并行接口驱动LED显示器实验","05 USB接口传输控制实验","06 USB接口读卡实验"};
95 1 void (*funp[])()={Uart,GPS,ADDA,Test,USBCLOCK,MMC};
96 1 int i;
97 1 char total=6;
98 1 char refresh=1;
99 1 char DisItem=1;
100 1 char ItemSel=0;
101 1
102 1 Init_LCD();
103 1 while(1)
104 1 {
105 2 if(DisItem==1) //显示界面
106 2 {
107 3 dprintf(13,2,"选择实验项目");
108 3 dprintf(0,20,line);
109 3 dprintf(0,200,line);
110 3 dprintf(1,220,"芗 兦");
111 3 dprintf(30,220,"说明 开始");
112 3 for(i=0;i<total;i++)
113 3 dprintf(2,i*16+36,Item[i]);
114 3 DisItem=0;
115 3 }
116 2
117 2 if(refresh==1) //移动小手
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 3
118 2 {
119 3 for(i=0;i<total;i++)
120 3 {
121 4 if(ItemSel==i)
122 4 dprintf(0,i*16+36,"贲");
123 4 else
124 4 dprintf(0,i*16+36," ");
125 4 }
126 3 refresh=0;
127 3 }
128 2
129 2 if(CheckKeyF==1) //键盘检测
130 2 {
131 3 CheckKey();
132 3 CheckKeyF=0;
133 3 }
134 2
135 2 if(Key[0].pressed==1) //检测到上键
136 2 {
137 3 Key[0].pressed=0;
138 3 if(ItemSel>0)
139 3 ItemSel--;
140 3 else
141 3 ItemSel=total-1;
142 3 refresh=1;
143 3 }
144 2
145 2 if(Key[1].pressed==1) //检测到下键
146 2 {
147 3 Key[1].pressed=0;
148 3 if(ItemSel<total-1)
149 3 ItemSel++;
150 3 else
151 3 ItemSel=0;
152 3 refresh=1;
153 3 }
154 2
155 2 if(Key[7].pressed==1) //检测到开始键,调用各模块函数
156 2 {
157 3 ClearKey();
158 3 (funp[ItemSel])();
159 3 DisItem=1;
160 3 refresh=1;
161 3 }
162 2 }
163 1 }
164
165 char MenuActive(char *Menu, unsigned char *ParaValueTable) //激活参数设置菜单
166 {
167 1 int i;
168 1 char *p;
169 1 char ParaTotal[10]; //各选项参数个数
170 1 char ItemSel=0; //当前选项
171 1 char ItemNum; //选项计数器
172 1 char ItemTotal; //总选项数
173 1 char ReFresh=1; //屏幕刷新标志位
174 1 char TempList[20]; //临时存放参数值
175 1 for(i=0;i<20;i++)
176 1 TempList[i]=ParaValueTable[i]; //copy
177 1
178 1 //显示分割线
179 1 dprintf(0,20,line);
C51 COMPILER V7.01 MENU 06/30/2007 11:42:50 PAGE 4
180 1 dprintf(0,200,line);
181 1 //显示按钮
182 1 dprintf(1,220,"芗 兦 戛 戋 放弃 确定");
183 1
184 1 while(1)
185 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -