找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2454|回复: 10
收起左侧

C语言if(t!=P1) continue; 怎么理解?烦请大哥哥大姐姐详细点,我C小白,拜托了!

[复制链接]
ID:632950 发表于 2020-6-24 14:50 | 显示全部楼层 |阅读模式
本帖最后由 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;
                        }
                }
        }

回复

使用道具 举报

ID:784974 发表于 2020-6-24 16:20 | 显示全部楼层
是不是t不等于P1的时候跳到if(t!=0xff)?
回复

使用道具 举报

ID:213173 发表于 2020-6-24 16:45 | 显示全部楼层
       while(1)
        {
                t=P1; //P1接有若干按键,初始值0xff,有任何按键按下P1≠0xff,根据t值就可以判断那个键按下
                if(t!=0xff)
                {
                        delayms(10);
                        if(t!=P1)
回复

使用道具 举报

ID:788933 发表于 2020-6-24 17:27 | 显示全部楼层
continue是退出本次while循环,开始下一次的while循环。
continue不是作用到if上的。
回复

使用道具 举报

ID:332444 发表于 2020-6-24 17:46 | 显示全部楼层
continue;函数是继续的意思,break;结束的意思。
回复

使用道具 举报

ID:750420 发表于 2020-6-25 11:12 | 显示全部楼层
去抖动用的,从头开始看t=P1读取P1口的值if判断t值是否为有效值也就是P1口的情况应该是连接了下拉电阻的按键,延时去抖,如果为抖动也就是说相应口的低电平只持续一瞬间,那么再去检测P1口时就与原来的P1口也就是t的数值不同,不同的话就是抖动就不用执行下面的语句所以continue重新检测,若相同则证明是实实在在的按下去了执行相应按键按下后的操作
回复

使用道具 举报

ID:632950 发表于 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)
回复

使用道具 举报

ID:632950 发表于 2020-6-25 12:33 | 显示全部楼层
wyqf 发表于 2020-6-25 11:12
去抖动用的,从头开始看t=P1读取P1口的值if判断t值是否为有效值也就是P1口的情况应该是连接了下拉电阻的按 ...

你是说 if(t!=0xff) 做循环语句,continue是结束 if(t!=0xff) 某一次循环重新做判断吗?
回复

使用道具 举报

ID:632950 发表于 2020-6-25 12:35 | 显示全部楼层
wulin 发表于 2020-6-24 16:45
while(1)
        {
                t=P1; //P1接有若干按键,初始值0xff,有任何按键按下P1≠ ...

我可能描述的不是很清楚,我不理解continue作用的是哪一个循环,是 if(t!=0xff) 还是while(1)
回复

使用道具 举报

ID:632950 发表于 2020-6-25 12:36 | 显示全部楼层
lphit 发表于 2020-6-24 17:27
continue是退出本次while循环,开始下一次的while循环。
continue不是作用到if上的。

明白,
回复

使用道具 举报

ID:790159 发表于 2020-6-26 13:48 | 显示全部楼层
if(t!=P1) continue;   这个是在while(1)循环中的,当t这个变量不等于P1时程序跳转到while(1)处执行循环的第一条指令
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表