编辑代码

#include <stdio.h>
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;
}