找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1777|回复: 6
收起左侧

51单片机利用红外开关控制电机停转的程序的问题

[复制链接]
回帖奖励 20 黑币 回复本帖可获得 20 黑币奖励! 每人限 1 次
ID:419921 发表于 2019-5-18 19:46 | 显示全部楼层 |阅读模式
如下是我的程序,控制电机停转的程序正常执行,但是延迟两秒的程序不执行。


#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

电路图

回复

使用道具 举报

ID:511890 发表于 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。   
回复

使用道具 举报

ID:419921 发表于 2019-5-19 16:07 | 显示全部楼层
幻剑心 发表于 2019-5-19 03:08
for(i=xms;i0;j--); 要大于0。

多谢兄弟
回复

使用道具 举报

ID:543975 发表于 2019-5-21 17:46 | 显示全部楼层
幻剑心 发表于 2019-5-19 03:08
for(i=xms;i0;j--); 要大于0。

学到了,谢谢
回复

使用道具 举报

ID:543653 发表于 2019-5-21 20:35 | 显示全部楼层
确实for循环,条件表达式错误,二楼的分析很到位!
回复

使用道具 举报

ID:400380 发表于 2019-5-23 09:13 | 显示全部楼层
循环进不去,就直接退出了?
回复

使用道具 举报

ID:546703 发表于 2019-5-25 15:59 | 显示全部楼层
好简洁呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表