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

[复制链接]
8065|42
xwj 发表于 2010-9-24 12:56 | 显示全部楼层
LS,你才是想错了的那个。

while(P11==1);
应该写成
while(P11);
newjacket 发表于 2010-9-24 13:39 | 显示全部楼层
在这里两者的区别是?
jiabin1024 发表于 2010-9-24 14:58 | 显示全部楼层
能不能将“#include <reg52.h>”贴出来看看,可能出在这里面。
jiabin1024 发表于 2010-9-24 15:00 | 显示全部楼层
在kei 的头文件里根本没有定义P11,不知道你是怎么编译通过的?
jiabin1024 发表于 2010-9-24 15:03 | 显示全部楼层
while((P1&0x02)==1);
这样应该可以。
lyn3210 发表于 2010-9-24 16:42 | 显示全部楼层
查一下硬件吧?
komad 发表于 2010-9-24 21:22 | 显示全部楼层
应该是有低电平的干扰
lwq030736 发表于 2010-9-24 22:14 | 显示全部楼层
执行到while(p11==1);因为这时候P11=1,这句的时候会一直停留在这
跟while(1);是一个效果的。你把“;”去掉加上大括号,把循环体写进去就好了
不信你可以试试
newjacket 发表于 2010-9-25 08:52 | 显示全部楼层
楼主要的就是死循环……
rockkane7 发表于 2010-9-25 09:28 | 显示全部楼层
IO的状态怎么没看到设置啊?
STC的芯片不是很清楚
但我接触过的如果是输出口的话,那不管当时口的电平是多少,读出来都会是程序要求输出的状态
acute1110 发表于 2010-9-25 09:36 | 显示全部楼层
我认为在调试阶段你分别写 while(P11==1) 和while(P11==0) 看看他会停在那里,如果还是停不下来,肯能是有波形产生了
lwq030736 发表于 2010-9-25 15:32 | 显示全部楼层
29# newjacket
他要的是一直不断执行的死循环,不是死在那里不动的死循环
ElderFox 发表于 2010-9-25 21:18 | 显示全部楼层
1# wcsvery
本人觉得你很有可能单片机和继电器用的是同一个电源供电导致的。
ElderFox 发表于 2010-9-25 21:22 | 显示全部楼层
还有就是你的端口寄存器在其他函数中被改写了
 楼主| wcsvery 发表于 2010-9-26 09:01 | 显示全部楼层
多谢各位兄弟热心的解答~~~问题找出来了并解决了~~~不过换了块板后发现出现了自动复位的新问题~~~命咋那么苦啊~!
zzggigyl 发表于 2010-9-26 21:09 | 显示全部楼层
程序有问题,P23,什么的没有定义
entepino 发表于 2010-9-27 23:00 | 显示全部楼层
怎么这么多人都看不出问题?问题百出, while(P11==1);是对的,你一直都让单片机循环咧,它能跑出去吗??再说,这叫程序跑飞吗?!
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;这是什么?

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);
       }
}
hwwyhy 发表于 2010-9-30 15:22 | 显示全部楼层
while(P11==1);
能用输出口这样检测等待吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部