Home

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

u16 crc16_ccitt(u8 *tmp,u8 num)

{

    u16 CrcTmp = 0x0;

    u8 i=0,j=0;

    u16 s = 0;

    u16 tmpcrc = 0;

    for(i=0;i<num;i++)

    {

        tmpcrc = tmp[i]<<8;

        tmpcrc &= 0xff00;            

        CrcTmp ^= tmpcrc;           

        for(j=0;j<8;j++)

        {

            s = CrcTmp&0x8000;

            CrcTmp <<= 1;

            CrcTmp &= ~(0x0001);

            if(s)

            {

                CrcTmp ^= 0x1021;

            }

        }

    }

    return CrcTmp;

}