📄 menu.c
字号:
/************************************************************************************/
/* G7000 V3 设置菜单 */
/* MCU 型号: Philips P89C668 */
/* 时钟频率: 11.0592 MHz 6 CLOCK */
/* 开发环境: Keil C51 V7.06a */
/* 开发日期: 2003.08.23 */
/* 程序编写: BaoFang 鲍方 */
/* 系统版本: V3.00 */
/************************************************************************************/
#include <REG668.H>
#include <Stdio.H>
#include <7279A_P2.H>
//#include <G7000.H>
#include <Display.H>
#include <CAT24WC16P.H>
//#include <BitOp.H>
#include <Timer.H>
#include <Flux_PCA.H>
#include <TurnControl.H>
#include <QuickSet.H> //已经引用了<G7000.H> <BitOp.H>
#include <CLOCK_DS1307.H>
#include <General.H>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//预定义函数
bit fnCheck_Menu_1();
bit fnCheck_Menu_0();
//PP4、P5设定菜单的初始化检查函数
bit fnCheck_Menu_QuickSet();
void fnRun_Menu();
//菜单数据结构
typedef struct MenuOneStruct
{
uchar ucMenuNum; //当前菜单等级序号:1--
bit (*pfnCheck_Menu)(); //检查本菜单项允许否
struct MenuListStruct *pChildMenu; //子菜单结构指针,当NULL时,为执行菜单项
void (*pfnRun_Menu)(); //执行菜单项的执行函数
uchar ucMenuIDSize; //本菜单项的存储大小 0 表示无
uint ucMenuIDAddress; //本菜单项的存储地址 0 表示无
uchar ucMenuIDDataMin; //本菜单项的存储数据最小值
uchar ucMenuIDDataMax; //本菜单项的存储数据最大值
uchar ucMenuIDData0; //本菜单项的存储数据默认值
} ;
//菜单组项
typedef struct MenuListStruct
{
uchar ucMenuName[2]; //显示的本菜单符号
uchar ucMenuRank; //菜单等级:0-主菜单;1-一级;2-二级;
uchar ucMenuOneMax; //本菜单菜单项的数目
struct MenuListStruct *pParrentMenu; //父菜单结构指针,当NULL时,为最高级。
struct MenuOneStruct *pMenuOneList; //本菜单结构指针,不允许NULL
} ;
//菜单预定义项
struct MenuListStruct code Menu_NormDisplay; //一级菜单--正常显示 E
struct MenuListStruct code Menu_AdvanceSet1; //一级菜单--高级设定 PP
struct MenuListStruct code Menu_NormSet1; //一级菜单--普通设定 P
struct MenuListStruct code Menu_Record; //一级菜单--记录查看 L
struct MenuListStruct code Menu_AdvanceSet1_1; //二级菜单--PP1
struct MenuListStruct code Menu_AdvanceSet1_2; //二级菜单--PP2
struct MenuListStruct code Menu_AdvanceSet1_3; //二级菜单--PP3
struct MenuListStruct code Menu_NormSet1_6; //二级菜单--P6
struct MenuListStruct code Menu_Record_1; //二级菜单--L1
struct MenuListStruct code Menu_Record_2; //二级菜单--L2
struct MenuListStruct code Menu_Record_3; //二级菜单--L3
struct MenuListStruct code Menu_Record_4; //二级菜单--L4
//菜单执行预定义项
void fnDisplay_MenuNormDisplay(); //正常显示函数
void fnDisplay_MenuRecord1Display(); //察看记录L1显示函数
void fnDisplay_MenuRecord2Display(); //察看记录L2显示函数 L2 最近8次再生情况
void fnDisplay_MenuRecord3Display(); //察看记录L3显示函数 流速统计
void fnDisplay_MenuRecord4Display(); //察看记录L4显示函数 L4 最近7天的最大流速/时间
void fnSet_SystemMenuNormByte(); //通用单字节数据输入函数
void fnSet_SystemMenuNormTime(); //通用时间数据输入函数
void fnSet_SystemMenuDateTime(); //系统日期时间数据输入函数
void fnSet_SystemMenuNormUint(); //通用双字节数据输入函数
void fnSet_SystemMenu_PP4(); //PP4 设定函数
void fnSet_SystemMenu_P5(); //P5 设定函数
void fnSet_SystemMenu_PP6(); //PP6控制函数 - 系统记录数据清零
void fnSet_SystemMenuQuickSet(); //快速设定方式函数
void fnSet_SystemMenuTurnCON(); //PP4 一般输出设定函数
void fnSet_SystemMenuTurnTime(); //P5 一般时间设定函数
//主菜单
struct MenuOneStruct code Menu_Main0List[5] = {
{1,&fnCheck_Menu_1, &Menu_NormDisplay, NULL, 0, 0, 0, 0, 0}, //1-正常显示
{2,&fnCheck_Menu_1, &Menu_AdvanceSet1, NULL, AdvanceSetLength, AdvanceSetAddress, 0, 0, 0}, //2-高级设定 按下SYS.键
{3,&fnCheck_Menu_1, &Menu_NormSet1, NULL, NormSetLength, NormSetAddress, 0, 0, 0}, //3-普通设定 按下SET.键
{4,&fnCheck_Menu_1, &Menu_Record, NULL, 0, 0, 0, 0, 0}, //4-察看记录 按下REC.键
{5,&fnCheck_Menu_0, NULL, &fnRun_Menu, 0, 0, 0, 0, 0} //5-察看报警 按下ALARM.键
};
struct MenuListStruct code Menu_Main0 = {
{0x0f,0x0f},0,5,NULL,Menu_Main0List };
//一级菜单--正常显示 E
struct MenuOneStruct code Menu_NormDisplayList[11] = {
{1,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E1 罐的剩余水量
{2,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E2 罐体的设定水量
{3,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E3 罐体的流速
{4,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E4 运行状态
{5,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E5 总还原次数
{6,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E6 报警状态CL(ALARM x)
{7,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E7 暂停状态CL(PAUSEx)
{8,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E8 触发变量CL(COUSEx)、CL(DISCOUSEx)
{9,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E9 日期
{10,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0}, //E10 时间
{11,&fnCheck_Menu_1, NULL, &fnDisplay_MenuNormDisplay, 0, 0, 0, 0, 0} //E11 流量计脉冲计数器数 ulFluxPulse
};
struct MenuListStruct code Menu_NormDisplay = {
{0x0F,0x0B},1,11,&Menu_Main0,Menu_NormDisplayList}; //E 正常显示
//一级菜单--高级设定 PP
struct MenuOneStruct code Menu_AdvanceSet1List[9] = {
{1,&fnCheck_Menu_1, &Menu_AdvanceSet1_1, NULL, 0, 0, 0, 0, 0}, //PP1 工作方式\系统设定
{2,&fnCheck_Menu_1, &Menu_AdvanceSet1_2, NULL, 0, 0, 0, 0, 0}, //PP2
{3,&fnCheck_Menu_1, &Menu_AdvanceSet1_3, NULL, 0, 0, 0, 0, 0}, //PP3
{4,&fnCheck_Menu_QuickSet, NULL, &fnSet_SystemMenu_PP4, 0, 0, 0, 0, 0}, //PP4 输出设定函数
{5,&fnCheck_Menu_0, NULL, &fnRun_Menu, 0, 0, 0, 0, 0}, //PP5
{6,&fnCheck_Menu_1, NULL, &fnSet_SystemMenu_PP6, 0, 0, 0, 0, 0}, //PP6 系统记录数据清零
{7,&fnCheck_Menu_0, NULL, &fnRun_Menu, 0, 0, 0, 0, 0}, //PP7
{8,&fnCheck_Menu_0, NULL, &fnRun_Menu, 0, 0, 0, 0, 0}, //PP8
{9,&fnCheck_Menu_0, NULL, &fnRun_Menu, 0, 0, 0, 0, 0} //PPE
};
struct MenuListStruct code Menu_AdvanceSet1 = {
{0x0e,0x0e},1,9,&Menu_Main0,Menu_AdvanceSet1List}; //PP
//二级菜单--PP1 工作方式\系统设定
struct MenuOneStruct code Menu_AdvanceSet1_1_List[12] = {
{ 1,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 50, 0, 5, 0}, //PP1-1 系统设置
{ 2,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 51, 0, 1, 1}, //PP1-2 工作段时间是否引发再生
{ 3,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 52, 0, 1, 0}, //PP1-3 流量是否引发再生
{ 4,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 53, 0, 1, 0}, //PP1-4 是否采用掉电记忆功能
{ 5,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 54, 0, 253, 0}, //PP1-5 控制器网络地址
{ 6,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 55, 1, 4, 1}, //PP1-6 系统工作情况
{ 7,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 56, 1, 9, 1}, //PP1-7 允许进入还原和备用数目
{ 8,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 57, 0, 1, 0}, //PP1-8 是否开启多次还原后增强
{ 9,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 58, 2, 9, 2}, //PP1-9 开启多次还原后增强后的数字
{10,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 59, 0, 1, 0}, //PP1-10 是否开启备用后时间
{11,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 60, 0, 1, 0}, //PP1-11 是否安装感应卡
{12,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 61, 0, 1, 0} //PP1-12 是否采用报警与暂停功能
};
struct MenuListStruct code Menu_AdvanceSet1_1 = {
{0x0e,0x0e},2,12,&Menu_AdvanceSet1,Menu_AdvanceSet1_1_List};
//二级菜单--PP2 流量型产品数据设定
struct MenuOneStruct code Menu_AdvanceSet1_2_List[4] = {
{1,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormUint, 2, 62, 1, 60, 100}, //PP2-1 流量计倍率
{2,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormUint, 2, 64, 1, 60, 5}, //PP2-2 统计流量计瞬时流量的平均值所用时间
{3,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 66, 1, 50, 5}, //PP2-3 负流量的比例
{4,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 67, 0, 1, 0} //PP2-4 是否显示流速
};
struct MenuListStruct code Menu_AdvanceSet1_2 = {
{0x0e,0x0e},2,4,&Menu_AdvanceSet1,Menu_AdvanceSet1_2_List};
//二级菜单--PP3 对于外部开关输入的检测设定
struct MenuOneStruct code Menu_AdvanceSet1_3_List[7] = {
{1,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 68, 0, 1, 1}, //PP3-1 是否检测T1远程启动开关
{2,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 69, 0, 1, 0}, //PP3-2 是否检测T2反馈开关
{3,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 70, 0, 1, 0}, //PP3-3 是否安装T3盐液开关
{4,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 71, 0, 1, 0}, //PP3-4 是否在还原检测T4压力开关
{5,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 72, 0, 1, 0}, //PP3-5 盐液开关种类1 0低位,1高位
{6,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 73, 0, 1, 0}, //PP3-6 盐液开关种类2 0常开,1常闭
{7,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 74, 3, 40, 15} //PP3-7 对于多路阀型软化水状态,[01]开始后多长时间检测反馈开关,回到[19]或[39]后的状态。
};
struct MenuListStruct code Menu_AdvanceSet1_3 = {
{0x0e,0x0e},2,7,&Menu_AdvanceSet1,Menu_AdvanceSet1_3_List};
//一级菜单--普通设定 P
struct MenuOneStruct code Menu_NormSet1List[7] = {
{1,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuDateTime, 0, 1, 4, 1, 1}, //P1 设置系统日期
{2,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuDateTime, 0, 2, 0, 0, 0}, //P2 设置系统时间
{3,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormTime, 4, 150, 2, 0, 0}, //P3 单罐延时还原型的再生时间
{4,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormUint, 2, 154, 0, 60, 100}, //P4 周期产水量
{5,&fnCheck_Menu_QuickSet, NULL, &fnSet_SystemMenu_P5, 0, 0, 0, 0, 0}, //P5 时间设定函数
{6,&fnCheck_Menu_1, &Menu_NormSet1_6, NULL, 0, 0, 0, 0, 0}, //P6 报警与暂停设置
{7,&fnCheck_Menu_0, NULL, &fnRun_Menu, 0, 0, 0, 0, 0}, //P7
};
struct MenuListStruct code Menu_NormSet1 = {
{0x0f,0x0e},1,7,&Menu_Main0,Menu_NormSet1List}; //P
//二级菜单--P6 报警与暂停设置
struct MenuOneStruct code Menu_NormSet1_6_List[16] = {
{ 1,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 156, 0, 1, 1}, //P6- 1 外置开关的报警
{ 2,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 157, 0, 1, 0}, //P6- 2 反馈开关的报警
{ 3,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 158, 0, 1, 0}, //P6- 3 盐量报警
{ 4,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 159, 0, 1, 0}, //P6- 4 外部压力开关的报警
{ 5,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 160, 0, 1, 0}, //P6- 5 是否由盐量终止再生某一步骤
{ 6,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 161, 1, 19, 1}, //P6- 6 上述成立,终止哪个步骤
{ 7,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 162, 0, 2, 0}, //P6- 7 是否由盐量引起暂停[73]
{ 8,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormTime, 4, 676, 0, 0, 0}, //P6- 8 [73]盐量暂停时间
{ 9,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 167, 0, 2, 0}, //P6- 9 是否由压力引起暂停过程[74]
{10,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormTime, 4, 680, 0, 0, 0}, //P6-10 [74]压力暂停时间
{11,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 172, 0, 1, 0}, //P6-11 负流量到达设定后是否报警
{12,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 173, 0, 1, 0}, //P6-12 负流量到达设定后是否转入强制再生
{13,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 174, 0, 3, 0}, //P6-13 是否由负流量引起暂停[75]
{14,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormTime, 4, 684, 0, 0, 0}, //P6-14 [75]负流量暂停时间
{15,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 179, 0, 1, 0}, //P6-15 工作时是否可以暂停[76]
{16,&fnCheck_Menu_1, NULL, &fnSet_SystemMenuNormByte, 1, 180, 0, 1, 0} //P6-16 还原时是否可以暂停[77]
};
struct MenuListStruct code Menu_NormSet1_6 = {
{0x0f,0x0e},2,16,&Menu_NormSet1,Menu_NormSet1_6_List};
//一级菜单--4-察看记录 按下REC.键
struct MenuOneStruct code Menu_RecordList[4] = {
{1,&fnCheck_Menu_1, &Menu_Record_1, NULL, 0, 0, 0, 0, 0}, //L1 自上次再生清0后再生次数统计
{2,&fnCheck_Menu_1, &Menu_Record_2, NULL, 0, 0, 0, 0, 0}, //L2 最近8次再生情况 {3,&fnCheck_Menu_1, &Menu_Record_3, NULL, 0, 0, 0, 0, 0}, //L3 流速统计 {4,&fnCheck_Menu_0, &Menu_Record_4, NULL, 0, 0, 0, 0, 0} //L4 最近7天的最大流速/时间};
struct MenuListStruct code Menu_Record = {
{0x0f,0x0d},1,4,&Menu_Main0,Menu_RecordList}; //L
//二级菜单--L1 自上次再生清0后再生次数统计
struct MenuOneStruct code Menu_Record_1_List[5] = {
{ 1,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord1Display, 0, 0, 0, 0, 0}, //L1-1 总的再生次数
{ 2,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord1Display, 0, 0, 0, 0, 0}, //L1-2 由定时引起的还原次数
{ 3,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord1Display, 0, 0, 0, 0, 0}, //L1-3 由定量引起的还原次数(负流量计次归入流量)
{ 4,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord1Display, 0, 0, 0, 0, 0}, //L1-4 由手动引发的次数
{ 5,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord1Display, 0, 0, 0, 0, 0} //L1-5 由外部开关引发的次数
};
struct MenuListStruct code Menu_Record_1 = {
{0x0F,0x0d},2,5,&Menu_Record,Menu_Record_1_List};
//二级菜单--L2 最近8次再生情况
struct MenuOneStruct code Menu_Record_2_List[8] = {
{ 1,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-1
{ 2,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-2
{ 3,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-3
{ 4,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-4
{ 5,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-5
{ 6,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-6
{ 7,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0}, //L2-7
{ 8,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord2Display, 0, 0, 0, 0, 0} //L2-8
};
struct MenuListStruct code Menu_Record_2 = {
{0x0F,0x0d},2,8,&Menu_Record,Menu_Record_2_List};
//二级菜单--L3 流速统计
struct MenuOneStruct code Menu_Record_3_List[2] = {
{ 1,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord3Display, 0, 0, 0, 0, 0}, //L3-1 历史最大流速
{ 2,&fnCheck_Menu_0, NULL, &fnDisplay_MenuRecord3Display, 0, 0, 0, 0, 0} //L3-2 当天最大流速
};
struct MenuListStruct code Menu_Record_3 = {
{0x0F,0x0d},2,2,&Menu_Record,Menu_Record_3_List};
//二级菜单--L4 最近7天的最大流速/时间
struct MenuOneStruct code Menu_Record_4_List[7] = {
{ 1,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0}, //L4-1
{ 2,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0}, //L4-2
{ 3,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0}, //L4-3
{ 4,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0}, //L4-4
{ 5,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0}, //L4-5
{ 6,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0}, //L4-6
{ 7,&fnCheck_Menu_1, NULL, &fnDisplay_MenuRecord4Display, 0, 0, 0, 0, 0} //L4-7
};
struct MenuListStruct code Menu_Record_4 = {
{0x0F,0x0d},2,7,&Menu_Record,Menu_Record_4_List};
//系统当前菜单指针
struct MenuListStruct code *pSystemMenu;
//系统当前菜单项
xdata uchar ucSystemMenuID;
//系统上一级菜单项
xdata uchar ucSystemMenuID_up;
//系统当前菜单状态
xdata uchar ucSystemMenuState;
//设定时间段变量 时段列表TurnList的索引值 0-49
xdata uchar ucSystemMenuTurnNum;
//设定暂存(输出、时间 公用)
xdata uchar uc8_SystemMenuTurnTemp[8];
xdata uchar ucSystemMenuTurnTemp0; //设定子菜单层次变量0 一般在Check中设置
xdata uchar ucSystemMenuTurnTemp1; //设定子菜单层次变量1 在进入子菜单前设置,设为0
xdata uchar ucSystemMenuTurnTemp2; //设定子菜单层次变量2
xdata uchar ucSystemMenuTurnTemp3; //设定子菜单层次变量3
xdata ulong ucSystemMunuTurnTempUL; //设定子菜单层次变量UL
//uchar uc3_TimeTemp1[5]; //时间设置变量
xdata uchar uc3_TimeTemp1[2]; //时间设置变量
xdata uint ui_UINTTemp1; //双字节设置变量
/********************************************************************************************
快速设置
/********************************************************************************************/
//函数预定义
void fnSet_QuickSetNormByte(); //快速设置单字节数据输入函数
void fnSet_QuickSetNormTime(); //快速设置时间数据输入函数
void fnSave_QuickSetData(); //快速设置存储函数
//数据结构
typedef struct QuickSetDataSetStruct
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -