标题: 单片机程序 想用一个按键来0-4递增,逻辑上一直没想明白怎么写? [打印本页]

作者: liu9808    时间: 2021-10-27 17:09
标题: 单片机程序 想用一个按键来0-4递增,逻辑上一直没想明白怎么写?
本人想用一个按键来0-4递增,然后到达4后开始递减,然后再递增。逻辑上一直没想明白怎么写,之前写的是0-4,然后归0,再往上加。希望各位指导一下
System_Info.Current_Gear ++;
                                        if(System_Info.Current_Gear >= 5)
                                        {
                                                System_Info.Current_Gear = 0;
                                        }


作者: liu9808    时间: 2021-10-27 17:40
不改变按键检测方式,就是只短按
作者: 188610329    时间: 2021-10-27 18:41
本帖最后由 188610329 于 2021-10-27 19:07 编辑

如下:
bit Key_Stats = 1;
uchar Key;

if(Key_Stats){
        Key++;
        if(Key >=4) Key_Stats = 0;
}
else
{
        Key--;
        if(Key <= 0)    Key_Stats =1;
}

作者: yzwzfyz    时间: 2021-10-28 09:23
同上:
bit Key_Stats = 1;
uchar Key;

if(Key_Stats){
         Key++;
         if(Key >=5) Key_Stats = 0;
}
else
{
         Key--;
         if(Key <= 0)    Key_Stats =1;
}
作者: jsezcyc    时间: 2021-10-28 09:23
简单说,你要定义两个变量,一个代表按键值,一个作为标志位代表按键是加还是减,每次按键按下都判断现在标志位是加还是减,当按键值加到四或者减到零就把标志位取反。
作者: wojiaoguogai    时间: 2021-10-30 20:22
需要用一个变量来记录当前是递增还是递减的。
作者: 一giao我里giao    时间: 2021-10-31 09:13
unsigned char i,;
csSystem_Info.Current_Gear=i-(i/5)*(i%5*2+1);
i++;if(i==9)i=0;
作者: 一giao我里giao    时间: 2021-10-31 09:30
一giao我里giao 发表于 2021-10-31 09:13
unsigned char i,;
csSystem_Info.Current_Gear=i-(i/5)*(i%5*2+1);
i++;if(i==9)i=0;

按键控制的话就让按键按下i就加1就行了
作者: 没啥好名    时间: 2021-10-31 11:40

unsigned char i;
System_Info.Current_Gear=i-(i/5)*(i%5*2+1);
i++;if(i==9)i=0;
作者: 郑汉松    时间: 2021-11-1 09:19
if(++System_Info.Current_Gear == 5)
{
    System_Info.Current_Gear = 0;
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1