wt13568089592 发表于 2015-11-18 12:44:14

求教51单片机除法计算问题。

本帖最后由 wt13568089592 于 2015-11-18 12:45 编辑

我写了这么一个函数,stc15w408as上运行,我采集2路AD,一路是431的,用来校准,可是算出的ntc——val值很小。Get_ADC10bitResult(2)=445,Get_ADC10bitResult(1)=518;ntc_val=Get_ADC10bitResult(2)*2495/Get_ADC10bitResult(1);        这一句算出来的值只有100以下,正常情况下应该算出来是2000++的啊?
求解
void NTC_temperature()
{
        unsigned long int ntc_val;
        unsigned char a;
        ntc_val=Get_ADC10bitResult(2)*2495/Get_ADC10bitResult(1);       
//        TxSend(Get_ADC10bitResult(1));
        for(a=0;wendubiao>ntc_val;a++)//查表计算室温
{
   if(a>=135)//如果超出表的范围就取允许的最高温度(105度)
   break;//并且退出查表
}
        shiwen=a;

}
求解啊?       

lcw_swust 发表于 2015-11-18 13:24:24

Get_ADC10bitResult改为(unsigned long)Get_ADC10bitResult

wt13568089592 发表于 2015-11-18 14:01:02

谢谢啊

小李非刀 发表于 2015-11-19 21:44:03

你拿16位的变量做大数值的运算,溢出了。可以强转32位:
ntc_val = (u32)Get_ADC10bitResult(2)*2495/Get_ADC10bitResult(1);

另外,NTC是相对测量,不需要测量实际的电压。
页: [1]
查看完整版本: 求教51单片机除法计算问题。