1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #define TABLE_NUM (140)
unsigned short Bat_Table[TABLE_NUM] = { 3903, 3892, 3881, 3869, 3857, 3844, 3831, 3817, 3803, 3788, 3772, 3756, 3739, 3722, 3704, 3685, 3666, 3646, 3625, 3604, 3582, 3559, 3536, 3512, 3487, 3462, 3436, 3409, 3382, 3354, 3325, 3295, 3265, 3235, 3203, 3172, 3139, 3106, 3072, 3038, 3004, 2968, 2933, 2897, 2860, 2823, 2786, 2748, 2711, 2672, 2634, 2595, 2556, 2517, 2478, 2439, 2400, 2360, 2321, 2282, 2243, 2203, 2164, 2125, 2087, 2048, 2010, 1972, 1934, 1896, 1859, 1822, 1785, 1749, 1713, 1678, 1643, 1609, 1574, 1541, 1508, 1475, 1443, 1411, 1380, 1349, 1319, 1289, 1260, 1232, 1203, 1176, 1149, 1122, 1096, 1071, 1046, 1021, 997, 974, 951, 928, 906, 885, 864, 843, 823, 804, 784, 766, 747, 730, 712, 695, 679, 662, 646, 631, 616, 601, 587, 573, 559, 546, 533, 520, 508, 496, 484, 473, 462, 451, 440, 430, 420, 410, 401, 391, 382, 373
};
int adc_search(const unsigned short *arr, signed short left, signed short right, unsigned short x) { if (x >= arr[left]) { return left; } else if (x <= arr[right]) { return right; }
while (left <= right) { int mid = left + (right - left) / 2;
if (arr[mid] == x) { return mid; } else if (arr[mid] < x) { right = mid - 1; } else if (arr[mid] > x) { left = mid + 1; } }
unsigned short diff_left = (arr[left] > x) ? (arr[left] - x) : (x - arr[left]); unsigned short diff_right = (arr[right] > x) ? (arr[right] - x) : (x - arr[right]);
return (diff_left <= diff_right ? left : right); }
|