原创 调度器2

2011-3-15 10:45 3993 3 3 分类: EDA/ IP/ 设计与制造
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();
    }           

}
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条