鑫越电子 发表于 2020-8-3 20:31

帮忙讲解一下这段程序的意思

这是之前工程用STM8的一段程序,不懂,麻烦帮忙解释一下。

if(system_parameter.Voltage_Group_Key_Flag)//档位
        {
                if(Read_Key_Voltage_Group == 0)
                {
                        if(system_parameter.Voltage_Group_Key_times < 2000)
                        {
                                system_parameter.Voltage_Group_Key_times++;
                        }
                        else if(system_parameter.Voltage_Group_Key_times >= 2000)
                        {
                                system_parameter.Voltage_Group_Key_times = 0;
                                system_parameter.Voltage_Group_Key_Long = 1;
                                system_parameter.Voltage_Group_Key_Short = 0;
                                system_parameter.Voltage_Group_Key_Flag = 0;
                                if(system_parameter.ON_OFF_Power)
                                {
                                        system_parameter.Voltage_Group_LED_Enable_Flag = 1;
                                }
                        }
                       
                }
                else
                {
                        if((system_parameter.Voltage_Group_Key_times > 100)&&(system_parameter.Voltage_Group_Key_times < 1500)&&(system_parameter.Voltage_Group_Key_Cont == 0))
                        {
                                system_parameter.Voltage_Group_Key_times = 0;
                                system_parameter.Voltage_Group_Key_Long = 0;
                                system_parameter.Voltage_Group_Key_Short = 1;
                                system_parameter.Voltage_Group_Key_Flag = 0;
                                if(system_parameter.ON_OFF_Power)
                                {
                                        system_parameter.Voltage_Group_LED_Enable_Flag = 1;
                                }
                        }
                        else
                        {
                                system_parameter.Voltage_Group_Key_times = 0;
                                system_parameter.Voltage_Group_Key_Long = 0;
                                system_parameter.Voltage_Group_Key_Short = 0;
                                system_parameter.Voltage_Group_Key_Flag = 0;


                        }
                }
        }

        if(system_parameter.Plus_Key_Flag)//加
        {
                if(Read_Key_Plus == 0)
                {
                        if(system_parameter.Plus_Key_times <= 2000)
                        {
                                system_parameter.Plus_Key_times++;
                        }
                        else if(system_parameter.Plus_Key_times >= 2000)
                        {
                                //system_parameter.Plus_Key_times = 0;
                                system_parameter.Plus_Key_Long = 1;
                                system_parameter.Plus_Key_Short = 0;
                                system_parameter.Plus_Key_Flag = 0;
                                if(system_parameter.ON_OFF_Power)
                                {
                                        system_parameter.Up_LED_Enable_Flag = 1;
                                }
                        }
                }
                else
                {
                        if((system_parameter.Plus_Key_times > 100)&&(system_parameter.Plus_Key_times < 1500))
                        {
                                system_parameter.Plus_Key_times = 0;
                                system_parameter.Plus_Key_Long = 0;
                                system_parameter.Plus_Key_Short = 1;
                                system_parameter.Plus_Key_Flag = 0;
                                if(system_parameter.ON_OFF_Power)
                                {
                                        system_parameter.Up_LED_Enable_Flag = 1;
                                }
                        }
                        else
                        {
                                system_parameter.Plus_Key_times = 0;
                                system_parameter.Plus_Key_Long = 0;
                                system_parameter.Plus_Key_Short = 0;
                                system_parameter.Plus_Key_Flag = 0;
                        }
                }
        }


xyz549040622 发表于 2020-8-3 22:44

楼主给的信息太少,我估计这是一段按键处理函数,判断按键按下的时间(system_parameter.Plus_Key_times),进行不同的作用,判断按键的长按和短按的,然后根据
system_parameter.Plus_Key_Long
system_parameter.Plus_Key_Short
这个长按和短按标志进行不同的函数处理的。

li880wert 发表于 2020-8-6 08:55

就是一个按键 长短按的处理,写这么复杂,要我写 10来行搞定,
页: [1]
查看完整版本: 帮忙讲解一下这段程序的意思