⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cksum.c

📁 51avr tcpip http协议
💻 C
字号:
/*
;-------------------------------------------------------------------------
; CKSUM.A51
;
; This computes the internet checksum on an 8051
;
; Call from C program: UINT cksum(UCHAR xdata * buf, UINT length);
; Where * buf is pointer to first char (must be in xdata space)
; and "length" is number of bytes (not words) to sum over
;-------------------------------------------------------------------------
*/

#include "net.h"
#include "timer.h"


UINT cksum(UCHAR *check,UINT length) //计算校验和
{
	UINT i;
	UINT *ptr=(UINT*)check;
	ULONG sum=0;
    
	for (i=0;i<length/2;i++)
//	   sum += 0xffff&swapint(*ptr++);
//	if (length&0x01)sum += 0xff00&swapint(*ptr);//表示长度为单数	////!!!!	
	   sum += 0xffff&*ptr++;
	if (length&0x01)sum += 0xff&*ptr;//表示长度为单数	////!!!!	
	sum=(sum&0xffff)+((sum>>16)&0xffff);//高16位和低16位相加
	if(sum&0xffff0000)sum++;//表示有进位
	return (UINT)sum;
//	return swapint(sum&0xffff);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -