fork(1) download
  1. #include <stdio.h>
  2.  
  3. short gencrc_16(short i);
  4. void send_cmd(unsigned char *cmd, unsigned short len);
  5. unsigned short CalculateCharacterCRC16( unsigned short crc, unsigned char c );
  6. unsigned char cmd[4] = {0x52,0xE0,0xEF};
  7. unsigned char bit[2];
  8. void send_cmd(unsigned char *cmd, unsigned short len)
  9. {
  10. unsigned short i;
  11. unsigned short crc = 0;
  12. crc = CalculateCharacterCRC16(0,0x02);
  13. for (i=0; i<len; i++)
  14. {
  15. //send_byte(*cmd);
  16. crc = CalculateCharacterCRC16(crc,*cmd++);
  17. bit[0] = (crc>>8);
  18. bit[1] = crc;
  19.  
  20. }
  21. printf("first[%x]..sec[%x]",bit[0],bit[1]);
  22. }
  23. short gencrc_16(short i)
  24. {
  25. short j;
  26. short k;
  27. short crc;
  28. k = i << 8;
  29. crc = 0;
  30. for ( j = 0 ; j < 8 ; j++ )
  31. {
  32. if ( ( crc ^ k ) & 0x8000 )
  33. crc = ( crc << 1 ) ^ 0x1021;
  34. else
  35. crc <<= 1;
  36. k <<= 1;
  37. }
  38. return(crc);
  39. }
  40. unsigned short CalculateCharacterCRC16( unsigned short crc, unsigned char c )
  41. {
  42. return( ( crc << 8 ) ^ gencrc_16( (crc >> 8 ) ^ c ) );
  43. }
  44. int main(void) {
  45. send_cmd(cmd,3);
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
first[c1]..sec[b5]