標(biāo)題: 這段單片機(jī)代碼判斷失效 求大佬解惑 [打印本頁]

作者: 下一站過后    時間: 2024-3-31 11:59
標(biāo)題: 這段單片機(jī)代碼判斷失效 求大佬解惑
unsigned char  Positional_Selection()//位選:選擇更改位{

        if(Key()==2)
        {
               
                Bit_selection++;
               
        }
        
        if(Bit_selection>5)
        {
               
                Bit_selection=0;
        
        }

        
        return Bit_selection;
}
按下按鈕后
if(Key()==2)
        {

                Bit_selection++;

        }

這段代碼判斷失效
求各位大佬幫忙看下到底是哪出了問題

DS1302時鐘顯示 - 可調(diào)時鐘.rar

60.28 KB, 下載次數(shù): 6


作者: chxelc    時間: 2024-3-31 17:23
這段代碼對應(yīng)的IO是P30,查下有沒有上拉?或者你把這個與正常的按鍵IO交換一下,就對判斷是軟件問題還是硬件問題了。
作者: 下一站過后    時間: 2024-3-31 17:47
chxelc 發(fā)表于 2024-3-31 17:23
這段代碼對應(yīng)的IO是P30,查下有沒有上拉?或者你把這個與正常的按鍵IO交換一下,就對判斷是軟件問題還是硬 ...

謝謝回復(fù),排查過了不是硬件問題
作者: xiaobendan001    時間: 2024-3-31 17:53
可能key()永遠(yuǎn)不會等于2,被編譯器忽略了
作者: 下一站過后    時間: 2024-3-31 18:06
xiaobendan001 發(fā)表于 2024-3-31 17:53
可能key()永遠(yuǎn)不會等于2,被編譯器忽略了

謝謝你的回復(fù),Key()這個函數(shù)的返回值里是可以等于2的這個我測試過了

作者: zhuls    時間: 2024-3-31 19:25
要看你key()的代碼和硬件電路連接。。
作者: 下一站過后    時間: 2024-4-1 11:20
zhuls 發(fā)表于 2024-3-31 19:25
要看你key()的代碼和硬件電路連接。。

謝謝你的回復(fù),用的是普中的開發(fā)板,硬件應(yīng)該沒有什么問題
作者: xiaobendan001    時間: 2024-4-1 12:31
if(Bit_selection>5)
        {
               
                Bit_selection=0;
        
        }
這部分有被編譯嗎?KEY()里面的代碼發(fā)出來看看吧

作者: mtt661    時間: 2024-4-1 12:51
  1. 按下按鈕后
  2. if(Key()==2)
  3.         {

  4.                 Bit_selection++;

  5.         }

  6. 這段代碼判斷失效
復(fù)制代碼


你確定這個代碼是失效了,還是Bit_selection一直在++
作者: zhuls    時間: 2024-4-1 13:29
下一站過后 發(fā)表于 2024-4-1 11:20
謝謝你的回復(fù),用的是普中的開發(fā)板,硬件應(yīng)該沒有什么問題

KEY()里面的代碼呢?
作者: 下一站過后    時間: 2024-4-1 20:31
zhuls 發(fā)表于 2024-4-1 13:29
KEY()里面的代碼呢?

#include <REGX51.H>
#include "Delay.h"       
unsigned char Key()
{
        unsigned char KeyNumber=0;
       
        if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}
        if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;}
        if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;}
        if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;}
       
        return KeyNumber;
}
       

作者: 下一站過后    時間: 2024-4-1 20:31
mtt661 發(fā)表于 2024-4-1 12:51
你確定這個代碼是失效了,還是Bit_selection一直在++

謝謝回復(fù),
沒失效
作者: 下一站過后    時間: 2024-4-1 20:32
mtt661 發(fā)表于 2024-4-1 12:51
你確定這個代碼是失效了,還是Bit_selection一直在++

#include <REGX51.H>
#include "Delay.h"       
unsigned char Key()
{
        unsigned char KeyNumber=0;
       
        if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}
        if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;}
        if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;}
        if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;}
       
        return KeyNumber;
}
       
這是Key里面的代碼麻煩大佬給看看

作者: cy009    時間: 2024-4-2 00:07
你的模塊化不完善,.h文件有了但沒包含,等于沒有呵




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