⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc.c

📁 多种单片机crc校验
💻 C
字号:
#include<stdio.h>

typedef unsigned char uchar;
main()
{  

  uchar x[6]={0x55,0x44,0x33,0x22,0x11,0x00};
  uchar js=0,i=0,crc,c,gx=0x07;
  uchar cjs=0,ci=0,crct,ct;
  
                //生成crc 
  
   crc=x[i++]; c=x[i++];
   
  while(1){ if(crc>>7){ crc<<=1;
                     crc+=((c>>7)&1);
                     crc^=gx;
                    }
          else {crc<<=1;
                crc|=((c>>7)&1);
                }
          if(js>=7){if(i>=6)goto crc_end;
                    c=x[i++];     //加载下一个数据                                                                                                  
                    js=0;         //移位计数清零
                   }                                                  
          else { c<<=1; //C左移一位        
                 js++;  //移位计数+1                           
               }  
        }
crc_end:    
   x[5]=crc^0xff;

  
   //检验生成的CRC 
   x[5]^=0xff;
   printf("x[5]=%x\n",x[5]);
    crct=x[ci++];ct=x[ci++];   
     while(1){ if(crct>>7){ crct<<=1;
                     crct+=((ct>>7)&1);
                     crct^=gx;
                    }
          else {crct<<=1;
                crct|=((ct>>7)&1);
                }
          if(cjs>=7){if(ci>=6)goto crc_t;
                    ct=x[ci++];     //加载下一个数据                                                                                                  
                    cjs=0;         //移位计数清零
                   }                                                  
          else { ct<<=1; //C左移一位        
                 cjs++;  //移位计数+1                           
               }  
        }
   
crc_t:   if(crct)printf("error");
   

  printf("\nright!\ncrct=%d   ct=%d\n",crct,ct);
  printf("%x %x %x %x %x 00\n%x %x %x %x %x %x\n%x",x[0],x[1],x[2],x[3],x[4],x[0],x[1],x[2],x[3],x[4],x[5],crc); 
  getchar();
      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -