找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 511|回復: 4
打印 上一主題 下一主題
收起左側

程序不正確,請教一下

[復制鏈接]
跳轉到指定樓層
樓主
ID:734017 發(fā)表于 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;
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:277550 發(fā)表于 2025-4-18 09:12 | 只看該作者
第一次上電,指新的mcu、未初始化的mcu?

EEPROM 初始值 是 0xff的吧。
回復

使用道具 舉報

板凳
ID:734017 發(fā)表于 2025-4-18 12:04 | 只看該作者
devcang 發(fā)表于 2025-4-18 09:12
第一次上電,指新的mcu、未初始化的mcu?

EEPROM 初始值 是 0xff的吧。

是的,初始k=0;可不行
回復

使用道具 舉報

地板
ID:1109793 發(fā)表于 2025-4-18 12:48 | 只看該作者
不懂,是啥芯片?EE_RAM_PAR是eeprom的數(shù)據(jù)?
回復

使用道具 舉報

5#
ID:1137639 發(fā)表于 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;     } }     
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表