满意答案
ljmaizhf99
2016.06.10
采纳率:50% 等级:12
已帮助:3710人
voidTranslate(void)
{
unsigned char data; //声明data为无符号字符型变量
while((Fifo_Get(&data))==0)//while循环,满足Fifo_Get(&data)为真时进入循环(&为取址符,传输data变量的存放地址给函数)
{
switch(stateRX) //多项选择,
{
case RCV_FE: //当stateRX的值等于RCV_FE时执行以下语句。(case的格式:case 常量 :。RCV_应该是通过在程序开头#define RCV_FE ??得到的,??表示任何符号 )
if( data == 0xfe) //若data为0xfe(0x??表示十六进制数)时
stateRX++; //stateRX自增(相当于stateRX=stateRX+1;但执行速度更快)
else //若前面的data == 0xfe条件不成立,则执行以下语句
stateRX = RCV_FE; //赋值语句
break; //跳出switch,(若没有这步,若case RCV_FE:成立将会一直执行下去,忽略下面的case)
case RCV_EF: //同理
if( data == 0xef) //同理
else //同理
stateRX = RCV_FE; //同理
break; //同理
case RCV_ID: //同理
LRC = 0Xff; //同理
id = data; //同理
LRC ^= data; //。。。。。这句就。。。LRC和data的各相应位进行异或再赋值给LRC(异或:位运算,法则是必须不同,否则没有,例子:1^1=0,1^0=1,0^0=0)
stateRX++; //同理
break; //同理
case RCV_LEN: //同理
len = data; //同理
LRC ^= data; //同理
stateRX++; //同理
break;//同理
case RCV_INSTRUCT://同理
cmd = data;//同理
LRC ^= data;//同理
paraindex = 0;//同理
if(len-2<=0)//len-2<=0的意思是先len-2再判断len-2是否小于等于零
stateRX=RCV_CHKSUM;//同理
else//同理
stateRX++;//同理
break;//同理
case RCV_PARA://同理
paratmp[paraindex++] = data;//将data赋值给paratmp[paraindex],然后paraindex自增;
LRC ^= data;//同理
if( paraindex >= len-2)//同理
stateRX++;//同理
break;//同理
case RCV_CHKSUM://同理
if(LRC == data)//同理
Dispatch();//函数Dispatch()
stateRX = RCV_FE;//同理
break;//同理
default://switch的末句,若以上case都不等于stateRX的值,则执行default后面的语句,这里default后面是brake;,这两句不要也可
break;
}
}
}不能说完,但希望能拿到这两百块
00分享举报