重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
void Translate(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;
}
}
}不能说完,但希望能拿到这两百块
第一个正如你所说。
第二个的话是个函数的定义,这种返回函数指针的类型没法直接写在函数名的前面,所以
void (*GetOperateState(void))(U8)这一行是标明了返回值是个函数指针,返回的函数指针的结构跟第一个里的一样,实际上也就是把第一个声明的函数指针给返回了。
第三个跟第一个差不多,但是0不是指入口地址为0的函数,0代表NULL,是无的意思,这个是不能被调用的。
brake是一个自定义的标识符吗?
C语言中用break来跳出循环或switch的当前执行序列。
应该是break吧,主要用处是退出当前循环,和switch结构搭配是最经典的,有的时候在多层嵌套的for循环内也会用到