单片程序一个死循环的问题。求大神,
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
}
}
while(KeyValue==0),你在这句下面点个灯,然后在编译烧录运行一下看看灯亮不亮在分析,不亮就好说了,亮那就奇了怪了
这个是坛友解释的 非常在理
while(KeyValue==0)里的KeyValue已经等于0了,所以就是0了啊……因为是while卡死在这句所以你的
KeyDown(); //,按键扫描,读取键值赋值给KeyValue就执行不到了。KeyValue就刷新不了……
我也试过吧while去掉 还是一样~~~~
你少了一个}符号呀
这个我只是发帖子的时候忘记写进去了 程序是有的 不然连编译都不行了 更不用说测试了
试试 TX_Send=1;
while(!KeyValue)
VLCWrite("1",5,1);//发送字符1,发送5个字符,采用信道1
还是不行~~~
看来你要在按键扫描程序里找问题。因为while(KeyValue==0)括号里一直为真就不能跳出,下面的语句也改变不了其值,就死在这里。不太明白你这样编程的用意。
我试过用一个扫描按键的来重新写一个主函数。 就是按下 P0^0 从0变到1 两秒后变成0 是可以的 而且试过了 每个按键都是可以的
你没听明白我的意思啊……死在while(KeyValue==0)这句话,你的KeyValue如何变成真?,while(KeyValue==0)之前调用了一次KeyDown(); 刷新了一次KeyValue的值,之后就再也没有刷新了
灯亮了 可能是卡在那个VLCWrite 那个子函数里面 ~~~~ 忧伤
搞软件一定细心再细心 同样跟着小编学习一下相关经验
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)
{
KeyDown();
}
VLCWrite("1",5,1);//发送字符1,发送5个字符,采用信道1
}
}
if(KeyValue==0)
{
TX_Send=1;
一直在判断 if(KeyValue==0)这个条件成立,只是回到1的时间非常短几个机器周期而已。