打印
[51单片机]

新手问题 请大家帮个忙!!!!!!

[复制链接]
1346|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xdcxdj|  楼主 | 2013-9-16 19:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xdcxdj 于 2013-9-17 19:28 编辑

我是才接触单片机,想用它来控制射沙机,可是编程不太会请大家帮帮忙!!!!谢谢了,大家看看就知道了,就是循环问题
这是写的程序
#include<reg51.h>
sbit qigang_left=P1^0;   //气缸
sbit qigang_right=P1^1;
sbit qigang_up=P1^2;   
sbit qigang_down=P1^3;
sbit qigang_shesha=P1^4;
sbit journey_left=P0^0;      //行程开关
sbit journey_right=P0^1;
sbit journey_up=P0^2;      
sbit journey_down=P0^3;
sbit flag_start=P0^4;    //启动按钮
void t0(void) interrupt 0 using 0   
{
flag_start=1;
}
/*************** 延时***********************/
void delay(unsigned char m)               //延时子程序
         {
           unsigned char i,j,k;           
           m=m*100;
      for(i=m;i>0;i--)            
           for(j=20;j>0;j--)
           for(k=248;k>0;k--);
         }
/******************* 主函数 *********************/
void main()
{
      qigang_left=1;
      qigang_right=1;
      qigang_up=1;
      qigang_down=1;
      qigang_shesha=1;
        IT0=1;
EX0=1;
EA=1;
if(flag_start==0)
{
    while(1)
    {  
  qigang_left=0;    //机械手左移
  while(1)      //左移循环,等待左移的传感器开关
               {  
                    if(journey_left==0)  //左面的传感器开关接通
    {
    qigang_left=1;   //停止左移
           qigang_down=0;    //机械手下降
      while(1)          //下降循环,等待下降的传感器开关
      {
       if(journey_down==0)    //下降的传感器开关接通
       {
        qigang_down=1;    //停止下降
        qigang_shesha=0;     //射沙
        delay(2);       //射沙延时
        qigang_shesha=1; //射沙关
        delay(5); //排气延时
        qigang_up=0; //开始上升
        while(1) //上升循环,等待上升的传感器开关
        {
         if(journey_up==0) //上升的传感器开关接通
          {
          qigang_up=1; //停止上升
          qigang_right=0; //向右移动
          while(1)
          {
           if(journey_right==0) //右面的传感器开关接通
           {
            qigang_right=1; //停止向右
/***************就是这里,一个按钮控制是否跳出不执行下面程序**********/

            qigang_down=0;  //开启下降
                  while(1)          //下降循环,等待下降的传感器开关
                                              {
                                if(journey_down==0)    //下降的传感器开关接通
                               {
                               qigang_down=1;    //停止下降
                               qigang_shesha=0;     //射沙
                               delay(2);       //射沙延时
                               qigang_shesha=1; //射沙关
                               delay(5);   //排气延时
                                      qigang_up=0; //开始上升
                                while(1) //上升循环,等待上升的传感器开关
                                {
                                 if(journey_up==0) //上升的传感器开关接通
                                  {
                                 qigang_up=1; //停止上升  
                                        flag_start=1;
             break;
                    }
                  }
                                 break;
                                 }
                                      }
                                       break;
                                               }
                                                   }
                                                    break;
                                                                                 }
                 }
         break;
                 }
               }
                break;   
                        }
                            }
                                                        break;
                                           }
                                                }
                                               }

DSC036110.JPG (262.02 KB )

流程

流程

相关帖子

沙发
NE5532| | 2013-9-16 21:27 | 只看该作者
楼主遇到什么问题呢??

使用特权

评论回复
板凳
林志财| | 2013-9-16 23:50 | 只看该作者
确实没说遇到什么问题

使用特权

评论回复
地板
xdcxdj|  楼主 | 2013-9-17 19:22 | 只看该作者
就是循环问题
就是一个按钮控制循环一次和不循环直接跳出的问题,

使用特权

评论回复
5
单片机学习123| | 2013-9-23 11:34 | 只看该作者
你while()循环不正确,跳不出循环。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