河南工业大学吧 关注:540,361贴子:22,693,432
  • 3回复贴,共1

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

只看楼主收藏回复

纯技术交流平台


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


    2楼2016-07-04 14:39
    回复
      像车轮那样跑的更远。威:❤gÖÖdshopping88


      来自iPhone客户端4楼2016-07-04 14:40
      回复
        #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
        回复