当前位置:首页 > modbus CRC16校验工控用程序
MODBUS CRC16校验自写程序 用于CRC校验,适用于工业通信 返回值分为高低字段 测试字段:
3B 03 00 01 00 02 CRCH 91H CRCL 90H
void CRC_J(len) //CRC校验 { uchar j,k; crc=0xffff; k=len-1; while(len--) { crc=crc^TX[k-len]; for(j=0;j<8;j++) { if(crc&0x01==1) { crc=(crc>>1)^0xA001; }else{ crc=crc>>1; } } } CRCH=crc/0x100; CRCL=crc%0x100; }
如果你们是使用汇编的话,可以使用一下代码 CRCJ: MOV CRCH,#0FFH ;R0,R1,R3,R4 MOV CRCL,#0FFH MOV R1,#CRCL CRCJ1:MOV R3,#8 MOV A,@R0 XRL A,CRCH MOV CRCH,A CRCJ2:MOV A,CRCH ANL A,#01H
JNB ACC.0,CRCJ3 MOV A,@R1 CLR C RRC A
MOV @R1,A DEC R1
MOV A,@R1 RRC A
MOV @R1,A INC R1
MOV A,#01H XRL A,CRCH MOV CRCH,A MOV A,#0A0H XRL A,CRCL MOV CRCL,A SJMP CRC31 CRCJ3:MOV A,@R1 CLR C RRC A
MOV @R1,A DEC R1
MOV A,@R1 RRC A
MOV @R1,A INC R1
CRC31:DJNZ R3,CRCJ2 INC R0
DJNZ R4,CRCJ1 RET
有问题可以讨论94408435
共分享92篇相关文档