帮忙检查延时程序

2019-07-21 03:43发布

        while(1)
        {
                if(PAin(0)==1)   //K1按键
                {
                                PBout(0)=1;
                                PBout(1)=1;
                                PBout(5)=0; //红灯

                }
                else if(PCin(13)==1)  //K2按键
                {
                                PBout(0)=0;//绿灯
                                PBout(1)=1;
                                PBout(5)=1;
                        delay_ms(10);
                }
                else
                {
                        PBout(0)=1;
                        PBout(1)=0;//蓝
                        PBout(5)=1;
                }
        }
各位大佬,我写了一个简单的按键程序。功能如下:不按按键时亮蓝灯,按下K1亮红灯,按下K2亮绿灯。
我是调用的库里面的头文件。不知道为什么按下K2后再松开,就一直亮绿灯。K1已经没反应。如果第一次按K1是正常的。
我是一个职场小白,求指教。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
d1z1y2
1楼-- · 2019-07-21 05:24
 精彩回答 2  元偷偷看……
xuyaqi
2楼-- · 2019-07-21 07:23
你程序的逻辑有问题,PCin(13)只有两种状态,0和1因此就在这两段死循环,不管PAin(0)执行什么都被下面两句覆盖了。
ys793619971
3楼-- · 2019-07-21 12:53
xuyaqi 发表于 2019-3-22 20:02
你程序的逻辑有问题,PCin(13)只有两种状态,0和1因此就在这两段死循环,不管PAin(0)执行什么都被下面两句 ...

再次感谢,请问PCin(13)为0时,不是就出循环了吗?为什么是死循环,很难理解。
ys793619971
4楼-- · 2019-07-21 13:50
ys793619971 发表于 2019-3-22 23:25
再次感谢,请问PCin(13)为0时,不是就出循环了吗?为什么是死循环,很难理解。

还有就是为什么我把delay_ms函数注释掉,就可以实现功能了?
ys793619971
5楼-- · 2019-07-21 14:06
d1z1y2 发表于 2019-3-23 07:24
仿真一下,看是不是进延时函数里面没出来
另外,看看是不是没有初始化延时

感谢你的答复,还真是没初始化

一周热门 更多>