📄 menu.c
字号:
#include "commons.h"
//以下定义菜单相关的参数
#define MENU_NUM 5
#define MENU_MAX 9999
#define MENU_MIN 0
char _menu_name[] = {'a','b','c','d','e'}; //参数名的符号
int _value[] = {1000, 20, 30, 40, 50}; //供计算用的参数数组
int _menu_value[] = {0,0,0,0,0}; //供显示用的参数数组
unsigned char _menu_item = 0; //参数序号
unsigned char _menu_status = MENU_OFF; //当前检测进行阶段
char n=0;
char _menu_str[] = " "; //供显示用的字符串
void menu_routine(void) { //菜单处理函数
char i = 0;
char key = get_key(); //调用按键检测函数
if (_menu_status == MENU_OFF) { //当前菜单为关闭状态时
if (key == 0) { //若按键0已被按下
_menu_status = MENU_ON; //置当前菜单为打开状态
_menu_item = 0; //设置参数序号0
for (i = 0 ; i < MENU_NUM ; i++) {
_menu_value[i] = _value[i]; //将所有参数当前值取出,送入供显示的参数数组中
} //返回
}
} else { //如果当前菜单为打开状态,则进行以下操作:
serial_output(0x10<<n);
if (key == 0) { //若按键0按下,则不保存键值,仅切换到下一个参数
n=0;
_menu_item ++;
if (_menu_item == MENU_NUM) { //判断是否所有参数都循环到了
_menu_status = MENU_OFF; //若已循环完成,设置菜单关闭状态
}
} else if (key == 1) { //若按键1按下,则保存键值,并切换到下一个参数
n=1;
_value[_menu_item] = _menu_value[_menu_item];
if (++_menu_item == MENU_NUM) {
_menu_status = MENU_OFF;
}
} else if (key == 2) { //若按键2按下,则参数值加1
n=2;
if(_menu_item==0)
_menu_value[_menu_item]=_menu_value[_menu_item]+1;
else if(_menu_item==1)
_menu_value[_menu_item]=_menu_value[_menu_item]+2;
else if(_menu_item==2)
_menu_value[_menu_item]=_menu_value[_menu_item]+3;
else if(_menu_item==3)
_menu_value[_menu_item]=_menu_value[_menu_item]+4;
else if(_menu_item==4)
_menu_value[_menu_item]=_menu_value[_menu_item]+5;
if (_menu_value[_menu_item] > MENU_MAX) {
_menu_value[_menu_item] = MENU_MAX;
}
} else if (key == 3) { //若按键3按下,则参数值减1
n=3;
if(_menu_item==0)
_menu_value[_menu_item]=_menu_value[_menu_item]-1;
else if(_menu_item==1)
_menu_value[_menu_item]=_menu_value[_menu_item]-2;
else if(_menu_item==2)
_menu_value[_menu_item]=_menu_value[_menu_item]-3;
else if(_menu_item==3)
_menu_value[_menu_item]=_menu_value[_menu_item]-4;
else if(_menu_item==4)
_menu_value[_menu_item]=_menu_value[_menu_item]-5;
if (_menu_value[_menu_item] < MENU_MIN) {
_menu_value[_menu_item] = MENU_MIN;
}
}
}
if (_menu_status == MENU_ON) {
//菜单状态为开时,显示参数值
_menu_str[0] = _menu_name[_menu_item];//将参数名符号组装到供显示用的数组中
to_string(&_menu_str[1], 5, _menu_value[_menu_item]);//从LED的第3位起显示参数值
print(_menu_str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -