打印

求大家帮忙看看这个程序要怎么改

[复制链接]
1061|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麦才洋|  楼主 | 2013-5-28 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大家帮忙看看这个程序要怎么改才不会提示错误

#include<reg51.h>  
#define uchar unsigned char
#define uint unsigned int

/************************宏定义*************************/

  sbit LED1=P0^0;   //平移气缸左移
  sbit LED2=P0^1;   //升降气缸下降
  sbit LED3=P0^2;   //平移气缸右移
  sbit LED4=P0^3;   //升降气缸下降
  sbit LED5=P0^4;   //平移气缸复位
  sbit LED6=P0^5;   //下压气缸下压
  sbit LED7=P0^6;   //回收电机启动
  sbit LED8=P0^7;   //吸气头

  sbit KEY1=P1^0;   //平移气缸左移传感器开关
  sbit KEY2=P1^1;    //升降气缸下降传感器开关
  sbit KEY3=P1^2;    //升降气缸上升传感器开关
  sbit KEY4=P1^3;    //平移气缸右移传感器开关  
  sbit KEY5=P1^4;    //平移气缸复位传感器开关  
  sbit KEY6=P1^5;    //下压气缸下压传感器开关
  sbit KEY7=P1^6;    //下压气缸上升传感器开关


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


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

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

{

flag_start=1;
}     

//================延时1s延时子程序(12MHZ)============
void delay1s(void)
                {
              char h,i,j,k;
              for(h=20;h>0;h--)   //延时
              for(i=4;i>0;i--)   //延时
              for(j=116;j>0;j--)  //延时
              for(k=100;k>0;k--); //延时
                }

/*******************  初始化主函数 *********************/
      
