📄 menu.c
字号:
#include "commons.h"
//以下定义菜单相关的参数
#define MENU_NUM 5
#define MENU_MAX 9999
#define MENU_MIN 0
#define E2PROM_FLAG_ADDR 0x10
#define E2PROM_ADDR 0x12
#define FLAG 1234
char _menu_name[] = {'a','b','c','d','e'};
unsigned char _delta[] = {55, 75, 10, 1, 5};
int _menu_value[] = {0, 0, 0, 0, 0};
int _default_value[] = {3500,500,1000,0, 80};
unsigned char _menu_idx = 0;
unsigned char _menu_status = MENU_OFF;
char _menu_str[] = " ";
void menu_init(void) {
unsigned int flag = 0;
read_e2prom(E2PROM_FLAG_ADDR, (unsigned char)&flag, 2);
if (flag != FLAG) {
flag = FLAG;
write_e2prom(E2PROM_FLAG_ADDR, (unsigned char)&flag, 2);
write_e2prom(E2PROM_ADDR, (unsigned char)&_default_value[0], sizeof(_default_value));
}
read_e2prom(E2PROM_ADDR, (unsigned char)&_menu_value[0], sizeof(_menu_value));
}
void menu_routine(void) {
char i = 0;
char key = get_key();
if (_menu_status == MENU_OFF) {
if (key == 0) {
_menu_status = MENU_ON;
_menu_idx = 0;
_key_led = 0x10;
//将e2prom里的5个参数读入_menu_value数组
read_e2prom(E2PROM_ADDR, (unsigned char)&_menu_value[0], sizeof(_menu_value));
}
} else {
if (key == 0) { //不保存键值,切换到下一个参数
_key_led = 0x10;
if (++_menu_idx == MENU_NUM) {
_key_led = 0;
_menu_status = MENU_OFF;
}
} else if (key == 1) { //保存键值,切换到下一个参数
_key_led = 0x20;
write_e2prom(E2PROM_ADDR + _menu_idx * 2, (unsigned char)&_menu_value[_menu_idx], 2);
if (++_menu_idx == MENU_NUM) {
_key_led = 0;
_menu_status = MENU_OFF;
}
} else if (key == 2) { //参数值加1
_key_led = 0x40;
//if (++_menu_value[_menu_idx] > MENU_MAX) {
_menu_value[_menu_idx] += _delta[_menu_idx];
if (_menu_value[_menu_idx] > MENU_MAX) {
_menu_value[_menu_idx] = MENU_MAX;
}
} else if (key == 3) { //参数值减1
_key_led = 0x80;
//if (--_menu_value[_menu_idx] < MENU_MIN) {
_menu_value[_menu_idx] -= _delta[_menu_idx];
if (_menu_value[_menu_idx] < MENU_MIN) {
_menu_value[_menu_idx] = MENU_MIN;
}
}
}
if (_menu_status == MENU_ON) {
//菜单状态为开时,显示参数值
_menu_str[0] = _menu_name[_menu_idx];//参数名称
to_string(&_menu_str[2], 4, _menu_value[_menu_idx]);//从LED的第3位起显示参数值
print(_menu_str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -