打印

一个程序跑飞的问题,请赐教!

[复制链接]
楼主: wcsvery
手机看帖
扫描二维码
随时随地手机跟帖
21
xwj| | 2010-9-24 12:56 | 只看该作者 回帖奖励 |倒序浏览
LS,你才是想错了的那个。

while(P11==1);
应该写成
while(P11);

使用特权

评论回复
22
newjacket| | 2010-9-24 13:39 | 只看该作者
在这里两者的区别是?

使用特权

评论回复
23
jiabin1024| | 2010-9-24 14:58 | 只看该作者
能不能将“#include <reg52.h>”贴出来看看,可能出在这里面。

使用特权

评论回复
24
jiabin1024| | 2010-9-24 15:00 | 只看该作者
在kei 的头文件里根本没有定义P11,不知道你是怎么编译通过的?

使用特权

评论回复
25
jiabin1024| | 2010-9-24 15:03 | 只看该作者
while((P1&0x02)==1);
这样应该可以。

使用特权

评论回复
26
lyn3210| | 2010-9-24 16:42 | 只看该作者
查一下硬件吧?

使用特权

评论回复
27
komad| | 2010-9-24 21:22 | 只看该作者
应该是有低电平的干扰

使用特权

评论回复
28
lwq030736| | 2010-9-24 22:14 | 只看该作者
执行到while(p11==1);因为这时候P11=1,这句的时候会一直停留在这
跟while(1);是一个效果的。你把“;”去掉加上大括号,把循环体写进去就好了
不信你可以试试

使用特权

评论回复
29
newjacket| | 2010-9-25 08:52 | 只看该作者
楼主要的就是死循环……

使用特权

评论回复
30
rockkane7| | 2010-9-25 09:28 | 只看该作者
IO的状态怎么没看到设置啊?
STC的芯片不是很清楚
但我接触过的如果是输出口的话,那不管当时口的电平是多少,读出来都会是程序要求输出的状态

使用特权

评论回复
31
acute1110| | 2010-9-25 09:36 | 只看该作者
我认为在调试阶段你分别写 while(P11==1) 和while(P11==0) 看看他会停在那里,如果还是停不下来,肯能是有波形产生了

使用特权

评论回复
32
lwq030736| | 2010-9-25 15:32 | 只看该作者
29# newjacket
他要的是一直不断执行的死循环,不是死在那里不动的死循环

使用特权

评论回复
33
ElderFox| | 2010-9-25 21:18 | 只看该作者
1# wcsvery
本人觉得你很有可能单片机和继电器用的是同一个电源供电导致的。

使用特权

评论回复
34
ElderFox| | 2010-9-25 21:22 | 只看该作者
还有就是你的端口寄存器在其他函数中被改写了

使用特权

评论回复
35
wcsvery|  楼主 | 2010-9-26 09:01 | 只看该作者
多谢各位兄弟热心的解答~~~问题找出来了并解决了~~~不过换了块板后发现出现了自动复位的新问题~~~命咋那么苦啊~!

使用特权

评论回复
36
zzggigyl| | 2010-9-26 21:09 | 只看该作者
程序有问题,P23,什么的没有定义

使用特权

评论回复
37
entepino| | 2010-9-27 23:00 | 只看该作者
怎么这么多人都看不出问题?问题百出, while(P11==1);是对的,你一直都让单片机循环咧,它能跑出去吗??再说,这叫程序跑飞吗?!

使用特权

评论回复
38
f029| | 2010-9-28 21:24 | 只看该作者
#include <reg52.h>
sbit relay1=P2^0;//控制电机抽气
sbit relay2=P2^3;//控制气压电磁阀放气
sbit P11=P1^1;//气压值电平输出





  P11=1;
  P23=0;
  P20=1;
  while(P11==1);
  P23=1;
  delay(200);
  P20=0;这是什么?

使用特权

评论回复
39
pang3dsa| | 2010-9-29 16:17 | 只看该作者
加软件去抖动试试。while(P11==1); 后面的话句可以这样写

if(P11==1)
{
     delayms(2);
     if((P11==1)
      {
           P23=1;
          delay(200);
          P20=0;
          for(i=0;i<10;i++)delay(65500);
       }
}

使用特权

评论回复
40
hwwyhy| | 2010-9-30 15:22 | 只看该作者
while(P11==1);
能用输出口这样检测等待吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则