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

📄 misc.c

📁 智能水表程序 来着互联网
💻 C
字号:
//-----------------------------------------------------------------------------
// misc.c
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// Misc Routines
//-----------------------------------------------------------------------------
/*
char TwoASCIIToChar (char* w)
{
    return (*w & 0x0f + *(w + 1) & 0x0f);
}

int CharToTwoASCII (char c)
{
    int rtn = 0;
    return ((((rtn | (c & 0xf0)) << 4) | 0x3000) | (rtn | (c & 0x0f) | 0x30));
}

int WordSwap(int input)
{
	return (((input & 0x00FF) << 8)|((input & 0xFF00) >> 8));
}

char TwoASCIIToOneBCD (char* w)
{
    return ((*w << 4) & 0xf0 + *(w + 1) & 0x0f);
}

char TwoBCDToHex (char c)
{
	return (((c & 0xf0) >> 4) * 10 + (c & 0x0f));
}

char HexToTwoBCD_ (char c)
{
	char rtn = 0;
	return rtn = 0xf0 & ((c / 10) << 4) | 0x0f & (c % 10);
}

long HexToSevenBCD_ (long l)
{
	long rtn = 0;
    rtn |= 0x0000000f & (((l / 1) % 1) << 1);
    rtn |= 0x000000f0 & (((l / 10) % 10) << 4);
    rtn |= 0x00000f00 & (((l / 100) % 10) << 8);
    rtn |= 0x0000f000 & (((l / 1000) % 10) << 12);
    rtn |= 0x000f0000 & (((l / 10000) % 10) << 16);
    rtn |= 0x00f00000 & (((l / 100000) % 10) << 20); 
    rtn |= 0x0f000000 & (((l / 1000000) % 10) << 24);
	return rtn;
}

long SevenBCDToHex_ (long l)
{
	return ( (0x0000000f & l) >> 1)  * 1 +
            ((0x000000f0 & l) >> 4)  * 10 +
            ((0x00000f00 & l) >> 8)  * 100 +
            ((0x0000f000 & l) >> 12) * 1000 +
            ((0x000f0000 & l) >> 16) * 10000 +
            ((0x00f00000 & l) >> 20) * 100000 +
            ((0x0f000000 & l) >> 24) * 1000000 );
} 
*/
long BCD_Hex (long ll, char n)
{
	char i;
	long e = 1;
	long rtn = 0;
	long mask = 0x0000000f;
	long buf;

	for ( i = 0; i < n; i++ )
	{
		buf = ( mask & ll ) >> ( 4 * i );
		rtn += buf * e;
		e *= 10;
		mask <<= 4;
	}
	return rtn;
}

long Hex_BCD (long ll, char n)
{
	char i;
	long e = 1;
	long rtn = 0;
	long mask = 0x0000000f;
	long buf;

	for ( i = 0; i < n; i++ )
	{
		buf = ll / e;
		buf %= 10;
		rtn |= mask & ( buf << ( 4 * i ));
		e *= 10;
		mask <<= 4;
	}
	return rtn;
}
// use for big endian or least endian mcu
long Array_Long ( unsigned char * p, unsigned char i )
{
	long rtn = 0;

	if ( i > 4 ) return rtn;
	for ( ; i > 0; i--) { rtn |= *p++; if ( i > 1 ) rtn <<= 8; }
//	while ( i-- ) {	rtn |= *p++; if ( i > 0 ) rtn <<= 8; }
//	while ( --i ) {	rtn |= *p++; if ( i > 0 ) rtn <<= 8; }
//	do { rtn |= *p++; if ( i > 1 ) rtn <<= 8; } while ( i-- ); // 200000
//	do { rtn |= *p++; if ( i > 1 ) rtn <<= 8; } while ( --i );
	return rtn;
}

⌨️ 快捷键说明

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