HDLC,是1bit,1bit发过去的,每一BYTE是8位(我现在使用的是8位),低位先发。CRC我使用的是CRC CCITT—1,这个“-1”的意思是CRC的初值为0Xffff。<br />我是使用z85c30作为HDLC的收发,CRC的计算从地址帧到信息帧计算。由于每一BYTE是低位先发,所以计算的时候,要把每一个BYTE的低位高位反过来,也就是说原来的D7变为D0,D0变为D7,D6变为D1,依次类推。0x80变为0X01等。计算出来的CRC,要每位取反。下面我是我发的一个数组。<br />80,01,13,30,00,<br />00,00,00,00,00,<br />00,00,00,00,00,<br />00,00,00,03,10,<br />31,00,00,00,00,<br />00,00,00<br />按照每位翻转后计算出来的CRC是0X7E62.<br />但这样发出去是不行的,还要将这个结果取反后<br />是0x894D<br />如果用示波器看的话,就是这个结果但要把这个CRC发出去,肯定死翘翘的,还要把这个拆分为MSB何LSB。然后将他们各高低位翻转过来,得出要发出去的CRC<br />这个CRC是0x91b2.<br />为什么我不用这个芯片上的硬件计算出来的CRC,因为我初始化不好,他发出来的结果不适合,所以关了。<br />我写到这里写完了,请问一下各位有谁有现成的将一个BYTE的各位翻转的程序啊?
|