欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于51單片機用兩個獨立按鍵分別控制一個LED燈亮滅時的問題 [打印本頁]

作者: minkenei    時間: 2022-12-11 10:14
標題: 關于51單片機用兩個獨立按鍵分別控制一個LED燈亮滅時的問題
            
我的思路是在我按下K1時,經過消抖后led1亮起,然后我松手,結束這個if語句,此時led1繼續亮起,待我按下K2時,led熄滅,不過當我實踐起來時,按下K1確實亮起,松手依然亮,但是按下K2卻不會熄滅,并且按其他的(比如K1)沒有反應,沒有專門學過C語言,直接入手的單片機,感覺有常識性問題,求各位大佬指點。

#include <REGX52.H>

void Delay1ms(unsigned int xms)                //@12.000MHz
{
        unsigned char i, j;
        while(xms--)
{        i = 2;
        j = 239;
        do
        {
                while (--j);
        } while (--i);
}
       
}

void main()
{
        while(1)
        {
                        if(P3_1==0)
                {   Delay1ms(20);
                       
                        P2_0=0;
                       
                }       
                        if(P3_2==0)
                {
                        Delay1ms(20);
                        P2_0=1;
                }               
        }               
}       


作者: jjwangxu2008    時間: 2022-12-11 11:10
加個  else

pppp.png (17.36 KB, 下載次數: 99)

pppp.png

作者: 單卡單數據    時間: 2022-12-11 13:07
換個if語句

作者: man1234567    時間: 2022-12-11 14:49
1、消抖的寫法有問題,程序在按鍵20ms后并不檢測按鍵狀態,僅起到延時作用;
2、貌似不是二樓加 ELSE 的問題,理論上加不加的兩個條件判斷都可以順序執行。
作者: Y_G_G    時間: 2022-12-11 18:13
雖然不是完美的代碼,但邏輯上是沒有問題的
加不加else都沒有關系
看一下硬件電路和單片機其它的代碼
最好是有原理圖和全部的代碼
作者: wulin    時間: 2022-12-11 19:26
void main()
{
        while(1)
        {
                if(P3_1==0)
                {
                        Delay1ms(20);
                        if(P3_1==0)//延時后再次確認按下
                        {       
                                P2_0=0;
                                while(!P3_1);//等待松手
                        }      
                }
                if(P3_2==0)
                {
                        Delay1ms(20);
                        if(P3_2==0)
                        {
                                P2_0=1;
                                while(!P3_2);
                        }               
                }               
        }   
}
作者: minkenei    時間: 2022-12-13 16:31
jjwangxu2008 發表于 2022-12-11 11:10
加個  else

謝謝指點,謝謝
作者: minkenei    時間: 2022-12-13 16:32
單卡單數據 發表于 2022-12-11 13:07
換個if語句

謝謝指點,謝謝
作者: minkenei    時間: 2022-12-13 16:33
man1234567 發表于 2022-12-11 14:49
1、消抖的寫法有問題,程序在按鍵20ms后并不檢測按鍵狀態,僅起到延時作用;
2、貌似不是二樓加 ELSE 的問 ...

謝謝指點,謝謝
作者: minkenei    時間: 2022-12-13 16:34
wulin 發表于 2022-12-11 19:26
void main()
{
        while(1)

謝謝指點,謝謝




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