📄 menu.c
字号:
uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)] =
fnAss1_SystemMenuTurnTime( ucSystemMenuTurnTemp2 ,
1,(char)uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)]);
break;
}
//下向键 (KEY_DOWN ) 减量选择数据值(自动循环)
case KEY_DOWN:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//增量-1
uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)] =
fnAss1_SystemMenuTurnTime( ucSystemMenuTurnTemp2 ,
-1,(char)uc8_SystemMenuTurnTemp[(ucSystemMenuTurnTemp2/2)]);
break;
}
//左向键(KEY_LEFT)减量选择显示位(1-7)(左移/自动循环)
case KEY_LEFT:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//减量选择显示位(1-7)(左移/自动循环)
if(ucSystemMenuTurnTemp2 == 1)
ucSystemMenuTurnTemp2 = 7;
else
ucSystemMenuTurnTemp2 -- ;
break;
}
//确认键 KEY_OK 保存结果,返回上一级目录
case KEY_OK:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//保存结果-->系统存储空间 EEPROM
//写入当前时间段的设置值--4字节时间量
//写入指定地址,页大小以内的时段控制量:
//CAT24WC64P (N<=32)(地址:0-8191)
//CAT24WC16P (N<=16)(地址:0-2047)
fnWrite_Eeprom(TurnList[ucSystemMenuTurnNum].uiTurnTimeAddress,
4,uc8_SystemMenuTurnTemp);
//返回上一级目录
ucSystemMenuTurnTemp1 = 1; //进入第一层子菜单
break;
}
//取消键 KEY_ESC 不保存结果,返回上一级目录
case KEY_ESC:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//不保存结果
//返回上一级目录
ucSystemMenuTurnTemp1 = 1; //进入第一层子菜单
break;
}
//清除键 (KEY_CLEAR) 清除所有时间设置(清0)。
case KEY_CLEAR:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//清除所有时间设置(清0)。
uc8_SystemMenuTurnTemp[0] = 0;
uc8_SystemMenuTurnTemp[1] = 0;
uc8_SystemMenuTurnTemp[2] = 0;
uc8_SystemMenuTurnTemp[3] = 0;
break;
}
//数字键 KEY_0 -- KEY_9 输入当前位的值 0-9,并且右移当前位
default:
{
//数字键检查
ucTimeTemp2 = fnKeyboardNumCheck();
if(ucTimeTemp2!= 0xff)
{
//十分钟、十秒的0-5限制
if(((ucSystemMenuTurnTemp2 == 4) | (ucSystemMenuTurnTemp2 == 6)) & (ucTimeTemp2 > 5))
{
;
}
else
{
if(ucSystemMenuTurnTemp2 != 1)
{
//不是百小时
//十位
uc3_TimeTemp1[0] = uc8_SystemMenuTurnTemp[ ucSystemMenuTurnTemp2 / 2] / 10;
//个位
uc3_TimeTemp1[1] = uc8_SystemMenuTurnTemp[ ucSystemMenuTurnTemp2 / 2] % 10;
uc3_TimeTemp1[ ucSystemMenuTurnTemp2 % 2 ] = ucTimeTemp2;
uc8_SystemMenuTurnTemp[ ucSystemMenuTurnTemp2 / 2] = uc3_TimeTemp1[0] * 10 + uc3_TimeTemp1[1];
}
else
{
//百小时
uc8_SystemMenuTurnTemp[0] = ucTimeTemp2;
}
//右移当前位
ucSystemMenuTurnTemp2++;
//判断是否越界
if(ucSystemMenuTurnTemp2 > 7)
{
ucSystemMenuTurnTemp2 = 1;
}
}
}
break;
}
}
//菜单显示--子菜单2层
pucDBuf = fnDisplayBufSet(Display_01Set);
pucDBuf[0] = 0x0f;
pucDBuf[1] = uc8_SystemMenuTurnTemp[0] % 10; //百小时
pucDBuf[2] = uc8_SystemMenuTurnTemp[1] / 10; //小时十位
pucDBuf[3] = uc8_SystemMenuTurnTemp[1] % 10 + 0x80; //小时个位
pucDBuf[4] = uc8_SystemMenuTurnTemp[2] / 10; //分钟十位
pucDBuf[5] = uc8_SystemMenuTurnTemp[2] % 10 + 0x80; //小时个位
pucDBuf[6] = uc8_SystemMenuTurnTemp[3] / 10; //秒十位
pucDBuf[7] = uc8_SystemMenuTurnTemp[3] % 10 + 0x80; //秒个位
//设置当前选择位闪烁
fnDisplaySetDk(Display_01Set,1<<(7-ucSystemMenuTurnTemp2));
ucDisplayState = Display_01Set; //显示菜单
break;
}
}
}
/*******************************************************************
通用单字节数据输入函数
函数原型: void fnSet_SystemMenuNormByte()
功能: 通用单字节数据输入函数
返回:
********************************************************************/
void fnSet_SystemMenuNormByte()
{
uchar *pucDBuf;
uchar i;
//根据子菜单层,处理相应键盘输入,并显示相应内容
switch(ucSystemMenuTurnTemp1)
{
//0. 初始化设定。进入子菜单的相关数据初始化
case 0:
{
//初始化设定的数据
//读入相应地址的数据--单字节
//读入指定地址,单字节大小的数据:
//CAT24WC64P (N<=8192)(地址:0-8191)
//CAT24WC16P (N<=2048)(地址:0-2047)
fnRead_Eeprom(pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDAddress,
1,uc8_SystemMenuTurnTemp);
//检查数据,如果超出上下限,则设为默认值,并储存。报警,Beep!
if ( (uc8_SystemMenuTurnTemp[0] < pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin) |
(uc8_SystemMenuTurnTemp[0] > pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax) )
{
//数据设为默认值
uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDData0;
//并储存
//写入相应地址的数据--单字节
//写入指定地址,单字节大小的数据:
//CAT24WC64P (N<=8192)(地址:0-8191)
//CAT24WC16P (N<=2048)(地址:0-2047)
fnWrite_Eeprom(pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDAddress,
1,uc8_SystemMenuTurnTemp);
//报警,Beep!
}
//进入第一层子菜单
ucSystemMenuTurnTemp1 = 1;
break;
}
//1. 数据输入目录
case 1:
{
//处理键盘消息--子菜单1层
switch(ucKeyInput)
{
//上向键 (KEY_UP) 增量选择数据值(自动循环)
case KEY_UP:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//增量选择数据值(自动循环)
if(uc8_SystemMenuTurnTemp[0] == pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax )
uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin;
else
uc8_SystemMenuTurnTemp[0] ++ ;
break;
}
//下向键 KEY_DOWN 减量选择数据值(自动循环)
case KEY_DOWN:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//减量选择数据值(自动循环)
if(uc8_SystemMenuTurnTemp[0] == pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin )
uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax;
else
uc8_SystemMenuTurnTemp[0] -- ;
break;
}
//左向键(KEY_LEFT)减量选择设置位置(左移/自动循环)
case KEY_LEFT:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//减量选择数据值(自动循环)
if(uc8_SystemMenuTurnTemp[0] == pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMin )
uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDDataMax;
else
uc8_SystemMenuTurnTemp[0] -- ;
break;
}
//确认键 KEY_OK 保存结果,返回上一级目录
case KEY_OK:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//保存结果-->系统存储空间 EEPROM
//写入相应地址的数据--单字节
//写入指定地址,单字节大小的数据:
//CAT24WC64P (N<=8192)(地址:0-8191)
//CAT24WC16P (N<=2048)(地址:0-2047)
fnWrite_Eeprom(pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDAddress,
1,uc8_SystemMenuTurnTemp);
//菜单执行项退出数据清理
//标准退回菜单
ucSystemMenuState = MenuState_X1; //进入菜单状态
break;
}
//取消键 KEY_ESC 不保存结果,返回上一级目录
case KEY_ESC:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//不保存结果
//菜单执行项退出数据清理
//标准退回菜单
ucSystemMenuState = MenuState_X1; //进入菜单状态
break;
}
//清除键 (KEY_CLEAR) 清除所有时间设置(清0)。
case KEY_CLEAR:
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//数据设为默认值
uc8_SystemMenuTurnTemp[0] = pSystemMenu->pMenuOneList[ucSystemMenuID].ucMenuIDData0;
break;
}
}
//菜单显示--子菜单1层
pucDBuf = fnDisplayBufSet(Display_01Set);
//显示位清除
pucDBuf[0] = 0x0f;
pucDBuf[1] = 0x0f;
pucDBuf[2] = 0x0f;
pucDBuf[3] = 0x0f;
pucDBuf[4] = 0x0f;
i = uc8_SystemMenuTurnTemp[0] / 100;
if (i == 0)
pucDBuf[5] = 0x0f;
else
pucDBuf[5] = i; //百位显示
i = uc8_SystemMenuTurnTemp[0] % 100;
i = i /10;
if (i==0 & pucDBuf[5] == 0x0f)
pucDBuf[6] = 0x0f;
else
pucDBuf[6] = i; //十位显示
pucDBuf[7] = uc8_SystemMenuTurnTemp[0] % 10; //个位显示
//设置当前无闪烁
fnDisplaySetDk(Display_01Set,0);
ucDisplayState = Display_01Set; //显示菜单
break;
}
}
}
/*******************************************************************
PP6控制函数 - 系统记录数据清零
函数原型: void fnSet_SystemMenu_PP6()
功能: PP6控制函数 - 系统记录数据清零
返回:
********************************************************************/
void fnS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -