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

📄 crc16汇编.txt

📁 工业用CRC16算法51汇编源程序(已经通过测试)
💻 TXT
字号:


TEMP        EQU    40H
CHKSUMBYL   EQU    46H                  ;校验和低字节
CHKSUMBYH   EQU    47H                  ;校验和高字节

DATALENGTH  EQU    4FH                  ;待校验的数据串长度
            
            ORG 0000H
            MOV   TEMP,#1EH
            MOV   TEMP+1,#6
            MOV   TEMP+2,#20H
            MOV   TEMP+3,#0
            MOV   TEMP+4,#0
            MOV   TEMP+5,#2
            LCALL MAKE_CHKSUM
            SJMP  $
            
;-----------------------------------------------------------------------------
;运行:  1E 06 20 00 00 02 01 A4  ,16进制,设备地址,命令,存储器地址高,存储器地址低,参数高,参数低,校验高,校验低。
;停止:  1E 06 20 00 00 01 41 A5  , 9600,8,N,2
;送参数:1E 06 20 01 0B B8 D6 E7
;-----------------------------------------------------------------------------
MAKE_CHKSUM:     			;RTU 模式,CRC - 16 校验,用软件模拟仿真检查无误.
            MOV   R0,#TEMP
            MOV   CHKSUMBYL,#0FFH       ;1.预置 16 位寄存器为十六进制 FFFF(即全为 1),低字节
            MOV   CHKSUMBYH,#0FFH       ;  预置 16 位寄存器为十六进制 FFFF(即全为 1),高字节
            MOV   DATALENGTH,#6         ;待校验的数据串长度
CHKSUM_LP1:
            MOV   A,@R0                 ;2.把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,
            XRL   A,CHKSUMBYL
            MOV   CHKSUMBYL,A           ;并把结果放于CRC 寄存器

            MOV   R7,#8
CHKSUM_LP2:
            MOV   A,CHKSUMBYH
            CLR   C
            RRC   A                     ;3.把寄存器的内容右移一位(朝低位),先移动高字节
            MOV   CHKSUMBYH,A

            MOV   A,CHKSUMBYL
            RRC   A                     ;再移动低字节
            MOV   CHKSUMBYL,A

            JNC   CHKSUM_JP             ;4.检查最低位(移出位),如果最低位为 0 ,重复第 3 步(再次移位)
            MOV   A,CHKSUMBYL
            XRL   A,#01H                ;如果最低位为 1,CRC 寄存器与多项式 A001 进行异或
            MOV   CHKSUMBYL,A

            MOV   A,CHKSUMBYH
            XRL   A,#0A0H
            MOV   CHKSUMBYH,A
CHKSUM_JP:
            DJNZ  R7,CHKSUM_LP2         ;5.重复步骤 3 和 4,直到右移 8 次,这样整个 8 位数据全部进行了处理
            INC   R0
            DJNZ  DATALENGTH,CHKSUM_LP1 ;6.重复步骤2 到步骤 5,进行下一个 8 位数据的处理
            RET
            
            
            END


⌨️ 快捷键说明

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