📄 netcomm.c
字号:
/******************************************************************/
/*Copyright (C), 2008-2009, 力天电子,LiTian Tech.Co.Ltd. */
/* Module Name : ENC28J60 */
/* File Name : netcomm.c */
/* Author : 侯长波 */
/* Create Date : 2009/10/1 */
/* Version : 1.0 */
/* Function : */
/* Description : */
/* Support : www.LT430.com QQ:903175306 */
/******************************************************************/
unsigned int chksum(unsigned char *check,unsigned int size)
{
unsigned int i;
unsigned char temp_H,temp_L,temp;
unsigned long sum = 0;
unsigned char *ptr = (unsigned char *)check;
for (i = 0; i < (size) / 2; i++)
{
temp_H=*ptr++;
temp_L=*ptr++;
temp= (temp_H<<8) | temp_L;
sum += temp;
}
if (size & 0x01) //表示长度为单数
{
sum += ((*ptr)&0xff);
}
sum = (sum & 0xffff) + ((sum>>16)&0xffff);//高16位和低16位相加
if(sum&0xffff0000)
{//表示有进位
sum++;
}
return ((unsigned int)((sum)&0xffff));
}
unsigned int Swap16U(unsigned int data16u)
{
unsigned int a;
a = data16u >> 8;
a += ((data16u & 0xFF) << 8);
return a;
}
unsigned long Add16U(unsigned int a, unsigned int b)
{
unsigned long tmp;
tmp = (((unsigned long)Swap16U(a)) << 16) + ((unsigned long)Swap16U(b));
return tmp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -