.版本 2
.子程序 CRC16_MODBUS, 整數型, , CRC16_MODBUS查表算法
.參數 欲校驗的整數, 字節集
.局部變量 crc, 整數型
.局部變量 table, 整數型, , "256"
.局部變量 i, 整數型
' Name: CRC-16/MODBUS X16+X15+X2+1
' Poly: 0x8005
' lnit: 0xFFFF
' Refin: Ture
' Refout: Ture
' Xorout: 0x0000
' Note:
' —————————————————輸入、輸出反轉、結果不異或————————————————————
.變量循環首 (0, 255, 1, i)
crc = i
.變量循環首 (1, 8, 1, )
.如果 (位與 (crc, 1) ≠ 0)
crc = 位異或 (右移 (crc, 1), 40961) ' // 多項式 “0xA001”= Reverse “0x8005”
.否則
crc = 右移 (crc, 1)
.如果結束
.變量循環尾 ()
table [i + 1] = crc
.變量循環尾 ()
crc = 65535 ' // 初始值“0xFFFF”)
.變量循環首 (1, 取字節集長度 (欲校驗的整數), 1, i)
crc = 位異或 (右移 (crc, 8), table [位異或 (欲校驗的整數 [i], 位與 (crc, 255)) + 1])
.變量循環尾 ()
返回 (crc)