amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 665|回复: 3

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

[复制链接]
发表于 2015-11-18 12:44:14 | 显示全部楼层 |阅读模式
本帖最后由 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[a]>ntc_val;a++)//查表计算室温
  {
   if(a>=135)//如果超出表的范围就取允许的最高温度(105度)
   break;//并且退出查表
  }
        shiwen=a;

}
求解啊?       
发表于 2015-11-18 13:24:24 | 显示全部楼层
Get_ADC10bitResult改为(unsigned long)Get_ADC10bitResult
 楼主| 发表于 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是相对测量,不需要测量实际的电压。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-19 09:15

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表