📄 text1
字号:
283: unsigned int CRC16(unsigned char xdata *puchMsg,unsigned char usDataLen)
284: //unsigned char *puchMsg ;/* 要进行CRC校验的消息 */
285: //unsigned short usDataLen ; /* 消息中字节数 */
C:0x0409 A905 MOV R1,0x05
286: {
287: unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */
C:0x040B 7DFF MOV R5,#OCRDH(0xFF)
288: unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */
289: unsigned char uIndex ; /* CRC循环中的索引 */
C:0x040D 7CFF MOV R4,#OCRDH(0xFF)
290: while (usDataLen--) /* 传输消息缓冲区 */
C:0x040F AB01 MOV R3,thkonzi(0x01)
C:0x0411 19 DEC R1
C:0x0412 EB MOV A,R3
C:0x0413 601B JZ C:0430
291: {
292: uIndex = uchCRCHi ^ *puchMsg ; /* 计算CRC */
C:0x0415 8F82 MOV DPL(0x82),R7
C:0x0417 8E83 MOV DPH(0x83),R6
C:0x0419 E0 MOVX A,@DPTR
C:0x041A 6D XRL A,R5
C:0x041B FB MOV R3,A
293: puchMsg++;
C:0x041C 0F INC R7
C:0x041D BF0001 CJNE R7,#punjunzi(0x00),C:0421
C:0x0420 0E INC R6
294: uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
C:0x0421 EB MOV A,R3
C:0x0422 90001B MOV DPTR,#auchCRCHi(0x001B)
C:0x0425 93 MOVC A,@A+DPTR
C:0x0426 6C XRL A,R4
C:0x0427 FD MOV R5,A
295: uchCRCLo = auchCRCLo[uIndex];
C:0x0428 EB MOV A,R3
C:0x0429 90011B MOV DPTR,#auchCRCLo(0x011B)
C:0x042C 93 MOVC A,@A+DPTR
C:0x042D FC MOV R4,A
296: }
C:0x042E 80DF SJMP C:040F
297: return (uchCRCHi *256 | uchCRCLo);
C:0x0430 ED MOV A,R5
C:0x0431 FE MOV R6,A
C:0x0432 AD04 MOV R5,0x04
C:0x0434 ED MOV A,R5
C:0x0435 FF MOV R7,A
298: }
C:0x0436 22 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -