此帖出自嵌入式系统论坛
最新回复
void DealKey()
{
uchar KeyValue1;
KeyValue1=Key;
switch(KeyValue1)
{
case OK:
{
pKeyFunc=KeyTab[KeyFuncIndex].CurrentOperate;
(*pKeyFunc)();
break;
}
case Down:
{
KeyFuncIndex=(KeyTab[KeyFuncIndex].KeyDown);
Display(1, 4,8,&menu[KeyFuncIndex]); ////////////////////////////////
P2=0x0e;
P1=0x99;
Delay_5MS(3);
break;
}
case 0xff:
{
P2=0x0b;
P1=0x99;
Delay_5MS(10);
Display(1, 4,8, &menu[KeyFuncIndex]);
Delay_5MS(3);
break;
}
}
}
我在做菜单的时候发现这个问题,上面那个是我的处理键盘值的函数,在main函数里面有键盘扫描程序,当我按一次 Down 键时,能下翻找到我的菜单,但是接着我按一次OK,它执行了我那个case OK;语句,但是还是执行了我的 case Down:那里的语句!大家帮我看看为什么啊!
附上结构体的定义跟初始化
typedef struct KeyTabStruct
{
uchar KeyIndex; //当前索引号
uchar KeyDown; //按下"向下"键时转向的索引号
void (* CurrentOperate)(); //当前操作
}KeyTabStruct;
struct KeyTabStruct KeyTab[SIZE_OF_MENU]=
{
{0,1,(SetTime)}, //顶层
{1,2,(SetTime)}, //第二层
{2,1,(Alarm)} //第二层
};
我在做这个菜单的时候参考了这篇文章: http://www.mcuwork.com/data/2006/1130/article_10389.htm
详情
回复
发表于 2007-4-24 10:52
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持