| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 557 人关注过本帖
标题:51单片机C语言编程的几个问题?
取消只看楼主 加入收藏
风de影子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
51单片机C语言编程的几个问题?
以下是我公司的自动化机器的单片机编程,有几个问题求指教!
//P1作为读气缸感应器信号,01(直线轴承气缸)02(前面三轴气缸)04(后面直线轴承气缸)
//08(后面三轴气缸)10(产品信号)40(良品信号)80(不良品信号)
#include<reg51.h>
  sbit P0_3=P0^3;//皮带控制
  sbit P2_0=P2^0;//前面三轴气缸   
  sbit P2_1=P2^1;//夹嘴气缸   
  sbit P2_2=P2^2;//直线轴承气缸
  sbit P2_3=P2^3;//后面三轴气缸   
  sbit P2_4=P2^4;//后面夹嘴气缸        
  sbit P2_5=P2^5;//后面直线轴承气缸
  sbit P2_6=P2^6;//阻挡气缸
  sbit P2_7=P2^7;//启动信号
  
  
void Delay(unsigned char m)
{     
   unsigned char r;
   for(r=m;r>0;r--)
   {
        TH0=0X3c;      //50ms      
        TL0=0Xb0;
        TR0=1;
        do{}while(!TF0);
        TF0=!TF0;               
           TR0=0;
   }
}  
   

void main(void)
{                        
    unsigned char a=0;//0-255
    TMOD=0X01;  
    P0=0X0F;
    P1=0X0F;
    P2=0X00;
       P3=0X00;//不作任何控制
    while(1)
   {
        if((P0&0X01)!=0X01)
        {
             for(a=200;a>0;a--);//加延时防误测
                if((P0&0X01)!=0X01)
             {
                  
                  do     
                  {
                         P2_0=1;//前面三轴气缸下
                   }while((P1&0X02)==0X02); //前面三轴气缸下到位
                  
                  P2_1=1;     //夹嘴气缸
                    Delay(5);
                    P2_0=0;     //前面三轴气缸上
                    Delay(5);
                  do     
                  {     
                       P2_2=1;//直线轴承气缸
                     }while((P1&0X01)==0X01); //直线轴承气缸到位
                  P0_3=0;      //皮带停止
                  do     
                  {
                         P2_0=1;//前面三轴气缸下
                   }while((P1&0X02)==0X02); //前面三轴气缸下到位
                  P2_1=0;     //夹嘴气缸松
                  Delay(5);
                  P2_0=0;     //前面三轴气缸上
                   if((P0&0X02)!=0x02)//不良品信号
                  {      
                       P2_6=1;    //阻挡气缸
                       P0_3=1;      //皮带动
                       Delay(5);
                       P2_2=0;    //直线轴承气缸回
                       P2_7=1;    //启动信号
                       Delay(20); //取物与延时的关系
                       P2_7=0;      //启动信号停
                       do     
                       {
                              P2_3=1;//后面三轴气缸下
                        }while((P1&0X08)==0X08); //后面三轴气缸下到位  
                          P2_4=1;    //夹嘴气缸
                          Delay(5);
                          P2_3=0;    //后面三轴气缸上
                          Delay(5);
                           P2_6=0;    //阻挡气缸回
                        do     
                        {     
                             P2_5=1;//直线轴承气缸
                           }while((P1&0X04)==0X04); //直线轴承气缸到位
                        do     
                        {
                               P2_3=1;//后面三轴气缸下
                         }while((P1&0X08)==0X08); //后面三轴气缸下到位
                        P2_4=0;    //夹嘴气缸松
                        Delay(5);
                        P2_3=0;       //后面三轴气缸上
                        P2_5=0;    //直线轴承气缸回                    
                   }  
                   else               
                   {
                        Delay(5);
                          P0_3=1;       //皮带动
                        P2_2=0;    //直线轴承气缸回
                        P2_7=1;    //启动信号
                        Delay(10);
                          P2_7=0;       //启动信号停
                       
                   }
                  for(;;) //用brdak仅能跳出第一个死循环,而不能跳出第二个。与if嵌套层数无关
                  {   
                       if((P0&0X06)!=0x06)
                       {  
                            for(a=200;a>0;a--);//加延时防误测   
                               if((P0&0X06)!=0x06){Delay(3); break;}//启动测试后等待测试完信号,加延时让弹片弹开。
                           }
                  
                   }   
              
                }
        }
    }
}
其中的IF语看不懂,求大神指教!
While语句的格式是什么?
搜索更多相关主题的帖子: C语言 include 直线轴承 气缸 
2012-09-17 19:12
风de影子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-17
收藏
得分:0 
回复 2楼 embed_xuel
是呀,因为最近搞创新,所以我需要学习C语言一些语句,还有了解这个一个程序的意思,以便我将来自己要编写!
2012-09-18 13:38
快速回复:51单片机C语言编程的几个问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032402 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved