本帖最后由 KuMo_2011 于 2014-7-25 11:23 编辑
#include "temp.h"
#include "stm8s_gpio.h"
const u16 TEMP_TABLE_5k[101]=
{
0x2F6,//0
.
.
.
0x057,
};
u8 FindTemp(u16 mAD,u16 *mTemp)
{
s16 mResult;
u8 mLeft,mMiddle,mRight; //左值、中值、右值
mLeft=0;
mRight=100;
方法1
/*
while(mRight>mLeft)
{
mMiddle=(mRight+mLeft)/2;
if(mAD<TEMP_TABLE_5k[mMiddle])
{
if(mAD<TEMP_TABLE_5k[mMiddle+1])
{
mLeft=mMiddle+1;
}else
{
break;
}
}else
{
mRight=mMiddle;
}
}
*/
方法2
///*
while(mRight>mLeft)
{
mMiddle=(mRight+mLeft)/2;
if(mAD>TEMP_TABLE_5k[mMiddle])
{
if(mAD>TEMP_TABLE_5k[mMiddle-1])
{
mRight=mMiddle-1;
}else
{
break;
}
}else
{
mLeft=mMiddle;
}
}
//*/
mResult=mMiddle*10;//+(TEMP_TABLE_5k[mMiddle]-mAD)*10 /(TEMP_TABLE_5k[mMiddle]-TEMP_TABLE_5k[mMiddle+1]);
*mTemp=mResult;
return 1;
}
问题描述:
本人想用 二分法差NTC温度,NTC是负温度系数的热敏电阻,个人认为方法1和方法2都能实现目的,但结果方法2动不动 貌似就会死循环,请教一下大家,方法2是哪里我写错了吗?
子程序附件
temp.zip
(799 Bytes)
|