📄 misc.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 + -