#include <stdio.h>
short gencrc_16(short i);
void send_cmd(unsigned char *cmd, unsigned short len);
unsigned short CalculateCharacterCRC16( unsigned short crc, unsigned char c );
unsigned char cmd[4] = {0x52,0xE0,0xEF};
unsigned char bit[2];
void send_cmd(unsigned char *cmd, unsigned short len)
{
unsigned short i;
unsigned short crc = 0;
crc = CalculateCharacterCRC16(0,0x02);
for (i=0; i<len; i++)
{
//send_byte(*cmd);
crc = CalculateCharacterCRC16(crc,*cmd++);
bit[0] = (crc>>8);
bit[1] = crc;
}
printf("first[%x]..sec[%x]",bit
[0],bit
[1]); }
short gencrc_16(short i)
{
short j;
short k;
short crc;
k = i << 8;
crc = 0;
for ( j = 0 ; j < 8 ; j++ )
{
if ( ( crc ^ k ) & 0x8000 )
crc = ( crc << 1 ) ^ 0x1021;
else
crc <<= 1;
k <<= 1;
}
return(crc);
}
unsigned short CalculateCharacterCRC16( unsigned short crc, unsigned char c )
{
return( ( crc << 8 ) ^ gencrc_16( (crc >> 8 ) ^ c ) );
}
int main(void) {
send_cmd(cmd,3);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzaG9ydCBnZW5jcmNfMTYoc2hvcnQgaSk7CnZvaWQgc2VuZF9jbWQodW5zaWduZWQgY2hhciAqY21kLCB1bnNpZ25lZCBzaG9ydCBsZW4pOwp1bnNpZ25lZCBzaG9ydCBDYWxjdWxhdGVDaGFyYWN0ZXJDUkMxNiggdW5zaWduZWQgc2hvcnQgY3JjLCB1bnNpZ25lZCBjaGFyIGMgKTsKdW5zaWduZWQgY2hhciBjbWRbNF0gPSB7MHg1MiwweEUwLDB4RUZ9Owp1bnNpZ25lZCBjaGFyIGJpdFsyXTsKdm9pZCBzZW5kX2NtZCh1bnNpZ25lZCBjaGFyICpjbWQsIHVuc2lnbmVkIHNob3J0IGxlbikKewoJdW5zaWduZWQgc2hvcnQgaTsKCXVuc2lnbmVkIHNob3J0IGNyYyA9IDA7CgljcmMgPSBDYWxjdWxhdGVDaGFyYWN0ZXJDUkMxNigwLDB4MDIpOwoJZm9yIChpPTA7IGk8bGVuOyBpKyspCgl7CgkJLy9zZW5kX2J5dGUoKmNtZCk7CgkJY3JjID0gQ2FsY3VsYXRlQ2hhcmFjdGVyQ1JDMTYoY3JjLCpjbWQrKyk7CgkJYml0WzBdID0gKGNyYz4+OCk7CgkJYml0WzFdID0gY3JjOwoKCX0KCXByaW50ZigiZmlyc3RbJXhdLi5zZWNbJXhdIixiaXRbMF0sYml0WzFdKTsKfQpzaG9ydCBnZW5jcmNfMTYoc2hvcnQgaSkKewoJc2hvcnQgajsKCXNob3J0IGs7CglzaG9ydCBjcmM7CglrID0gaSA8PCA4OwoJY3JjID0gMDsKCWZvciAoIGogPSAwIDsgaiA8IDggOyBqKysgKSAKCXsKCQlpZiAoICggY3JjIF4gayApICYgMHg4MDAwICkKCQljcmMgPSAoIGNyYyA8PCAxICkgXiAweDEwMjE7CgkgZWxzZQoJCWNyYyA8PD0gMTsKCQlrIDw8PSAxOwoJfQoJcmV0dXJuKGNyYyk7Cn0KdW5zaWduZWQgc2hvcnQgQ2FsY3VsYXRlQ2hhcmFjdGVyQ1JDMTYoIHVuc2lnbmVkIHNob3J0IGNyYywgdW5zaWduZWQgY2hhciBjICkKewpyZXR1cm4oICggY3JjIDw8IDggKSBeIGdlbmNyY18xNiggKGNyYyA+PiA4ICkgXiBjICkgKTsKfQppbnQgbWFpbih2b2lkKSB7CnNlbmRfY21kKGNtZCwzKTsKCXJldHVybiAwOwp9Cg==