河南工业大学吧 关注:540,363贴子:22,693,702
  • 2回复贴,共1

电气电子自动化等专业学习交流

取消只看楼主收藏回复

纯技术交流平台


1楼2016-07-04 14:38回复
    想共同学习的同学加Q群574826496,互相进步


    2楼2016-07-04 14:39
    回复
      #include <STC15F2K60S2.H>
      #include <intrins.h>
      unsigned char fa,fb,fc;
      unsigned long value;
      bit bdata xa;
      bit bdata xb;
      bit bdata xc;
      unsigned int xdata cnt,cntc;
      unsigned int xdata cntt;
      unsigned int xdata cnt_datas,cnt_datal;
      #define FOSE 0x1200;
      void initialization()
      {
      P1M0=0x3c;
      P1M1=0x00;
      P3M0=0X0b;
      P3M1=0X00;
      P5M0=0X00;
      P5M1=0X00;
      }
      void T0initialization()
      {
      AUXR &= 0x7F;//定时器时钟12T模式
      TMOD &= 0xF0;//设置定时器模式
      TMOD |= 0x01;//设置定时器模式
      TL0 = 0x66;//设置定时初值
      TH0 = 0xFC;//设置定时初值
      TF0 = 0;//清除TF0标志
      TR0 = 1;//定时器0开始计时
      ET0=1;
      }
      /* void PCAinitialization()
      {
      CCON = 0; //初?化PCA控制寄存器
      CL = 0; //??PCA寄存器
      CH = 0;
      CMOD = 0x00;
      value=FOSE;
      CCAP0L = value;
      CCAP0H = value>>8;
      //value+=FOSE;
      CCAPM0 = 0x49; //PCA模块0为?6?定时器模式
      CR = 1;
      cntt = 0;
      }*/
      void delay(int ms)
      {
      int i,j;
      for(i=0;i<100;i++)
      for(j=0;j<ms;j++)
      _nop_();
      }
      void IOchuli()
      {
      if(P34==0&&P32==1) //P34脚踏
      {
      delay(4); //改括号里面的值是脚踏开关的延时时间值,4表示延时4毫秒 (7脚=1)
      if(P34==0&&P32==1) fa=0x01;
      }
      if(P35==1)//P35接近
      {
      delay(2); //改括号里面的值是接近开关的延时时间值,2表示延时2毫秒
      if(P35==0) fa=0x02;
      }
      if(P34==0&&P32==0)
      {
      delay(4); //改括号里面的值是脚踏开关的延时时间值,4表示延时4毫秒 (7脚=0)
      if(P34==0&&P32==0) fa=0x08;
      }
      }
      void main()
      {
      initialization();
      T0initialization();
      //PCAinitialization();
      EA=1;
      P30=1; //电磁阀
      P31=1;//刹车
      P33=1;//离合
      xc=1;
      while(1)
      {
      IOchuli();
      switch(fa)
      {
      case 0x01:
      P31=1;
      P30=0;
      P33=0;
      break;
      case 0x02:
      P30=1;
      P33=1;
      P31=0;
      xb=0;
      cntt=0;
      xa=1;
      break;
      case 0x04:
      P31=1;
      xa=0;
      cnt=0;
      break;
      case 0x08:
      P31=1;
      P30=0;
      xb=1;
      break;
      default:break;
      }
      }
      }
      void T0Uart() interrupt 1
      {
      TL0 = 0x66;//设置定时初值
      TH0 = 0xFC;//设置定时初值
      if(xa==1)
      {
      cnt++;
      if(cnt==10)
      {
      cnt=0;
      cnt_datas++;
      }
      if(cnt_datas>=150) //改括号里面的值,2500表示刹车时间2500毫秒
      {
      fa=0x04;
      xa=0;
      cnt=0;
      cnt_datas=0;
      }
      }
      if(xb==1)
      {
      cntt++;
      if(cntt>=10)
      {
      cntt=0;
      cnt_datal++;
      }
      if(cnt_datal>=200)//改括号里面的值,200表示离合2000毫秒后动作,单位10ms
      {
      P33=0;
      xb=0;
      cntt=0;
      cnt_datal=0;
      }
      }
      else cntt=0;
      }


      6楼2016-07-04 17:09
      回复