主要用于控制三相电能表检验装置
源代码在线查看: crc.bas
Attribute VB_Name = "Module3"
Public Crc_16_tab(255) As Long
Function Crc_Init()
Crc_16_tab(0) = &H0
Crc_16_tab(1) = &H1021
Crc_16_tab(2) = &H2042
Crc_16_tab(3) = &H3063
Crc_16_tab(4) = &H4084
Crc_16_tab(5) = &H50A5
Crc_16_tab(6) = &H60C6
Crc_16_tab(7) = &H70E7
Crc_16_tab(8) = &H8108
Crc_16_tab(9) = &H9129
Crc_16_tab(10) = &HA14A
Crc_16_tab(11) = &HB16B
Crc_16_tab(12) = &HC18C
Crc_16_tab(13) = &HD1AD
Crc_16_tab(14) = &HE1CE
Crc_16_tab(15) = &HF1EF
Crc_16_tab(16) = &H1231
Crc_16_tab(17) = &H210
Crc_16_tab(18) = &H3273
Crc_16_tab(19) = &H2252
Crc_16_tab(20) = &H52B5
Crc_16_tab(21) = &H4294
Crc_16_tab(22) = &H72F7
Crc_16_tab(23) = &H62D6
Crc_16_tab(24) = &H9339
Crc_16_tab(25) = &H8318
Crc_16_tab(26) = &HB37B
Crc_16_tab(27) = &HA35A
Crc_16_tab(28) = &HD3BD
Crc_16_tab(29) = &HC39C
Crc_16_tab(30) = &HF3FF
Crc_16_tab(31) = &HE3DE
Crc_16_tab(32) = &H2462
Crc_16_tab(33) = &H3443
Crc_16_tab(34) = &H420
Crc_16_tab(35) = &H1401
Crc_16_tab(36) = &H64E6
Crc_16_tab(37) = &H74C7
Crc_16_tab(38) = &H44A4
Crc_16_tab(39) = &H5485
Crc_16_tab(40) = &HA56A
Crc_16_tab(41) = &HB54B
Crc_16_tab(42) = &H8528
Crc_16_tab(43) = &H9509
Crc_16_tab(44) = &HE5EE
Crc_16_tab(45) = &HF5CF
Crc_16_tab(46) = &HC5AC
Crc_16_tab(47) = &HD58D
Crc_16_tab(48) = &H3653
Crc_16_tab(49) = &H2672
Crc_16_tab(50) = &H1611
Crc_16_tab(51) = &H630
Crc_16_tab(52) = &H76D7
Crc_16_tab(53) = &H66F6
Crc_16_tab(54) = &H5695
Crc_16_tab(55) = &H46B4
Crc_16_tab(56) = &HB75B
Crc_16_tab(57) = &HA77A
Crc_16_tab(58) = &H9719
Crc_16_tab(59) = &H8738
Crc_16_tab(60) = &HF7DF
Crc_16_tab(61) = &HE7FE
Crc_16_tab(62) = &HD79D
Crc_16_tab(63) = &HC7BC
Crc_16_tab(64) = &H48C4
Crc_16_tab(65) = &H58E5
Crc_16_tab(66) = &H6886
Crc_16_tab(67) = &H78A7
Crc_16_tab(68) = &H840
Crc_16_tab(69) = &H1861
Crc_16_tab(70) = &H2802
Crc_16_tab(71) = &H3823
Crc_16_tab(72) = &HC9CC
Crc_16_tab(73) = &HD9ED
Crc_16_tab(74) = &HE98E
Crc_16_tab(75) = &HF9AF
Crc_16_tab(76) = &H8948
Crc_16_tab(77) = &H9969
Crc_16_tab(78) = &HA90A
Crc_16_tab(79) = &HB92B
Crc_16_tab(80) = &H5AF5
Crc_16_tab(81) = &H4AD4
Crc_16_tab(82) = &H7AB7
Crc_16_tab(83) = &H6A96
Crc_16_tab(84) = &H1A71
Crc_16_tab(85) = &HA50
Crc_16_tab(86) = &H3A33
Crc_16_tab(87) = &H2A12
Crc_16_tab(88) = &HDBFD
Crc_16_tab(89) = &HCBDC
Crc_16_tab(90) = &HFBBF
Crc_16_tab(91) = &HEB9E
Crc_16_tab(92) = &H9B79
Crc_16_tab(93) = &H8B58
Crc_16_tab(94) = &HBB3B
Crc_16_tab(95) = &HAB1A
Crc_16_tab(96) = &H6CA6
Crc_16_tab(97) = &H7C87
Crc_16_tab(98) = &H4CE4
Crc_16_tab(99) = &H5CC5
Crc_16_tab(100) = &H2C22
Crc_16_tab(101) = &H3C03
Crc_16_tab(102) = &HC60
Crc_16_tab(103) = &H1C41
Crc_16_tab(104) = &HEDAE
Crc_16_tab(105) = &HFD8F
Crc_16_tab(106) = &HCDEC
Crc_16_tab(107) = &HDDCD
Crc_16_tab(108) = &HAD2A
Crc_16_tab(109) = &HBD0B
Crc_16_tab(110) = &H8D68
Crc_16_tab(111) = &H9D49
Crc_16_tab(112) = &H7E97
Crc_16_tab(113) = &H6EB6
Crc_16_tab(114) = &H5ED5
Crc_16_tab(115) = &H4EF4
Crc_16_tab(116) = &H3E13
Crc_16_tab(117) = &H2E32
Crc_16_tab(118) = &H1E51
Crc_16_tab(119) = &HE70
Crc_16_tab(120) = &HFF9F
Crc_16_tab(121) = &HEFBE
Crc_16_tab(122) = &HDFDD
Crc_16_tab(123) = &HCFFC
Crc_16_tab(124) = &HBF1B
Crc_16_tab(125) = &HAF3A
Crc_16_tab(126) = &H9F59
Crc_16_tab(127) = &H8F78
Crc_16_tab(128) = &H9188
Crc_16_tab(129) = &H81A9
Crc_16_tab(130) = &HB1CA
Crc_16_tab(131) = &HA1EB
Crc_16_tab(132) = &HD10C
Crc_16_tab(133) = &HC12D
Crc_16_tab(134) = &HF14E
Crc_16_tab(135) = &HE16F
Crc_16_tab(136) = &H1080
Crc_16_tab(137) = &HA1
Crc_16_tab(138) = &H30C2
Crc_16_tab(139) = &H20E3
Crc_16_tab(140) = &H5004
Crc_16_tab(141) = &H4025
Crc_16_tab(142) = &H7046
Crc_16_tab(143) = &H6067
Crc_16_tab(144) = &H83B9
Crc_16_tab(145) = &H9398
Crc_16_tab(146) = &HA3FB
Crc_16_tab(147) = &HB3DA
Crc_16_tab(148) = &HC33D
Crc_16_tab(149) = &HD31C
Crc_16_tab(150) = &HE37F
Crc_16_tab(151) = &HF35E
Crc_16_tab(152) = &H2B1
Crc_16_tab(153) = &H1290
Crc_16_tab(154) = &H22F3
Crc_16_tab(155) = &H32D2
Crc_16_tab(156) = &H4235
Crc_16_tab(157) = &H5214
Crc_16_tab(158) = &H6277
Crc_16_tab(159) = &H7256
Crc_16_tab(160) = &HB5EA
Crc_16_tab(161) = &HA5CB
Crc_16_tab(162) = &H95A8
Crc_16_tab(163) = &H8589
Crc_16_tab(164) = &HF56E
Crc_16_tab(165) = &HE54F
Crc_16_tab(166) = &HD52C
Crc_16_tab(167) = &HC50D
Crc_16_tab(168) = &H34E2
Crc_16_tab(169) = &H24C3
Crc_16_tab(170) = &H14A0
Crc_16_tab(171) = &H481
Crc_16_tab(172) = &H7466
Crc_16_tab(173) = &H6447
Crc_16_tab(174) = &H5424
Crc_16_tab(175) = &H4405
Crc_16_tab(176) = &HA7DB
Crc_16_tab(177) = &HB7FA
Crc_16_tab(178) = &H8799
Crc_16_tab(179) = &H97B8
Crc_16_tab(180) = &HE75F
Crc_16_tab(181) = &HF77E
Crc_16_tab(182) = &HC71D
Crc_16_tab(183) = &HD73C
Crc_16_tab(184) = &H26D3
Crc_16_tab(185) = &H36F2
Crc_16_tab(186) = &H691
Crc_16_tab(187) = &H16B0
Crc_16_tab(188) = &H6657
Crc_16_tab(189) = &H7676
Crc_16_tab(190) = &H4615
Crc_16_tab(191) = &H5634
Crc_16_tab(192) = &HD94C
Crc_16_tab(193) = &HC96D
Crc_16_tab(194) = &HF90E
Crc_16_tab(195) = &HE92F
Crc_16_tab(196) = &H99C8
Crc_16_tab(197) = &H89E9
Crc_16_tab(198) = &HB98A
Crc_16_tab(199) = &HA9AB
Crc_16_tab(200) = &H5844
Crc_16_tab(201) = &H4865
Crc_16_tab(202) = &H7806
Crc_16_tab(203) = &H6827
Crc_16_tab(204) = &H18C0
Crc_16_tab(205) = &H8E1
Crc_16_tab(206) = &H3882
Crc_16_tab(207) = &H28A3
Crc_16_tab(208) = &HCB7D
Crc_16_tab(209) = &HDB5C
Crc_16_tab(210) = &HEB3F
Crc_16_tab(211) = &HFB1E
Crc_16_tab(212) = &H8BF9
Crc_16_tab(213) = &H9BD8
Crc_16_tab(214) = &HABBB
Crc_16_tab(215) = &HBB9A
Crc_16_tab(216) = &H4A75
Crc_16_tab(217) = &H5A54
Crc_16_tab(218) = &H6A37
Crc_16_tab(219) = &H7A16
Crc_16_tab(220) = &HAF1
Crc_16_tab(221) = &H1AD0
Crc_16_tab(222) = &H2AB3
Crc_16_tab(223) = &H3A92
Crc_16_tab(224) = &HFD2E
Crc_16_tab(225) = &HED0F
Crc_16_tab(226) = &HDD6C
Crc_16_tab(227) = &HCD4D
Crc_16_tab(228) = &HBDAA
Crc_16_tab(229) = &HAD8B
Crc_16_tab(230) = &H9DE8
Crc_16_tab(231) = &H8DC9
Crc_16_tab(232) = &H7C26
Crc_16_tab(233) = &H6C07
Crc_16_tab(234) = &H5C64
Crc_16_tab(235) = &H4C45
Crc_16_tab(236) = &H3CA2
Crc_16_tab(237) = &H2C83
Crc_16_tab(238) = &H1CE0
Crc_16_tab(239) = &HCC1
Crc_16_tab(240) = &HEF1F
Crc_16_tab(241) = &HFF3E
Crc_16_tab(242) = &HCF5D
Crc_16_tab(243) = &HDF7C
Crc_16_tab(244) = &HAF9B
Crc_16_tab(245) = &HBFBA
Crc_16_tab(246) = &H8FD9
Crc_16_tab(247) = &H9FF8
Crc_16_tab(248) = &H6E17
Crc_16_tab(249) = &H7E36
Crc_16_tab(250) = &H4E55
Crc_16_tab(251) = &H5E74
Crc_16_tab(252) = &H2E93
Crc_16_tab(253) = &H3EB2
Crc_16_tab(254) = &HED1
Crc_16_tab(255) = &H1EF0
End Function
'计算CRC校验码
Function CRC_Cal(CRC As Double, Data() As Byte, DataLen As Integer) As Long
Dim i As Integer
Dim TalbeIndex As Byte
Dim temp As Double
Dim temp2 As Double
For i = 0 To DataLen - 1
temp = CRC And &HFF00
temp = temp / 256
temp = temp Xor Data(i)
TalbeIndex = temp And &HFF
temp = CRC
temp = temp And &HFF
temp = temp * 256
temp2 = Crc_16_tab(TalbeIndex)
'If temp2 < 0 Then
't'emp2 = &H10000 + temp2
'End If
temp = temp Xor temp2
CRC = temp And &HFFFF
Next i
CRC_Cal = CRC
End Function