亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3705|回復: 9
收起左側

關于51單片機用兩個獨立按鍵分別控制一個LED燈亮滅時的問題

[復制鏈接]
ID:1056086 發表于 2022-12-11 10:14 | 顯示全部樓層 |閱讀模式
            
我的思路是在我按下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;
                }               
        }               
}       

回復

使用道具 舉報

ID:86450 發表于 2022-12-11 11:10 | 顯示全部樓層
加個  else
pppp.png

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:1055461 發表于 2022-12-11 13:07 | 顯示全部樓層
換個if語句
回復

使用道具 舉報

ID:584814 發表于 2022-12-11 14:49 | 顯示全部樓層
1、消抖的寫法有問題,程序在按鍵20ms后并不檢測按鍵狀態,僅起到延時作用;
2、貌似不是二樓加 ELSE 的問題,理論上加不加的兩個條件判斷都可以順序執行。
回復

使用道具 舉報

ID:401564 發表于 2022-12-11 18:13 | 顯示全部樓層
雖然不是完美的代碼,但邏輯上是沒有問題的
加不加else都沒有關系
看一下硬件電路和單片機其它的代碼
最好是有原理圖和全部的代碼
回復

使用道具 舉報

ID:213173 發表于 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);
                        }               
                }               
        }   
}
回復

使用道具 舉報

ID:1056086 發表于 2022-12-13 16:31 | 顯示全部樓層

謝謝指點,謝謝
回復

使用道具 舉報

ID:1056086 發表于 2022-12-13 16:32 | 顯示全部樓層

謝謝指點,謝謝
回復

使用道具 舉報

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

謝謝指點,謝謝
回復

使用道具 舉報

ID:1056086 發表于 2022-12-13 16:34 | 顯示全部樓層
wulin 發表于 2022-12-11 19:26
void main()
{
        while(1)

謝謝指點,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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