int main () {
int a[46]= {\
64964,64788,64568,64296,
63968,63572,63072,62272,\
61768,60944,59992,58856,\
57568,56120,54512,52748,\
50784,48684,46460,44140,\
41728,39260,36772,34296,\
31856,29464,27188,25000,\
22928,20968,19120,17444,\
15908,14472,13140,11948,\
10868,9896,8992,8164,\
7436,6808,6300,5900,\
5620,5500};
// 4060,4049,4036,4019,\
// 3998,3973,3942,3892,\
// 3861,3809,3750,3679,\
// 3598,3508,3407,3297,\
// 3174,3043,2904,2759,\
// 2608,2454,2298,2144,\
// 1991,1842,1699,1563,\
// 1433,1311,1195,1090,\
// 994,905,821,747,\
// 680,619,562,510,\
// 465,426,394,369,\
// 351,344};
// 16241,16197,16142,16074,\
// 15992,15893,15768,15568,\
// 15442,15236,14998,14714,\
// 14392,14030,13628,13187,\
// 12696,12171,11615,11035,\
// 10432,9815,9193,8574,\
// 7964,7366,6797,6250,\
// 5732,5242,4780,4361,\
// 3977,3618,3285,2987,\
// 2717,2474,2248,2041,\
// 1859,1702,1575,1475,\
// 1405,1375};
static int division_index = 272; //16 multipication of res_table data,0->-140 degree
static int ad_result_sum = 50784; //initiated as 24 degree
static int tmp = 1000;//AD值
static int temp = 0;
static int tmp1 = 400;//循环次数
int volt_division;
int table_index;
while(tmp1--){
table_index = division_index >> 4;
ad_result_sum = ad_result_sum - (ad_result_sum >> 4)
+ tmp; //16 ave filter
volt_division = a[table_index]
- ((a[table_index]
- a[table_index + 1]) >> 4)
* (division_index % 16);
if (ad_result_sum < volt_division) { //temp higher
if (division_index < (45 * 16 - 2)) {
division_index++;
}
} else {
if (division_index > 0) {
division_index--;
}
}
temp = division_index/4 - 40; //accuracy=0.25
printf("tmp1 = %d\n" ,tmp1);
printf("table_index = %d\n" ,table_index);
printf("ad_result_sum = %d\n" ,ad_result_sum);
printf("volt_division = %d\n" ,volt_division);
printf("division_index = %d\n" ,division_index);
printf("temp = %d\n\n" ,temp);
}
return 0;
}