打印

求大家帮忙

[复制链接]
1172|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麦才洋|  楼主 | 2013-5-13 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用51单片机写一个程序:假如我按下启动按键就运行每走一步都要检测单片机一个I/O是否是真或假(假如控制13个二极管发光和熄灭)

相关帖子

沙发
NE5532| | 2013-5-13 19:32 | 只看该作者
楼主觉得这段话通顺么?描述清楚了么?自然语言都描述不出来的东西,程序更写不出来。

使用特权

评论回复
板凳
Vincent_Mikey| | 2013-5-13 19:40 | 只看该作者

使用特权

评论回复
地板
qx19921014| | 2013-5-13 20:02 | 只看该作者

使用特权

评论回复
5
zdl522| | 2013-5-13 20:20 | 只看该作者
还是重新描述一下吧,不明白要问的问题

使用特权

评论回复
6
麦才洋|  楼主 | 2013-5-15 10:02 | 只看该作者
1、中间停止复位。
2、机械手左移。
3、机械手下降。
4、吸盘开启取料。
5、机械手上升。
6、机械手右移至工作台(2倍距离)。
7、机械手下降。
8、机械手释放物件。
9、机械手上升。
10、机械手左移至中间工作台位复位。

使用特权

评论回复
7
麦才洋|  楼主 | 2013-5-22 10:15 | 只看该作者
请大家帮忙看看我写的这个程序有什么问题



#include<reg51.h>  
#define uchar unsigned char  
/***************------
宏定义
------*******************/
  
  sbit qigang_left=P0^0;    //气缸
  sbit qigang_right=P0^1;   //气缸
  sbit qigang_up=P0^2;      //气缸
  sbit qigang_down=P0^3;    //气缸
  sbit qigang_behind=P0^4;  //气缸
  sbit qigang_front=P0^5;   //气缸
  sbit qigang_grasp=P0^6;   //气缸
  sbit qigang_loose=P0^7;   //气缸
   
  sbit journey_left=P1^0;   //传感器开关
  sbit journey_right=P1^1;  //传感器开关
  sbit journey_up=P1^2;     //传感器开关
  sbit journey_down=P1^3;   //传感器开关
  sbit journey_behind=P1^4; //传感器开关
  sbit journey_front=P1^5;  //传感器开关

  sbit flag_start=P3^2; //启动按钮


/**************************
           中断

****************************/
void t0(void) interrupt 0 using 0 //按键按下触发中断服务程序

{

//flag_start=1;
}


/***********************
       延时函数
S***********************/  
void delay(unsigned char m) //延时子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_front=1;

qigang_behind=1;

qigang_up=1;
  
qigang_down=1;

qigang_grasp=1;

qigang_loose=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_front=0; //机械手前移

      while(1) //前移死循环,等待前面的传感器开关
        {  
     if(journey_front==0) //前面的传感器开关接通
    {
  qigang_front=1; //停止前移

  qigang_down=0; //机械手下降

    while(1) //下降死循环,等待下面的传感器开关
    {
     if(journey_down==0) //下面的传感器开关接通
     {
    qigang_down=1; //停止下降

   qigang_grasp=0; //机械手抓取

   delay(1); //抓取延时

   qigang_up=1; //开始上升

     while(1) //上升死循环,等待上面的传感器开关
     {
     if(journey_up==0) //上面的传感器开关接通
    {
   qigang_up=1; //停止上升

   qigang_right=0;//向右移动
     while(1)
     {
      if(journey_right==0)
    {  
    qigang_right=1;
      qigang_behind=0;
      while(1)
      {
   if(journey_behind==0)
   {
  qigang_behind=1;
    qigang_down=0;
    while(1)
    {
   if(journey_down==0)
  {
  qigang_down=1;
    qigang_loose=0;
      delay(1);
        qigang_up=1;  
    while(1)
   {
   if(journey_up==0)  
  {  
     qigang_up=1;
     break;  
     }
   }  
     break;  
     }
   }
    break;
    }
   }
    break;
    }
  }
    break;
    }
  }  
    break;  
    }
   }  
     break;  
    }  
   }  
   break;
    }  
   }
  }  
}
}

使用特权

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

本版积分规则

10

主题

25

帖子

0

粉丝