void Disp_Signed_Long(long Value)
{
unsigned int i;
unsigned long Output;
char fNeg = 0;
if (Value < 0) // Test for negative value
{
Value = -Value; // Negate value
fNeg = 1; // Set negative flag
}
for (i = 32, Output = 0; i; i--) // BCD Conversion, 32-Bit
{
Output = __bcd_add_long(Output, Output); //功能:两个 32 位 BCD 格式的数相加,返回和。
if (Value & 0x80000000)
Output = __bcd_add_long(Output, 1);
Value <<= 1;
}
if (fNeg) // Display neg sign?
Output |= 0x80000000; // Bit 31 indicates neg. number
Disp_BCD(Output);
}
value是AD转换之后采集到的数值
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
请具体说明一下,AD转换后的值是一个16位数,这样变换后的ouput是什么
//------------------------------------------------------------------------------
// Displays the BCD number 'Value' on the LCD display
//------------------------------------------------------------------------------
void Disp_BCD(unsigned long Value)
{
LCDM5=LCD_Tab1[Value & 0x0f];
Value >>= 4;
LCDM4=LCD_Tab1[Value & 0x0f];
Value >>= 4;
LCDM3=LCD_Tab3[Value & 0x0f];
LCDM2=LCD_Tab2[Value & 0x0f];
Value >>= 4;
LCDM2 |= LCD_Tab3[Value & 0x0f];
LCDM1=LCD_Tab2[Value & 0x0f];
if(p_to_p)
LCDM1 |=0x08;
LCDM4 |= 0x10; //小数点
}
应该是数值的转化
一周热门 更多>