📄 menu.lst
字号:
C51 COMPILER V8.05a MENU 10/14/2008 21:02:33 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN menu.OBJ
COMPILER INVOKED BY: F:\Keil C51 V8\C51\BIN\C51.EXE menu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "commons.h"
2
3 //以下定义菜单相关的参数
4 #define MENU_NUM 5
5 #define MENU_MAX 9999
6 #define MENU_MIN 0
7
8 char _menu_name[] = {'a','b','c','d','e'}; //参数名的符号
9 int _value[] = {1000, 20, 30, 40, 50}; //供计算用的参数数组
10 int _menu_value[] = {0,0,0,0,0}; //供显示用的参数数组
11 unsigned char _menu_item = 0; //参数序号
12 unsigned char _menu_status = MENU_OFF; //当前检测进行阶段
13
14 char n=0;
15
16 char _menu_str[] = " "; //供显示用的字符串
17
18 void menu_routine(void) { //菜单处理函数
19 1 char i = 0;
20 1 char key = get_key(); //调用按键检测函数
21 1 if (_menu_status == MENU_OFF) { //当前菜单为关闭状态时
22 2 if (key == 0) { //若按键0已被按下
23 3 _menu_status = MENU_ON; //置当前菜单为打开状态
24 3 _menu_item = 0; //设置参数序号0
25 3 for (i = 0 ; i < MENU_NUM ; i++) {
26 4 _menu_value[i] = _value[i]; //将所有参数当前值取出,送入供显示的参数数组中
27 4 } //返回
28 3 }
29 2 } else { //如果当前菜单为打开状态,则进行以下操作:
30 2 serial_output(0x10<<n);
31 2 if (key == 0) { //若按键0按下,则不保存键值,仅切换到下一个参数
32 3 n=0;
33 3 _menu_item ++;
34 3 if (_menu_item == MENU_NUM) { //判断是否所有参数都循环到了
35 4 _menu_status = MENU_OFF; //若已循环完成,设置菜单关闭状态
36 4 }
37 3 } else if (key == 1) { //若按键1按下,则保存键值,并切换到下一个参数
38 3 n=1;
39 3 _value[_menu_item] = _menu_value[_menu_item];
40 3 if (++_menu_item == MENU_NUM) {
41 4 _menu_status = MENU_OFF;
42 4 }
43 3 } else if (key == 2) { //若按键2按下,则参数值加1
44 3 n=2;
45 3 if(_menu_item==0)
46 3 _menu_value[_menu_item]=_menu_value[_menu_item]+1;
47 3 else if(_menu_item==1)
48 3 _menu_value[_menu_item]=_menu_value[_menu_item]+2;
49 3 else if(_menu_item==2)
50 3 _menu_value[_menu_item]=_menu_value[_menu_item]+3;
51 3 else if(_menu_item==3)
52 3 _menu_value[_menu_item]=_menu_value[_menu_item]+4;
53 3 else if(_menu_item==4)
54 3 _menu_value[_menu_item]=_menu_value[_menu_item]+5;
55 3
C51 COMPILER V8.05a MENU 10/14/2008 21:02:33 PAGE 2
56 3 if (_menu_value[_menu_item] > MENU_MAX) {
57 4 _menu_value[_menu_item] = MENU_MAX;
58 4 }
59 3 } else if (key == 3) { //若按键3按下,则参数值减1
60 3 n=3;
61 3 if(_menu_item==0)
62 3 _menu_value[_menu_item]=_menu_value[_menu_item]-1;
63 3 else if(_menu_item==1)
64 3 _menu_value[_menu_item]=_menu_value[_menu_item]-2;
65 3 else if(_menu_item==2)
66 3 _menu_value[_menu_item]=_menu_value[_menu_item]-3;
67 3 else if(_menu_item==3)
68 3 _menu_value[_menu_item]=_menu_value[_menu_item]-4;
69 3 else if(_menu_item==4)
70 3 _menu_value[_menu_item]=_menu_value[_menu_item]-5;
71 3
72 3 if (_menu_value[_menu_item] < MENU_MIN) {
73 4 _menu_value[_menu_item] = MENU_MIN;
74 4 }
75 3 }
76 2 }
77 1 if (_menu_status == MENU_ON) {
78 2 //菜单状态为开时,显示参数值
79 2 _menu_str[0] = _menu_name[_menu_item];//将参数名符号组装到供显示用的数组中
80 2 to_string(&_menu_str[1], 5, _menu_value[_menu_item]);//从LED的第3位起显示参数值
81 2 print(_menu_str);
82 2 }
83 1
84 1 }
85
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 450 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 35 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -