📄 menu.c
字号:
}
}
//菜单显示
fnMenuToDBuf();
ucDisplayState = Display_01Set; //显示菜单
break;
}
case MenuState_X2: //执行状态
{
//执行当前菜单项的执行函数(函数自带显示!!注意 不使用菜单设置缓冲区)
(*(pSystemMenu->pMenuOneList[ucSystemMenuID].pfnRun_Menu))();
break;
}
}
}
}
/*******************************************************************
菜单项有效检查通用函数1
函数原型: bit fnCheck_Menu_1()
功能: 菜单项有效检查通用函数
返回: 1:有效(一直有效)
0:无效
********************************************************************/
bit fnCheck_Menu_1()
{
return(1);
}
/*******************************************************************
菜单项有效检查通用函数0
函数原型: bit fnCheck_Menu_0()
功能: 菜单项有效检查通用函数 返回0
返回: 1:有效
0:无效(一直无效)
********************************************************************/
bit fnCheck_Menu_0()
{
return(0);
}
/*******************************************************************
PP4、P5设定菜单的初始化检查函数
函数原型: bit fnCheck_Menu_QuickSet()
功能: PP4、P5设定菜单的初始化检查函数 返回1
返回: 1:有效(一直有效)
********************************************************************/
bit fnCheck_Menu_QuickSet()
{
//读入PP1-1的设定,存储在ucSystemMenuTurnTemp0中。
//读入相应地址的数据--单字节
//读入指定地址,单字节大小的数据:
//CAT24WC64P (N<=8192)(地址:0-8191)
//CAT24WC16P (N<=2048)(地址:0-2047)
fnRead_Eeprom(Menu_AdvanceSet1_1_List[0].ucMenuIDAddress,
1,uc8_SystemMenuTurnTemp);
ucSystemMenuTurnTemp0 = uc8_SystemMenuTurnTemp[0];
//并且返回1,允许进入子菜单。
return(1);
}
/*******************************************************************
菜单项运行通用函数
函数原型: void fnRun_Menu()
功能: 菜单项运行通用函数
返回:
********************************************************************/
void fnRun_Menu()
{
//空操作
;
//标准退回菜单
ucSystemMenuState = MenuState_X1; //进入菜单状态
}
/*******************************************************************
PP4 设定函数
函数原型: void fnSet_SystemMenu_PP4();
功能: PP4 设定函数
返回:
********************************************************************/
void fnSet_SystemMenu_PP4()
{
//根据PP1-1,选择进入的设置方式
switch(ucSystemMenuTurnTemp0)
{
//2) PP1-1=1 快捷方式1
case 1:
{
fnSet_SystemMenuQuickSet();
break;
}
//3) PP1-1=2 快捷方式2
case 2:
{
fnSet_SystemMenuQuickSet();
break;
}
//1) PP1-1=0,3,4,5 一般输出设定
default:
{
fnSet_SystemMenuTurnCON();
break;
}
}
}
/*******************************************************************
P5 设定函数
函数原型: void fnSet_SystemMenu_P5();
功能: P5 设定函数
返回:
********************************************************************/
void fnSet_SystemMenu_P5()
{
//根据PP1-1,选择进入的设置方式
switch(ucSystemMenuTurnTemp0)
{
//2) PP1-1=1 快捷方式1
case 1:
{
fnSet_SystemMenuQuickSet();
break;
}
//3) PP1-1=2 快捷方式2
case 2:
{
fnSet_SystemMenuQuickSet();
break;
}
//1) PP1-1=0,3,4,5 一般输出设定
default:
{
fnSet_SystemMenuTurnTime();
break;
}
}
}
/*******************************************************************
PP4 一般输出设定函数
函数原型: void fnSet_SystemMenuTurnCON()
功能: PP4 一般输出设定函数
返回:
********************************************************************/
void fnSet_SystemMenuTurnCON()
{
uchar *pucDBuf;
uchar i;
//根据子菜单层,处理相应键盘输入,并显示相应内容
switch(ucSystemMenuTurnTemp1)
{
//0. 初始化设定。进入子菜单的相关数据初始化
case 0:
{
//初始化设定的数据
ucSystemMenuTurnNum = Turn_00; //设置第一个时段为00
ucSystemMenuTurnTemp1 = 1; //进入第一层子菜单
break;
}
//1. 时间段选择 『ucSystemMenuTurnNum』[99]-[95]
case 1:
{
//处理键盘消息--子菜单1层
switch(ucKeyInput)
{
//上向键 KEY_UP 选择后一个时间段 增量选择
case KEY_UP:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//选择后一个时间段 增量选择
if(ucSystemMenuTurnNum == (SIZE_OF_TURN_LIST - 1) )
ucSystemMenuTurnNum = 0;
else
ucSystemMenuTurnNum ++ ;
break;
}
//下向键 KEY_DOWN 选择前一个时间段 减量选择
case KEY_DOWN:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//选择前一个时间段 减量选择
if(ucSystemMenuTurnNum == 0 )
ucSystemMenuTurnNum = SIZE_OF_TURN_LIST - 1;
else
ucSystemMenuTurnNum -- ;
break;
}
//确认键 KEY_OK 进入下一级目录 设置目录
case KEY_OK:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//进入下一级子目录
ucSystemMenuTurnTemp1 = 2; //进入第二层子菜单
//读入当前时间段的设置值
//读入指定地址,大小的时段控制量:
//CAT24WC64P (N<=8192)(地址:0-8191)
//CAT24WC16P (N<=2048)(地址:0-2047)
fnRead_Eeprom(TurnList[ucSystemMenuTurnNum].uiTurnCONAddress,
2,uc8_SystemMenuTurnTemp);
//输出位选择1
ucSystemMenuTurnTemp2 = 1;
break;
}
//取消键 KEY_ESC 返回上一级目录 退出子菜单
case KEY_ESC:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//菜单执行项退出数据清理
//标准退回菜单
ucSystemMenuState = MenuState_X1; //进入菜单状态
break;
}
}
//菜单显示--子菜单1层
pucDBuf = fnDisplayBufSet(Display_01Set);
pucDBuf[0] = 0x0f;
pucDBuf[1] = 0x0f;
pucDBuf[2] = 0x0a; //分隔符号 -
pucDBuf[3] = TurnList[ucSystemMenuTurnNum].ucTurnIndex / 10; //时段的十位
pucDBuf[4] = TurnList[ucSystemMenuTurnNum].ucTurnIndex % 10; //时段的个位
pucDBuf[5] = 0x0a; //分隔符号 -
pucDBuf[6] = 0x0f;
pucDBuf[7] = 0x0f;
fnDisplaySetDk(Display_01Set,0); //设置闪烁 0
ucDisplayState = Display_01Set; //显示菜单
break;
}
//2. 设置目录 『ucSystemMenuTurnTemp2』输出位 1-10
// fnBitTest(uc8_SystemMenuTurnTemp[1],7) 继承位值 0-1
case 2:
{
//处理键盘消息--子菜单2层
switch(ucKeyInput)
{
//上向键 (KEY_UP) 当前位的值取反(当继承位有效时,无效)
case KEY_UP:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//当继承位有效时,无效
if(fnBitTest(uc8_SystemMenuTurnTemp[1],7) == 0)
{
//当前位的值取反
if(ucSystemMenuTurnTemp2 < 6)
uc8_SystemMenuTurnTemp[0] = fnBitCpl(uc8_SystemMenuTurnTemp[0],ucSystemMenuTurnTemp2-1);
else
uc8_SystemMenuTurnTemp[1] = fnBitCpl(uc8_SystemMenuTurnTemp[1],ucSystemMenuTurnTemp2-6);
}
break;
}
//下向键 (KEY_DOWN ) 当前位的值取反(当继承位有效时,无效)
case KEY_DOWN:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//当继承位有效时,无效
if(fnBitTest(uc8_SystemMenuTurnTemp[1],7) == 0)
{
//当前位的值取反
if(ucSystemMenuTurnTemp2 < 6)
uc8_SystemMenuTurnTemp[0] = fnBitCpl(uc8_SystemMenuTurnTemp[0],ucSystemMenuTurnTemp2-1);
else
uc8_SystemMenuTurnTemp[1] = fnBitCpl(uc8_SystemMenuTurnTemp[1],ucSystemMenuTurnTemp2-6);
}
break;
}
//左向键(KEY_LEFT)减量选择输出位 10-1(左移/自动翻页)
case KEY_LEFT:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//减量选择输出位 10-1(左移/自动翻页)
if(ucSystemMenuTurnTemp2 == 1)
ucSystemMenuTurnTemp2 = 10;
else
ucSystemMenuTurnTemp2 -- ;
break;
}
//确认键 KEY_OK 保存结果,返回上一级目录
case KEY_OK:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//保存结果-->系统存储空间 EEPROM
//写入当前时间段的设置值
//写入指定地址,页大小以内的时段控制量:
//CAT24WC64P (N<=32)(地址:0-8191)
//CAT24WC16P (N<=16)(地址:0-2047)
fnWrite_Eeprom(TurnList[ucSystemMenuTurnNum].uiTurnCONAddress,
2,uc8_SystemMenuTurnTemp);
//返回上一级目录
ucSystemMenuTurnTemp1 = 1; //进入第一层子菜单
break;
}
//取消键 KEY_ESC 不保存结果,返回上一级目录
case KEY_ESC:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//不保存结果
//返回上一级目录
ucSystemMenuTurnTemp1 = 1; //进入第一层子菜单
break;
}
//翻页键 (KEY_PAGE) 选择第一页(1-5),第二页(6-10)
case KEY_PAGE:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -