| 
 | 
 
动态CRC按位循环冗余码编译码程序可用于通讯数据的加密及解密和校验。 
;-------8位右移动态按位循环冗余码编码程序-------------- 
CRC8: 
 PUSH  B 
        MOV   B,#8 
CRC8_LOOP: 
        LCALL CRC8B 
        DJNZ  B,CRC8_LOOP 
        POP   B 
        RET 
CRC8B: 
        PUSH  PSW 
        PUSH  ACC 
        RLC   A 
        XRL   A,CRC 
        RRC   A 
        MOV   A,CRC 
        JNC   CRC8B_NEXT 
        XRL   A,#18H;CRC=X8+X5+X4+1 
CRC8B_NEXT: 
        RRC   A 
        MOV   CRC,A 
        POP   ACC 
        POP   PSW 
        RET 
;-------8位右移动态按位循环冗余码译码程序--------------- 
CRC8F:         
        PUSH  B 
        MOV   B,#08H 
CRC8F_LOOP: 
        RLC   A 
        LCALL CRC8BF 
        DJNZ  B,CRC8F_LOOP 
        POP   B 
        RET 
CRC8BF: 
。。。。 
        RET 
;-------16位右移动态按位循环冗余码编码程序------------------ 
CRC16: 
 PUSH  B 
        MOV   B,#8 
CRC16_LOOP: 
        LCALL CRC16B 
        DJNZ  B,CRC16_LOOP 
        POP   B 
        RET 
CRC16B: 
        PUSH  PSW 
        PUSH  ACC 
        RLC   A 
        XRL   A,CRCL 
        RRC   A 
        MOV   F0,C 
        MOV   A,CRCH 
        JNC   CRC16B_NEXT1 
        XRL   A,#08H;CRC=X16+X12+X5+1 
CRC16B_NEXT1: 
        RRC   A 
        MOV   CRCH,A 
        MOV   A,CRCL 
        JNB   F0,CRC16B_NEXT2 
        XRL   A,#10H;CRC=X16+X12+X5+1 
CRC16B_NEXT2: 
        RRC   A 
        MOV   CRCL,A 
        POP   ACC 
        POP   PSW 
        RET 
;-------16位右移动态按位循环冗余码校验译码程序------------------ 
CRC16F: 
。。。。。 
        RET |   
 
 
 
 |