打印

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

[复制链接]
1215|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效率高多了。

使用特权

评论回复
5
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;
               
                }
        }
这样行吗?

使用特权

评论回复
6
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();       
}

使用特权

评论回复
7
yuanquan12345|  楼主 | 2015-9-20 08:47 | 只看该作者
谢谢。

使用特权

评论回复
8
robter| | 2015-9-20 17:40 | 只看该作者
很好的资料,学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

1155

帖子

3

粉丝