📄 crc.bak
字号:
testbit=(RX_BUF[tail]>>(7-i))%2;
switch (REVSTATUS){
case 0:check_frame();
break;
case 1:check_transparence();
if(transparence_valid==0){
valid_data=valid_data+(testbit<<(7-valid_data_num));
if(++valid_data_num==8){
if(valid_data==0x00/*aa*/){
// transparence=0;
REVSTATUS=2;
valid_data=0;
valid_data_num=0;
checkdata[0]=0x00/*aa*/;
}else{
transparence=0;
REVSTATUS=0;
valid_data=0;
valid_data_num=0;
}
}
}else{
if(transparence_valid==1&&REVSTATUS==0){
transparence_valid=0;
transparence=0;
valid_data=0;
valid_data_num=0; }
}
break;
case 2: if(transparence_valid==0){
valid_data=valid_data+(testbit<<(7-valid_data_num));
if(++valid_data_num==8){
if(valid_data==0x43/*dd*/){
// transparence=0;
REVSTATUS=3;
valid_data=0;
valid_data_num=0;
checkdata[1]=0x43/*dd*/;
}else{
transparence=0;
REVSTATUS=0;
valid_data=0;
valid_data_num=0;
}
}
}else{
if(transparence_valid==1&&REVSTATUS==0){
transparence_valid=0;
transparence=0;
valid_data=0;
valid_data_num=0; }
}
break;
case 3:check_transparence();
if(transparence_valid==0){
valid_data=valid_data+(testbit<<(7-valid_data_num));
if(++valid_data_num==8){
if(valid_data==0xcc/*cc*/){
//transparence=0;
REVSTATUS=4;
valid_data=0;
valid_data_num=0;
checkdata[2]=0xcc/*cc*/;
}else{
transparence=0;
REVSTATUS=0;
valid_data=0;
valid_data_num=0;
}
}
}else{
if(transparence_valid==1&&REVSTATUS==0){
transparence_valid=0;
transparence=0;
valid_data=0;
valid_data_num=0;
}
}
break;
case 4:check_transparence();
if(transparence_valid==0){
valid_data=valid_data+(testbit<<(7-valid_data_num));
if(++valid_data_num==8){
if(valid_data==0xc1){
//transparence=0;
REVSTATUS=5;
valid_data=0;
valid_data_num=0;
checkdata[3]=0xc1;
}else{
transparence=0;
REVSTATUS=0;
valid_data=4;
valid_data_num=0;
}
}
}else{
if(transparence_valid==1&&REVSTATUS==0){
transparence_valid=0;
transparence=0;
valid_data=0;
valid_data_num=0;
}
}
break;
case 5:check_transparence();
if(transparence_valid==0){
valid_data=valid_data+(testbit<<(7-valid_data_num));
if(++valid_data_num==8){
checkdata[data_num]=valid_data;
data_num++;
REVSTATUS=6;
// transparence=0;
valid_data=0;
valid_data_num=0;
}
}else{
if(transparence_valid==1&&REVSTATUS==0){
transparence_valid=0;
transparence=0;
valid_data=0;
valid_data_num=0;
}
}
break;
case 6:check_transparence();
if(transparence_valid==0){
valid_data=valid_data+(testbit<<(7-valid_data_num));
if(++valid_data_num==8){
checkdata[data_num]=valid_data;
data_num++;
REVSTATUS=6;
//transparence=0;
valid_data=0;
valid_data_num=0;
}
}else if(transparence_valid==1 && transparence==0 && REVSTATUS!=0){
transparence_valid=0;
break;
}else{{
if(transparence_valid==1&&REVSTATUS==0){
transparence_valid=0;
transparence=0;
valid_data=0;
p=&checkdata[0];
check_write=cal_crc(p,(data_num-2));
check_temp=(checkdata[data_num-2]<<8)+checkdata[data_num-1];
data_num=4;
if(check_write==check_temp){ //CRC校验相等
EA=0;
receive_flag=checkdata[4];
com_receive_deal();
checkdata[4]=0;
EA=1; }
}
}
break; }
break;
default:break;
}
}
if(++tail>300)tail=0;
}
}
void comm() interrupt 4 using 2
{
if(RI==1){
RX_BUF[head]=SBUF;
if(++head>300)head=0;
RI=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -