找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2089|回复: 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

电路图

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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。

学到了,谢谢
回复

使用道具 举报

5#
ID:543653 发表于 2019-5-21 20:35 | 只看该作者
确实for循环,条件表达式错误,二楼的分析很到位!
回复

使用道具 举报

6#
ID:400380 发表于 2019-5-23 09:13 | 只看该作者
循环进不去,就直接退出了?
回复

使用道具 举报

7#
ID:546703 发表于 2019-5-25 15:59 | 只看该作者
好简洁呀
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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