當SK_Data_KHz調到190的時候,SK_Data_KHz_switch=0,SK_PWM=632 ,第0位發生溢出。
已經檢查了好幾次,關閉eeprom,刷了幾次程序還是溢出。
后面發現地址錯了一位,就是往前了一位。現在SK_Data_KHz=250 ,實際對應該SK_Data_KHz_switch=59;SK_PWM[59]=482.
當SK_Data_KHz=190時,SK_PWM數據為空 溢出。
不知為何會減1,就是加載的時候已以發生錯誤。
unsigned int SK_Data_KHz=250; //默認頻率25K 每次加0.1
unsigned char SK_Data_KHz_switch=60; //默認 地址
// 0 1 2 3 4 5 6 7 8 9 10
// 190 191 192 193 194 195 196 197 198 199 200
code unsigned int SK_PWM[101]={ 632, 628, 625, 622, 619, 615, 612 ,609, 606 ,603, 600,
// 11 12 13 14 15 16 17 18 19 20
// 201 202 203 204 205 206 207 208 209 210
597, 594, 591, 588, 585, 583, 580, 577, 574, 571,
// 21 22 23 24 25 26 27 28 29 30
// 211 212 213 214 215 216 217 218 219 220
569, 566, 563, 561, 558, 556, 553, 550, 548, 545,
// 31 32 33 34 35 36 37 38 39 40
// 221 222 223 224 225 226 227 228 229 230
543, 541 ,538, 536, 533, 531, 529, 526, 524, 522,
// 41 42 43 44 45 46 47 48 49 50
// 231 232 233 234 235 236 237 238 239 240
519, 517, 515, 513, 511, 508, 506, 504, 502, 500,
// 51 52 53 54 55 56 57 58 59 60
// 241 242 243 244 245 246 247 248 249 250
498, 496, 494, 492, 490, 488, 486, 484, 482, 480,
..............};
switch(buf[1])
{
case 0x71:
if( buf[3]==0x01 ) //后臺頻率加+
{
memset(buf, 0, 18); //清空緩存區
if(SK_Data_KHz<280)
{
SK_Data_KHz++;
SK_Data_KHz_switch++;
SK_HZ_satar(SK_PWM[SK_Data_KHz_switch]);
send_string(ASCII_Data_add,18);
}
break;
}
if( buf[3]==0X02 ) //后臺頻率加-
{
memset(buf, 0, 18); //清空緩存區
if(SK_Data_KHz>190)
{
SK_Data_KHz--; //當SK_Data_KHz=190溢出
SK_Data_KHz_switch--;
SK_HZ_satar(SK_PWM[SK_Data_KHz_switch]);
send_string(ASCII_Data_subtract,18);
}
break;
}
if( buf[3]==0x03 ) //返回保存
{
memset(buf, 0, 18); //清空緩存 |