找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2909|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

一個C語言開關(guān)程序問題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:393245 發(fā)表于 2019-8-25 00:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問一個開關(guān)問題:
    if(P1^0 == 0)
        {
            delayms(10);
            if(P1^0 == 0)
                {
                      P0^0 = 1 ;
                }
        }

我想在這個開關(guān)設(shè)置一個計數(shù)程序,計數(shù)10次。
就是說按下10次后,不管有沒有按下,P0^0   都沒有輸出(P0^0 = 0)。
怎么編寫?

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

使用道具 舉報

沙發(fā)
ID:568565 發(fā)表于 2019-8-25 06:08 來自手機 | 只看該作者
定義一個p=0   if (p1^0==0)    delay..     if  p1..{p++;if  p=10{p0*0=0    p=0}else p0*0=1}
回復(fù)

使用道具 舉報

板凳
ID:568565 發(fā)表于 2019-8-25 06:10 來自手機 | 只看該作者
p到底是9還是10我沒仔細推,要是我編程序的話我會這樣,沒實際實驗過不知道能不能行的通
回復(fù)

使用道具 舉報

地板
ID:123289 發(fā)表于 2019-8-25 13:05 | 只看該作者
太笨,不適合選單片機行業(yè)。
回復(fù)

使用道具 舉報

5#
ID:458699 發(fā)表于 2019-8-25 13:21 | 只看該作者
要計數(shù)就加一個計數(shù)標(biāo)志位,判斷標(biāo)志位,滿足條件就對應(yīng)輸出就行了
回復(fù)

使用道具 舉報

6#
ID:393245 發(fā)表于 2019-8-26 22:18 | 只看該作者
chenyinhu 發(fā)表于 2019-8-25 06:08
定義一個p=0   if (p1^0==0)    delay..     if  p1..{p++;if  p=10{p0*0=0    p=0}else p0*0=1}

試過了,
沒有效果
回復(fù)

使用道具 舉報

7#
ID:393245 發(fā)表于 2019-8-26 22:19 | 只看該作者
aaaaabangw 發(fā)表于 2019-8-25 13:21
要計數(shù)就加一個計數(shù)標(biāo)志位,判斷標(biāo)志位,滿足條件就對應(yīng)輸出就行了

能不能舉個例子呀
謝謝
回復(fù)

使用道具 舉報

8#
ID:393245 發(fā)表于 2019-8-26 22:20 | 只看該作者
yzwzfyz 發(fā)表于 2019-8-25 13:05
太笨,不適合選單片機行業(yè)。

我知道我笨
不用你說
回復(fù)

使用道具 舉報

9#
ID:592379 發(fā)表于 2019-8-27 10:01 | 只看該作者
if(pcount<10)  
{
  if(P1^0 == 0)
        {
            delayms(10);
pcount++;
            if(P1^0 == 0)
                {
                      P0^0 = 1 ;
                }
        }
}
else
{
P0^0 = 0;
}
回復(fù)

使用道具 舉報

10#
ID:235200 發(fā)表于 2019-8-27 11:40 | 只看該作者
if(P1^0 == 0)                 //按鍵按下
        {
            delayms(10);       //消抖
            if(P1^0 == 0)     //再次判斷按鈕按下
                {
                      count++;       //計數(shù)
                      if (count==10)
                      {
                         P0^0 = ~P0^0 ;            //求反輸出
                         count=0;
                       }
                }
        }
//注意P0口是否接了上拉電阻,如果未接,可能實現(xiàn)不了輸出高電平
回復(fù)

使用道具 舉報

11#
ID:603976 發(fā)表于 2019-8-27 16:09 | 只看該作者
if( P1^0 == 0)                 //按鍵按下
{
        delayms(10);       //消抖
        if(P1^0 == 0)     //再次判斷按鈕按下
          {
                if( keycount <10)
               {
                   keycount++;       //計數(shù)
                   P0^0 = 1;
                }
                else
                P0^0 = 0;
            }
        }
}
//說按下10次后,不管有沒有按下,P0^0   都沒有輸出(P0^0 = 0)
回復(fù)

使用道具 舉報

12#
ID:213173 發(fā)表于 2019-8-27 17:31 | 只看該作者
這段代碼明顯是樓主想當(dāng)然寫的。判斷一個開關(guān)或按鍵不可能對P1全部端口測試,所以 if(P1^0 == 0)并不是異或運算表達式,而是樓主想判斷P1.0端口的電平。要寫成 sbit key = P1^0; if(key == 0)......
回復(fù)

使用道具 舉報

13#
ID:604484 發(fā)表于 2019-8-27 21:20 | 只看該作者
你的計數(shù)呢
回復(fù)

使用道具 舉報

14#
ID:389919 發(fā)表于 2019-8-29 15:48 | 只看該作者
小伙子們,這個功能函數(shù)如果不加松手檢測可能會持續(xù)累加按鍵次數(shù),根本不能正常計數(shù)
回復(fù)

使用道具 舉報

15#
ID:529540 發(fā)表于 2019-8-31 16:29 | 只看該作者
14# 加一,應(yīng)該在松手檢測后計數(shù)位++
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表