单片程序一个死循环的问题。求大神,

2019-07-15 12:17发布

一个while死循环,程序如下,为什么P0^0,从0变到1,回不到0了,求各位大神帮忙一下

void main (void)
{
          VLCInit(COM1);
        while( 1)
       {
           TX_Send=0;      //TX_Send=P0^0
           KeyDown();       //,按键扫描,读取键值赋值给KeyValue
           if(KeyValue==0)
           {       
          TX_Send=1;
                  while(KeyValue==0)
                  
                   VLCWrite("1",5,1);//发送字符1,发送5个字符,采用信道1
                  
           }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
woai135923
1楼-- · 2019-07-16 13:02
wulinwl 发表于 2016-12-22 21:18
试试                        TX_Send=1;
                        while(!KeyValue)                       
                        VLCWrite("1",5,1);//发送字符1,发送5个字符,采用信道1

还是不行~~~{:4:}
wulinwl
2楼-- · 2019-07-16 18:54
 精彩回答 2  元偷偷看……
woai135923
3楼-- · 2019-07-16 23:11
wulinwl 发表于 2016-12-22 21:38
看来你要在按键扫描程序里找问题。

我试过用一个扫描按键的来重新写一个主函数。。。    就是按下    P0^0  从0变到1  两秒后变成0      是可以的      而且试过了  每个按键都是可以的
HARRY007
4楼-- · 2019-07-17 00:12
woai135923 发表于 2016-12-22 19:48
我也试过吧while去掉  还是一样~~~~

你没听明白我的意思啊……死在while(KeyValue==0)这句话,你的KeyValue如何变成真????,while(KeyValue==0)之前调用了一次KeyDown(); 刷新了一次KeyValue的值,之后就再也没有刷新了
woai135923
5楼-- · 2019-07-17 04:41
王栋春 发表于 2016-12-22 22:15
while(KeyValue==0),你在这句下面点个灯,然后在编译烧录运行一下看看灯亮不亮在分析,不亮就好说了,亮那就奇了怪了
这个是坛友解释的 非常在理

灯亮了   可能是卡在那个VLCWrite  那个子函数里面 ~~~~  忧伤
李春明
6楼-- · 2019-07-17 07:44
woai135923 发表于 2016-12-23 12:58
灯亮了   可能是卡在那个VLCWrite  那个子函数里面 ~~~~  忧伤

搞软件一定细心再细心    同样跟着楼主学习一下相关经验

一周热门 更多>