打印

帮我看看能不能运行。

[复制链接]
839|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaojc123|  楼主 | 2015-1-14 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, AD, AN, se, TI
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit senddata=P2^0;
uchar Tdata[40]={0};
uchar Vdata[40]={0};
float Adata1=0,Adata2=0,Adata3=0;
int k=0;
uint i=0,a,b,c,d,senddata1=0,senddata2=0;
uchar count=0,jiasu=0,jiansu=0,yunsu=0,time=0;
void Init_int0()
{
        EX0=1;
        IT0=1;
}
void Init_Time0()
{
        TMOD=0X11;
        TH0=0X15;
        TL0=0XA0;
        TH1=0X3C;
        TL1=0XB0;
        ET0=1;
}
void Dealdata(uchar M)//数据处理
{
        uchar temp;
        float Atemp;
        temp=M-1;
        a=Tdata[temp-3]*0.06;
        b=Tdata[temp-2]*0.06;
        c=Tdata[temp-1]*0.06;
        d=Tdata[temp]*0.06;
        if((a>b)&(a>c)&(a>d))
        {
                Vdata[temp-3]=25/a;
                Vdata[temp-2]=2.3/b;
                Vdata[temp-1]=6.4/c;
                Vdata[temp]=2.3/d;
                Adata1=(Vdata[temp-3]^2-Vdata[temp-2]^2)/27.3;
                Adata2=(Vdata[temp-2]^2-Vdata[temp-1]^2)/8.7;
                Adata3=(Vdata[temp-1]^2-Vdata[temp]^2)/8.7;
                Atemp=(Adata1+Adata2+Adata3)/3;
                if(Atemp>=0.1)
                {jiasu++;}
                if(-0.1>=Atemp)
                {jiansu++;}
                  if(Atemp>-0.1&Atemp<0.1)
                {yunsu++;}
        }
        if((b>a)&(b>c)&(b>d))
        {
                Vdata[temp-3]=2.3/a;
                Vdata[temp-2]=25/b;
                Vdata[temp-1]=2.3/c;
                Vdata[temp]=6.4/d;
                Adata1=(Vdata[temp-3]^2-Vdata[temp-2]^2)/27.3;
                Adata2=(Vdata[temp-2]^2-Vdata[temp-1]^2)/27.3;
                Adata3=(Vdata[temp-1]^2-Vdata[temp]^2)/8.7;
                Atemp=(Adata1+Adata2+Adata3)/3;
                if(Atemp>=0.1)
                {jiasu++;}
                if(-0.1>=Atemp)
                {jiansu++;}
                  if(-0.1<Atemp&Atemp<0.1)
                {yunsu++;}
        }
        if((c>a)&(c>b)&(c>d))
        {
                Vdata[temp-3]=6.4/a;
                Vdata[temp-2]=2.3/b;
                Vdata[temp-1]=25/c;
                Vdata[temp]=2.3/d;
                Adata1=(Vdata[temp-3]^2-Vdata[temp-2]^2)/8.7;
                Adata2=(Vdata[temp-2]^2-Vdata[temp-1]^2)/27.5;
                Adata3=(Vdata[temp-1]^2-Vdata[temp]^2)/27.5;
                Atemp=(Adata1+Adata2+Adata3)/3;
                if(Atemp>=0.1)
                {jiasu++;}
                if(-0.1>=Atemp)
                {jiansu++;}
                  if(-0.1<Atemp&Atemp<0.1)
                {yunsu++;}
        }
        if((d>a)&(d>b)&(d>c))
        {
                Vdata[temp-3]=2.3/a;
                Vdata[temp-2]=6.4/b;
                Vdata[temp-1]=2.3/c;
                Vdata[temp]=25/d;
                Adata1=(Vdata[temp-3]^2-Vdata[temp-2]^2)/8.7;
                Adata2=(Vdata[temp-2]^2-Vdata[temp-1]^2)/8.7;
                Adata3=(Vdata[temp-1]^2-Vdata[temp]^2)/27.5;
                Atemp=(Adata1+Adata2+Adata3)/3;
                if(Atemp>=0.1)
                {jiasu++;}
                if(-0.1>=Atemp)
                {jiansu++;}
                  if(-0.1<Atemp&Atemp<0.1)
                {yunsu++;}
        }
}void main()
{
  Init_int0();
  Init_Time0();
  EA=1;
  while(count!=0)
  {
    if(count%4==0) //数据处理
         {
          Dealdata(count);
         }
    if(count<15&time>500) //车头,数据清零
         {
            for(k=0;k<40;k++)
                {Tdata[k]=0;}
                  for(k=0;k<40;k++)
                {Vdata[k]=0;}
                time=0;
                count=0;
                i=0;
                jiasu=0;jiansu=0;yunsu=0;
                 Init_int0();
                 Init_Time0();
         }
         if((jiasu>=4|jiansu>=4)&time>500)//停车,发车
         {
                 EX0=0;
                TR0=0;
                ET1=1;
                TR1=1;
                while(senddata2==20)
                {
                        ET1=0;
                        TR1=0;
                    for(k=0;k<40;k++)
                        {Tdata[k]=0;}
                          for(k=0;k<40;k++)
                        {Vdata[k]=0;}
                        time=0;
                        count=0;
                        i=0;
                        jiasu=0;jiansu=0;yunsu=0;
                        senddata1=0;senddata2=0;
                        Init_int0();
                          Init_Time0();
                }
         }
  }
}
void Exte0() interrupt 0
{
        count++;
        if(count==1)//开启计时器
        {
                TR0=1;
        }
        else if(count==40) //记满四十个数据停止
        {
                TR0=0;
                EA=0;
        }
        else //将计时器中的数据保存到缓存数组中
        {
                TR0=0;
                Tdata[i]=time;
                i++;
                TH0=0X15;
                TL0=0XA0;
                time=0;
                TR0=1;
        }
}
void Time0() interrupt 1 //累加计时
{
        time++;
        TH0=0X15;
        TL0=0XA0;
        if(time>=500)
        {
                EX0=0;
                TR0=0;
        }
}
void Time1() interrupt 3 //累加计时
{
        senddata1++;
        if(senddata1==5)
        {
                senddata=~senddata;
                senddata2++;
        }
}

相关帖子

沙发
ayb_ice| | 2015-1-14 17:22 | 只看该作者
"if((d>a)&(d>b)&(d>c))"
if((jiasu>=4|jiansu>=4)&time>500)

应该是&&, ||

使用特权

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

本版积分规则

19

主题

35

帖子

1

粉丝