標題: 程序不正確,請教一下 [打印本頁]

作者: happy2058    時間: 2025-4-18 04:16
標題: 程序不正確,請教一下
u8 EE_RAM =0;  //eeprom取值


void Select_function(u8 EE_RAM_PAR)   //主菜單顯示
{         
                                u8 i,k,h=0;               
                                u8 l = 28;
                                u8 EE_RA_temp = EE_RAM_PAR;
                                        u8        order        =        EE_RAM_PAR;
           for(i = 0; i < 8; i++)
           {
                                
                     if(0 != (EE_RA_temp & 0x80))  //0X80 = 0B1000 0000
                                                {        
                                                k=k+1;                                                                                       
                                                }
                                                EE_RA_temp <<= 1;
           }

                 Loop_sending(k);
                        
                switch(k)                         第一次上電不知道為什么會運行,放個大于8的數(shù)也不行                                       
                        {
                        case 1 :for(i = 0; i < 8; i++)
                               {
                                    if(0 != (order & 0x80))
                                        {                                                                                                                                                         
                                             Combination_X = Combination_1X;
                                             Combination_y = Combination_1y;
                                               l += h;
                                               Loop_sending(l);
                                                                                                                                
                                                }               
                                           h++;
                                      order <<= 1;        
                                 }        
                                break;
default:break;
}
}


作者: devcang    時間: 2025-4-18 09:12
第一次上電,指新的mcu、未初始化的mcu?

EEPROM 初始值 是 0xff的吧。
作者: happy2058    時間: 2025-4-18 12:04
devcang 發(fā)表于 2025-4-18 09:12
第一次上電,指新的mcu、未初始化的mcu?

EEPROM 初始值 是 0xff的吧。

是的,初始k=0;可不行
作者: xiaobendan001    時間: 2025-4-18 12:48
不懂,是啥芯片?EE_RAM_PAR是eeprom的數(shù)據(jù)?
作者: 622323wjl    時間: 2025-4-18 20:50
問題分析 變量未初始化:k 變量在使用之前沒有進行初始化,這會使它的值是不確定的,可能會引發(fā)計算錯誤。 注釋不規(guī)范:部分注釋存在多余的空格,并且一些注釋沒有很好地解釋代碼的意圖。 代碼可讀性:代碼的格式不夠清晰,缺少必要的空格和縮進,這會對代碼的可讀性產生影響。#include <stdint.h>  // 假設這些變量在其他地方定義 extern uint8_t Combination_X; extern uint8_t Combination_y; extern uint8_t Combination_1X; extern uint8_t Combination_1y;  // eeprom取值 uint8_t EE_RAM = 0;  // 假設這個函數(shù)在其他地方定義 void Loop_sending(uint8_t value);  // 主菜單顯示 void Select_function(uint8_t EE_RAM_PAR) {     uint8_t i, k = 0, h = 0;     uint8_t l = 28;     uint8_t EE_RA_temp = EE_RAM_PAR;     uint8_t order = EE_RAM_PAR;      // 統(tǒng)計 EE_RAM_PAR 中最高位為 1 的位數(shù)     for (i = 0; i < 8; i++) {         if (0 != (EE_RA_temp & 0x80)) {             k++;         }         EE_RA_temp <<= 1;     }      Loop_sending(k);      switch (k) {         case 1:             for (i = 0; i < 8; i++) {                 if (0 != (order & 0x80)) {                     Combination_X = Combination_1X;                     Combination_y = Combination_1y;                     l += h;                     Loop_sending(l);                 }                 h++;                 order <<= 1;             }             break;         default:             break;     } }     




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1