checksum.c

来自「AVR红外遥控」· C语言 代码 · 共 22 行

C
22
字号
#include "cc.h"

u8_t checksum(u8_t *mbuf, u8_t len){	
	u8_t sum8;
	u16_t sum16, tmp;

	for (sum16 = 0; len > 0; len--){
		sum16 += (u16_t)*mbuf++;
    }

	// First: proccess CY
	tmp = (sum16 >> 8) & 0x00ff;
	sum16 = (sum16 & 0x00ff) + tmp;
	// Second: since CY may be happend , proccess CY again 
	tmp = (sum16 >> 8) & 0x00ff;
	sum16 = (sum16 & 0x00ff) + tmp;
	// if len <= 0xff, CY must be not happend, reassuring to get checksum
	sum8 = (u8_t)sum16;

	return ~sum8;
}																		  

⌨️ 快捷键说明

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