⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 一个流量控制仪器的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
					}

				}


				//菜单显示

				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 + -