求助各位编程高手

大神帮忙看看这段代码
是哪里的问题,谢谢!
#define nop nop()
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#include<stc15f104e.h>
#include<intrins.h>
#include<absacc.h>
//#include<erjinzhi.h>
//stc15f104e ?????12MHz
sbit onoffcheck=P3^5; //?????,??????
sbit can_l=P3^4; //????,?rx??
sbit acc=P3^0; //??
sbit led=P3^1; //??
uint code cancode[][4][8]={
//?????????
//?id,?????,4?????4??0,crc??,can??
//???????4????,crc????,??????????????,
//can????????100k,125k,500k,
{ //5gg 035 185 ???7
{0x5f0,4,0xe4,0xe4,0x00,0x00,0x1efd,500},//??
{0x5f0,4,0x00,0x00,0x00,0x00,0x0391},//??
{0x3c0,4,0xa0,0xa0,0x33,0x33,0x1ceb},//ACC_ON
{0x3c0,4,0x00,0x00,0x00,0x00,0x0190}//ACC_OFF
},
{ //34d 035 185
{0x470,4,0x00,0x00,0x47,0x00,0x3d5a,500},//??
{0x470,4,0x00,0x00,0x00,0x00,0x769f},//??
{0x570,4,0x03,0x00,0x00,0x00,0x0c63},//ACC_ON
{0x570,4,0x00,0x00,0x00,0x00,0x2f6b}//ACC_OFF
},
{ //rcd300+
{0x635,4,0x60,0x60,0x00,0x00,0x34bb,100},//??
{0x635,4,0x00,0x00,0x00,0x00,0x25dd},//??
{0x271,4,0x87,0x00,0x00,0x00,0x4d9f},//ACC_ON
{0x271,4,0x00,0x00,0x00,0x00,0x2683}//ACC_OFF
},
};
#define part (sizeof(cancode)/4/8/2) //???4?8??2??
#define buflen 80
uchar canpart;
void delay(uint t)
{
uchar i,j;
for(;t;t--)
for(i=220;i;i--)
for(j=12;j;j--);
}
/*
uint crccale(uchar bitbuf,uchar len)
{
uint crcreg,nextbit; //crc??
// bit crcnext;
uchar i=0;
crcreg=0;
while(i<len)
{
nextbit=((uint)(bitbuf[i++]))<<14;
crcreg=nextbit^crcreg;
crcreg<<=1;
if(crcreg&0x8000)crcreg^=0x4599;
}
return (crcreg&0x7fff);
} */
void sendcan(uint canid,uchar num,uchar dat1,uchar dat2,uchar dat3,uchar dat4,uint speed)
{
uint cancrc;
uchar i,j;
uchar idata loadbuf[buflen];
uint nextbit;
if((num==0)||(num>8))return;
loadbuf[0]=num;
i=1;
canid<<=5;
for(j=11;j;j--)//id
{
if(canid&0x8000)loadbuf[i++]=1;
else loadbuf[i++]=0;
canid<<=1;
}
loadbuf[i++]=0; //?????
loadbuf[i++]=0; //????
loadbuf[i++]=0; //???
num<<=4;
for(j=4;j;j--)//????
{
if(num&0x80)loadbuf[i++]=1;
else loadbuf[i++]=0;
num<<=1;
}
num=loadbuf[0]-1;
for(j=8;j;j--)//??1
{
if(dat1&0x80)loadbuf[i++]=1;
else loadbuf[i++]=0;
dat1<<=1;
}
if(num--)
{
for(j=8;j;j--)//??2
{
if(dat2&0x80)loadbuf[i++]=1;
else loadbuf[i++]=0;
dat2<<=1;
}
}
if(num--)
{
for(j=8;j;j--)//??3
{
if(dat3&0x80)loadbuf[i++]=1;
else loadbuf[i++]=0;
dat3<<=1;
}
}
if(num)
{
for(j=8;j;j--)//??4
{
if(dat4&0x80)loadbuf[i++]=1;
else loadbuf[i++]=0;
dat4<<=1;
}
}
num=loadbuf[0];
loadbuf[0]=0;
cancrc=0;
j=0;
while(j<(num*8+19))
{
nextbit=((uint)(loadbuf[j++]))<<14;
cancrc=nextbit^cancrc;
cancrc<<=1;
if(cancrc&0x8000)cancrc^=0x4599;
}
cancrc&=0x7fff;
cancrc<<=1;
for(j=15;j;j--)//crc
{
if(cancrc&0x8000)loadbuf[i++]=1;
else loadbuf[i++]=0;
cancrc<<=1;
}
loadbuf[i++]=1;
loadbuf[i++]=0;
loadbuf[i++]=1; //
j=buflen-1; //j????
for(;i;)
loadbuf[j--]=loadbuf[--i];//????
num=1;
i=loadbuf[0]=0;
for(j+=2;j<buflen;) //?????,??5??
{
if(loadbuf==loadbuf[j])
{
loadbuf[++i]=loadbuf[j];
num++;
if(num>=5)
{
num=1;
i++;
loadbuf=loadbuf[j]; //???
loadbuf++;
loadbuf&=0x01;
}
j++;
}
else
{
loadbuf[++i]=loadbuf[j++];
num=1;
}
}
for(i++;i<buflen;)loadbuf[i++]=0x01;
if(speed==500)
{
for(i=0;i<buflen;i++)
{
can_l=loadbuf;
nop;nop;nop;
}
}
if(speed==125)
{
for(i=0;i<buflen;i++)
{
can_l=loadbuf;
for(j=(3000/125-6);j;j--);
nop;//
}
}
//?????????for(j=(3000/125-6);j;j--); ??125???????
//????????,?????nop???
if(speed==100)
{
for(i=0;i<buflen;i++)
{
can_l=loadbuf;
for(j=(3000/100-6);j;j--);
nop;//nop;nop;
}
}
}
void senditem(uint partnum,uchar idx)
{
uint canid,speed;
uchar candlc,dat[4];
idx--;
canid=cancode[partnum][idx][0];
candlc=cancode[partnum][idx][1];
dat[0]=cancode[partnum][idx][2];
dat[1]=cancode[partnum][idx][3];
dat[2]=cancode[partnum][idx][4];
dat[3]=cancode[partnum][idx][5];
// cancrc=cancode[partnum][idx][6];
speed=cancode[partnum][0][7];
sendcan(canid,candlc,dat[0],dat[1],dat[2],dat[3],speed);
}
void main()
{
onoffcheck=1;
while(1)
{
delay(300);
if(acc) //???
{
for(canpart=0;canpart<part;canpart++)
senditem(canpart,3);
}
else //???
{
for(canpart=0;canpart<part;canpart++)
senditem(canpart,4);
}
delay(100);
if(led) //?? ???
{
for(canpart=0;canpart<part;canpart++)
senditem(canpart,1);
}
else //?? ???
{
for(canpart=0;canpart<part;canpart++)
senditem(canpart,2);
}
/ if(onoffcheck)
{
delay(100);
for(canpart=0;canpart<part;canpart++)
senditem(canpart,2);
delay(100);
for(canpart=0;canpart<part;canpart++)
senditem(canpart,4);
while(onoffcheck);
} */
}
}

KELIC51编译时提示如下错误请问如何解决

compiling v1.0.c...
CD\V1.0.C(161): error C213: left side of asn-op not an lvalue
CD\V1.0.C(162): error C187: not an lvalue
CD\v1.0.c - 2 Error(s), 0 Warning(s).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值