void (*Thrd)(void); //设置函数指针
char InitFlag=1;
//每个界面一个函数,while循环当前函数指针所指的函数,分为主界面状态,时间设置状态,数据设置状态,按键提示状态,状态之间转移的事件是按键,每个状态一个函数
//时间设置
void TimeSet(void)
{
if(InitFlag == 1)//需要初始化界面
{
InitFlag=0;
}
if(Key == KEY_NONE)return ;
switch(Key)
{
case KEY_EXIT: //当是退出按键
Thrd = ProcMainKey;//返回主界面
InitFlag = 1;//并需要刷新界面
break;
default:
break;
}
}
//日期设置
void DateSet(void)
{
if(InitFlag == 1)//需要初始化界面
{
InitFlag=0;
}
if(Key == KEY_NONE)return ;
switch(Key)
{
case KEY_EXIT:
Thrd = ProcMainKey;//返回主界面
InitFlag = 1;//并需要刷新界面
break;
default:
break;
}
}
//按键提示设置
void KeyToneSet(void)
{
if(InitFlag == 1)//需要初始化界面
{
InitFlag=0;
}
if(Key == KEY_NONE)return ;
switch(Key)
{
case KEY_EXIT:
Thrd = ProcMainKey;//返回主界面
InitFlag = 1;//并需要刷新界面
break;
default:
break;
}
}
void ProcMainKey(void) //主菜单界面函数
{
if(InitFlag == 1)//需要初始化界面
{
InitFlag=0;
}
if(Key == KEY_NONE)return ;
switch(Key)
{
KEY1: //如果是按键1到时间设置函数
Thrd = TimeSet;//将“TimeSet”扔到while(1)里面循环
InitFlag = 1;
break;
KEY2: ////如果是按键2到数据设置函数
Thrd = DateSet;//将“DateSet”扔到while(1)里面循环
InitFlag = 1;
break;
KEY3: ////如果是按键3到按键提示设置函数
Thrd = KeyToneSet;//将“KeyToneSet”扔到while(1)里面循环
InitFlag = 1;
break;
default:
break;
}
}
void main(void)
{
Thrd = ProcMainKey; //初始化指针指向主菜单界面
while(1)
{
Thrd();
}
}
文章评论(0条评论)
登录后参与讨论