标题: 51单片机利用红外开关控制电机停转的程序的问题 [打印本页]

作者: yanxiaodong    时间: 2019-5-18 19:46
标题: 51单片机利用红外开关控制电机停转的程序的问题
如下是我的程序,控制电机停转的程序正常执行,但是延迟两秒的程序不执行。


#include<reg52.h>
#define uint unsigned int
sbit dianji=P0^1;//电机控制端。
sbit kaiguan=P0^0;//红外开关控制端。
void delay(uint xms)//延迟函数
{
   uint i,j;
    for(i=xms;i<0;i--)
     for(j=110;j<0;j--);
}
   void main()
{
   while(1)
    {
   if(kaiguan==0)//红外开关打开
                {
                   delay(2000);//延迟两秒钟
     while(!kaiguan)//
       {
                    dianji=1;//电机启动
                       }
        }
   if(kaiguan==1)//红外开关关闭
                     {
        ianji=0;//电机关闭               
                     }
    }       
}

Protel Schematic.pdf

67.56 KB, 下载次数: 26

电路图


作者: 幻剑心    时间: 2019-5-19 03:08
for(i=xms;i<0;i--)   i=2000,不小于0,跳出循环。
     for(j=110;j<0;j--); j=110,非小于0,跳出循环。 没有循环。所以你的延时不管多大,都没用。
应该为:
for(i=xms;i>0;i--)
     for(j=110;j>0;j--); 要大于0。   
作者: yanxiaodong    时间: 2019-5-19 16:07
幻剑心 发表于 2019-5-19 03:08
for(i=xms;i0;j--); 要大于0。

多谢兄弟
作者: 1647023886    时间: 2019-5-21 17:46
幻剑心 发表于 2019-5-19 03:08
for(i=xms;i0;j--); 要大于0。

学到了,谢谢
作者: tdl6    时间: 2019-5-21 20:35
确实for循环,条件表达式错误,二楼的分析很到位!
作者: 狮子歌歌    时间: 2019-5-23 09:13
循环进不去,就直接退出了?
作者: zztwxx    时间: 2019-5-25 15:59
好简洁呀




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1