void main()
{
   LED1=1;   //平移气缸左移
   LED2=1;   //升降气缸下降
   LED3=1;   //平移气缸右移
   LED4=1;   //升降气缸下降
   LED5=1;   //平移气缸复位
   LED6=1;   //下压气缸下压
   LED7=1;   //回收电机启动
   LED8=1;   //吸气头


/***************** 中断初始化******************/
   
     IT0=1;                  // 下降沿触发
     EX0=1;  
     EA=1;
     if(flag_start==0)  
      {
       while(1)
         {

      LED7=0;         //电机启动
    while(1)          //运行
      {
     if(KEY6==0)      //上面的传感器开关接通
   {
      delay1s();      //延时
       LED7=1;        //电机关闭

      LED1=0;        //平移气缸左移
    while(1)        //左移死循环,等待下面的传感器开关
      {
     if(KEY1==0)    //左面的传感器开关接通
   {
       LED1=1;      //停止左移

    LED8=0;          //吸气头开启
    while(1)         //开启死循环,等待下面的传感器开关
    {
     if(KEY3==0)     //下面的传感器开关接通
     {
         LED8=0;      //等待
      
      LED2=0;         //升降气缸下降
      while(1)        //下降死循环,等待前面的传感器开关
        {  
     if(KEY3==0)      //下面的传感器开关接通
    {
        LED2=0;       //等待
      
     LED2=0;          //升降气缸上升
    while(1)          //上升死循环,等待上面的传感器开关
    {
     if(KEY2==0)      //上面的传感器开关接通
     {
       LED2=1;        //停止上升

    LED3=0;          //平移气缸右移
    while(1)         //右移死循环,等待下面的传感器开关
      {
     if(KEY4==0)     //右面的传感器开关接通
   {
       LED3=1;       //停止右移
     //delay1s();    //延时
   
   LED4=0;           //升降气缸下降
      while(1)       //下降死循环,等待前面的传感器开关
        {  
     if(KEY2==0)     //下面的传感器开关接通
    {
     LED4=0;         //等待

      LED8=0;        //吸气头关闭
    while(1)         //开启死循环,等待下面的传感器开关
    {
     if(KEY3==0)     //下面的传感器开关接通
     {
       LED8=1;        //关闭吸气
       LED4=1;        //停止下降
       // delay1s();  //延时
   
    LED4=0;           //升降气缸上升
    while(1)          //上升死循环,等待上面的传感器开关
      {
     if(KEY2==0)      //上面的传感器开关接通
   {
       LED4=1;        //停止上升
     //delay1s();     //延时
   
   LED5=0;            //平移气缸复位
    while(1)          //复位死循环,等待下面的传感器开关
      {
     if(KEY5==0)      //中间的传感器开关接通
   {
       LED5=1;         //停止左移
      // delay1s();    //延时

     LED6=0;           //下压气缸
    while(1)           //下压死循环,等待下面的传感器开关
      {
     if(KEY6==0)       //下面的传感器开关接通
   {
     LED6=0;           //等待

       LED6=0;           //下压气缸上升
    while(1)           //上升死循环,等待下面的传感器开关
      {
     if(KEY7==0)       //上面的传感器开关接通
   {
       LED6=1;         //停止上升
  // delay1s();        //延时

     LED1=0;          //平移气缸左移
    while(1)           //左移死循环,等待下面的传感器开关
      {
     if(KEY1==0)       //左面的传感器开关接通
   {
       LED1=1;         //停止左移

        LED2=0;         //升降气缸下降
      while(1)        //下降死循环,等待前面的传感器开关
        {  
     if(KEY3==0)      //下面的传感器开关接通
    {
        LED2=0;       //等待

    LED4=0;           //升降气缸上升
    while(1)          //上升死循环,等待上面的传感器开关
      {
     if(KEY2==0)      //上面的传感器开关接通
   {
       LED4=1;        //停止上升
     //delay1s();     //延时

     LED5=0;            //平移气缸复位
    while(1)          //复位死循环,等待下面的传感器开关
      {
     if(KEY5==0)      //中间的传感器开关接通
   {
       LED5=1;         //停止左移

    /*IT0=1;           //停止上升 */        
              
     break;  //1
     }
   }  
       break;  //2
     }
   }  
     break;  //3
     }
   }  
     break;  //4
     }
   }  
     break; //5
     }
   }  
     break;  //6
     }
   }  
     break;  //7
     }
   }  
     break;  //8
     }
   }  
     break;  //9
     }
   }  
     break;  //10
     }
    }
  break;  //11
     }
    }
     break;  //12
     }
    }
     break;  //13
     }
    }
     break;  //14
     }
    }
     break;  //15
     }
    }
     break;  //16
     }
    }
     break;  //17
     }
    }
   }




   
   

相关帖子

沙发
梦幻FLY| | 2013-5-28 20:09 | 只看该作者
程序嵌套太多了 所以报错误
while(1)
       {
                  LED7=0;         //电机启动
                 while(KEY6!=0);      //上面的传感器开关接通
                  delay1s();      //延时
                   LED7=1;        //电机关闭
                  LED1=0;        //平移气缸左移
                 while(KEY1!=0);    //左面的传感器开关接通
                  LED1=1;      //停止左移
                LED8=0;          //吸气头开启
                 while(KEY3!=0);     //下面的传感器开关接通
            LED8=0;      //等待
                  LED2=0;         //升降气缸下降
你的意思是不是 就是顺序一个一个按下 。一步一步往下执行。

使用特权

评论回复
板凳
anywn_xue| | 2013-5-28 21:53 | 只看该作者
排版着急!!

使用特权

评论回复
地板
麦才洋|  楼主 | 2013-5-29 15:13 | 只看该作者
是顺序一个一个按下 。一步一步往下执行。

使用特权

评论回复
5
麦才洋|  楼主 | 2013-5-29 15:19 | 只看该作者
我是新手不太清楚  能写个例子吗?

使用特权

评论回复
6
zwp0822| | 2013-5-29 15:58 | 只看该作者
看到一半就看不下去了
注意缩进啊,楼主!

使用特权

评论回复
7
麦才洋|  楼主 | 2013-5-30 07:56 | 只看该作者
缩进什么意思

使用特权

评论回复
8
shiba1986| | 2013-5-30 08:46 | 只看该作者
建议用 case

使用特权

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

本版积分规则

10

主题

25

帖子

0

粉丝