#include <stdio.h>
#include <stdint.h>
uint16_t crc_dsp(uint16_t reg,unsigned char data_crc)
{
unsigned char reghigh;
uint16_t msb;
uint16_t data;
uint16_t gx=0xA001,i=0;
reghigh = (reg&0xff00)>>8;
data = data_crc;
reg = reghigh^data;
do
{
msb = reg&0x0001;
reg = reg>>1;
if(msb == 0x0001)
{
reg = reg^gx;
}
i++;
}
while(i<8);
return(reg);
}
char test_212[] = "##0372QN=20000303021401000;ST=22;CN=2011;PW=123456;MN=YCJC130133043001;Flag=5;\
CP=&&DataTime=20000303021401;a34001-Rtd=0,a34001-Flag=N;a34002-Rtd=0,a34002-Flag=N;a01001-Rtd=0,a01001-Flag=N;\
a01002-Rtd=0,a01002-Flag=N;a01006-Rtd=0,a01006-Flag=N;a01007-Rtd=0,a01007-Flag=N;a01008-Rtd=0,a01008-Flag=N;\
a01012-Rtd=0,a01012-Flag=N;a01013-Rtd=0,a01013-Flag=N;a01014-Rtd=0,a01014-Flag=N&&";
unsigned char temp[4];
int main () {
uint16_t Register = 0xFFFF;
int i;
printf("Hello world! - c.jsrun.net.\n");
printf("%d\n",sizeof(test_212)-1);
for(i = 6; i < (sizeof(test_212)-1); i++)
{
Register = crc_dsp(Register, test_212[i]);
}
temp[0] = ((Register >> 12) & 0xf);
temp[1] = ((Register >> 8) & 0x0f);
temp[2] = ((Register >> 4) & 0x0f);
temp[3] = (Register & 0x0f);
for(i = 0; i < 4; i++)
{
if(temp[i] > 9)
{
temp[i] = temp[i] + 0x37;
}
else
{
temp[i] = temp[i] + 0x30;
}
}
printf("temp0 = 0x%c\n",temp[0]);
printf("temp0 = 0x%c\n",temp[1]);
printf("temp0 = 0x%c\n",temp[2]);
printf("temp0 = 0x%c\n",temp[3]);
return 0;
}