请教个问题:我用四个按键,(功能、增加、减少、确认)

[复制链接]
1616|7
 楼主| yuanquan12345 发表于 2015-9-19 20:53 | 显示全部楼层 |阅读模式
请教个问题:我用四个按键,(功能、增加、减少、确认)。
功能键:在1602上有四组参数需要设置,按一次功能键在第一个参数上闪烁。按第二次在第二组上闪烁,参数是保存到外部存储器上。如果要设置第一组参数,选中后按(增加或减少键)参数被修改,按确认键,数据保存到存储器里。
按功能后置位一个标志位,按增加键后再置位一个标志位,然后:if(功能标志位){if(增加键标志位){}},这样行吗?
这样是不是效率低,有好的办法吗?
请教,谢谢。
wangke639515 发表于 2015-9-19 20:58 | 显示全部楼层
你的功能是选四组参数,置位标志如何区分?如果分四个标志位,为何不选用switch语句?
 楼主| yuanquan12345 发表于 2015-9-19 21:05 | 显示全部楼层
对,功能键按下,就是用switch.
皈依 发表于 2015-9-19 23:27 | 显示全部楼层
用switch效率高多了。
 楼主| yuanquan12345 发表于 2015-9-19 23:29 | 显示全部楼层
if(keycode == 0x1B)                                // 功能键
        {
                j++;
                j &= 0x03;
                switch(j)
                {
                        case 0:
                                 function_0 = 1;
                                 if(keycode == 0x26)        // 增加键按下
                                 {
                                         hh_parameter += ReadSet(0x00);
                                        if{}确认键
                                 }
                                 else if{}减键
                                 LcdSetCursor(5,0);                // 设置地址(坐标)
                                 LcdWriteCmd(0x0F);                // 光标闪烁
                                 break;
               
                }
        }
这样行吗?
chenyu988 发表于 2015-9-20 08:22 | 显示全部楼层
我一般是这么写:
void Display_KeyUpProcess(void)
{
        switch (Menu.cur)
        {
                case MENU_SETU_EQ:
                        SysState.Cur_EQSetupIndex++;
                        if (SysState.Cur_EQSetupIndex > (EQ_N - 1))
                                SysState.Cur_EQSetupIndex = 0;
                        break;
                default:
                        break;
        }
        Display_update();       
}

void Display_KeyDownProcess(void)
{
        switch (Menu.cur)
        {
                case MENU_SETU_EQ:
                        if (SysState.Cur_EQSetupIndex > 0)
                                SysState.Cur_EQSetupIndex--;
                        else
                                SysState.Cur_EQSetupIndex = EQ_N - 1;
                        break;
                default:
                        break;
        }
        Display_update();       
}
 楼主| yuanquan12345 发表于 2015-9-20 08:47 | 显示全部楼层
谢谢。
robter 发表于 2015-9-20 17:40 | 显示全部楼层
很好的资料,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

1155

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部