下面这个是温度查表程序,我在IAR编译成三星的,运行正常,在PICC编译下,用PICKIT3仿真,烧录都卡住了,仿真的时候发现程序判断完这句后 else if(code==temp_code) 直接跳到了difft=upper-lower; ,然后一直在这里循环出不来了,请教一下大家,是什么问题造成的
我用的是MPLAB 8.80 PICC 9.80 芯片是PIC16F1937
unsigned char get_inc_table_index(unsigned int code)
{
unsigned char lower=0;
unsigned char upper=199;
unsigned char difft=0;
unsigned char new_index;
unsigned int temp_code;
if(code>=temp_inc_index_code[199])
{
return 199;
}
else if(code<=temp_inc_index_code[0])
{
return 0;
}
else
{
difft=upper-lower;
while(difft>1)
{
new_index=(difft>>1)+lower;
temp_code=temp_inc_index_code[new_index];
if(code>temp_code)
{
lower=new_index;
}
else if(code==temp_code)
{
return new_index;
}
else
{
upper=new_index;
}
difft=upper-lower;
}
if((code-temp_inc_index_code[lower])>(temp_inc_index_code[upper]-code))
{
return upper;
}
else
{
return lower;
}
}
} |