标题: C语言if(t!=P1) continue; 怎么理解?烦请大哥哥大姐姐详细点,我C小白,拜托了! [打印本页]

作者: fengshiwuji    时间: 2020-6-24 14:50
标题: C语言if(t!=P1) continue; 怎么理解?烦请大哥哥大姐姐详细点,我C小白,拜托了!
本帖最后由 fengshiwuji 于 2020-6-28 12:13 编辑

        while(1)
        {
                t=P1;
                if(t!=0xff)
                {
                        delayms(10);
                        if(t!=P1)
                                continue;
                        //取得 4 位按键值,由模式 XXXX1111(X 中有一位为 0,其他均为 1)
                        //变为模式 0000XXXX(X 中有一位为 1,其他均为 0)
                        Key_State=~t>>4;
                        k=0;
                        //检查 1 所在位置,累加获取按键号 k
                        while(Key_State!=0)
                        {
                                k++;
                                Key_State>>=1;
                        }
                        //根据按键号 k 进行 4 种处理
                        switch(k)
                        {
                                case 1: if(P0==0x00) P0=0xff;
                                P0<<=1;
                                delayms(200);
                                break;
                                case 2: P0=0xf0;break;
                                case 3: P0=0x0f;break;
                                case 4: P0=0xff;
                        }
                }
        }


作者: 嘿黑潶嗨    时间: 2020-6-24 16:20
是不是t不等于P1的时候跳到if(t!=0xff)?
作者: wulin    时间: 2020-6-24 16:45
       while(1)
        {
                t=P1; //P1接有若干按键,初始值0xff,有任何按键按下P1≠0xff,根据t值就可以判断那个键按下
                if(t!=0xff)
                {
                        delayms(10);
                        if(t!=P1)

作者: lphit    时间: 2020-6-24 17:27
continue是退出本次while循环,开始下一次的while循环。
continue不是作用到if上的。
作者: xianfajushi    时间: 2020-6-24 17:46
continue;函数是继续的意思,break;结束的意思。
作者: wyqf    时间: 2020-6-25 11:12
去抖动用的,从头开始看t=P1读取P1口的值if判断t值是否为有效值也就是P1口的情况应该是连接了下拉电阻的按键,延时去抖,如果为抖动也就是说相应口的低电平只持续一瞬间,那么再去检测P1口时就与原来的P1口也就是t的数值不同,不同的话就是抖动就不用执行下面的语句所以continue重新检测,若相同则证明是实实在在的按下去了执行相应按键按下后的操作
作者: fengshiwuji    时间: 2020-6-25 12:29
嘿黑潶嗨 发表于 2020-6-24 16:20
是不是t不等于P1的时候跳到if(t!=0xff)?

不知道,if(t!=0xff)这条语句是循环语句还是判断语句?有点搞不清了,若是循环那是否就是结束if(t!=0xff)的某次循环,重新判断,或者不是if(t!=0xff),而是外边的大循环while(1)
作者: fengshiwuji    时间: 2020-6-25 12:33
wyqf 发表于 2020-6-25 11:12
去抖动用的,从头开始看t=P1读取P1口的值if判断t值是否为有效值也就是P1口的情况应该是连接了下拉电阻的按 ...

你是说 if(t!=0xff) 做循环语句,continue是结束 if(t!=0xff) 某一次循环重新做判断吗?
作者: fengshiwuji    时间: 2020-6-25 12:35
wulin 发表于 2020-6-24 16:45
while(1)
        {
                t=P1; //P1接有若干按键,初始值0xff,有任何按键按下P1≠ ...

我可能描述的不是很清楚,我不理解continue作用的是哪一个循环,是 if(t!=0xff) 还是while(1)
作者: fengshiwuji    时间: 2020-6-25 12:36
lphit 发表于 2020-6-24 17:27
continue是退出本次while循环,开始下一次的while循环。
continue不是作用到if上的。

明白,
作者: cdlongbo    时间: 2020-6-26 13:48
if(t!=P1) continue;   这个是在while(1)循环中的,当t这个变量不等于P1时程序跳转到while(1)处执行循环的第一条指令




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