Files
CHJ/user/Utility/user_math.c

113 lines
2.7 KiB
C
Raw Permalink Normal View History

2026-03-20 21:16:58 +08:00
#include "../main/SystemInclude.h"
TypeSecondary Secondary;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCD<43><44><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38>,ÿ<><C3BF><EFBFBD><EFBFBD>λ<EFBFBD>󶼼<EFBFBD><F3B6BCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λLSD+3<>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>7,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3,<2C><><EFBFBD>򲻼<EFBFBD>,<2C><>4λMSD<53><44>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
//void ConvertWordHEXToBCD(u16 convertHex)
//{
//u32 convertHex;
// for(I=0; I<16; I++)
// {
//
//
// }
//
//
//}
/******************************************************************************/
u8 BCDToHEX(u8 BCDBuffer)
{
return (((BCDBuffer & 0xf0)>>4)*10 + (BCDBuffer & 0x0f));
}
/******************************************************************************/
u16 HEXToBCD(u8 HEXBuffer)
{
u16 tempBCD;
tempBCD = HEXBuffer/100;
HEXBuffer -= tempBCD * 100;
tempBCD <<= 4;
tempBCD |= HEXBuffer / 10;
HEXBuffer -= (tempBCD & 0x000f) * 10;
tempBCD <<= 4;
tempBCD |= HEXBuffer;
return tempBCD;
//return ((((u16)HEXBuffer / 100) << 8) | ((HEXBuffer / 10) << 4) | (HEXBuffer % 10));
}
/******************************************************************************/
void ConvertHEXToBCDArray(u32 convertHex, u8 *resultPointer, u16 covertLen, u16 order)
{
u16 I;
s16 adrBuf;
u32 covertBuf;
if(order == LOW_FIRST) adrBuf = 1;
else
{
resultPointer += covertLen-1;
adrBuf = -1;
}
for(I=0; I<covertLen; I++)
{
covertBuf = convertHex / (u32)10;
*resultPointer = (u8)(convertHex-covertBuf*10);
convertHex = covertBuf;
resultPointer += adrBuf;
//if(order == LOW_FIRST) resultPointer++;
//else resultPointer--;
}
}
/******************************************************************************/
s32 SecondaryCompute(void)
{
f32 fTemp;
tmpSLA = (s32)Secondary.ValueH;
tmpSLA -= (s32)Secondary.ValueL;
fTemp = (float)tmpSLA;
tmpSLB = Secondary.NodeX;
tmpSLB -= Secondary.NodeL;
//tmpSLA *= tmpSLB;
fTemp *= (float)tmpSLB;
tmpSLB = Secondary.NodeH;
tmpSLB -= Secondary.NodeL;
//tmpSLA /= tmpSLB;
if(tmpSLB != 0) fTemp /= (float)tmpSLB;
else return 0;
tmpSLA = (s32)fTemp;
tmpSLA += (s32)Secondary.ValueL;
//if(tmpSLA < 0) return 0;
//else return (u16)tmpSLA;
return tmpSLA;
}
2026-03-20 21:19:53 +08:00
//<2F><><EFBFBD><EFBFBD><EBB4A6>-------------------------------------------------------------
u16 WordSubFunction(u16 minuend, u16 subtractor)
{
u16 subResult;
subResult = minuend - subtractor;
if(minuend >= subtractor)
{
if(subResult < 32768) subResult += 32768;
else subResult = 65535;
}
else
{
if(subResult < 32768) subResult = 0;
else subResult -= 32768;
}
return subResult;
}