久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

新人求助關(guān)于單片機暫停鍵的問題

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:326331 發(fā)表于 2018-5-29 20:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 xiaomanong 于 2018-5-30 21:37 編輯

     我想請教一下大家,我的代碼具體要怎樣修改才能實現(xiàn)下圖的“暫停鍵”的暫停(第一次按下)和繼續(xù)播放(第二次按下)功能?我已經(jīng)嘗試網(wǎng)上的好多種方法了,但是都不行。要不就是按下停止播放但是手一放開就繼續(xù)播放了;要不就是能暫停但是退不出來,再按其他鍵也沒反應(yīng);要不就是直接又初始化了,都沒能達到暫停/播放的功能。
     表達能力不太好, 文字也比較多,大家辛苦了。謝謝大家
   電子板如下

代碼
   
     if(K2==0){//K2為暫停鍵
     mydelay(50);
    m++;
    if(m==2)
    m=0;}
     if(m%2==0){
    BeepIO=1;
     }
      else
           BeepIO=0;
    // return;
      while(m%2){
      if(K2==0){
      mydelay(50);
      m++;
      BeepIO=1;}
      else
      BeepIO=0;
      }

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

使用道具 舉報

沙發(fā)
ID:111634 發(fā)表于 2018-5-30 06:49 | 只看該作者
本帖最后由 zl2168 于 2018-5-30 06:53 編輯

我有一個案例,一鍵三用,可用于你參考。不要把冗長程序貼上來,別人吃飽飯不會看的,要緊的是自己下功夫。
實例93  99.9秒秒表

Proteus仿真一下,確認有效。 實例95 99.9秒秒表.rar (38.86 KB, 下載次數(shù): 33)
以上摘自張志良編著《80C51單片機仿真設(shè)計實例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機應(yīng)用100案例,用于仿真實驗操作,書中電路和程序設(shè)計有詳細說明,電路與程序真實可靠可信可行,程序語句條條有注解。
回復(fù)

使用道具 舉報

板凳
ID:61765 發(fā)表于 2018-5-30 08:40 | 只看該作者
做硬件抖動處理沒
回復(fù)

使用道具 舉報

地板
ID:164602 發(fā)表于 2018-5-30 09:12 | 只看該作者
程序太長,沒有時間看,但你的問題我明白了:播放音樂時,怎么按鍵暫停和繼續(xù)播放。
我做過這事兒,方法是:
第一:搞懂音樂播放函數(shù)的每條語句,重點是讀懂哪些語句在讀取音樂數(shù)據(jù),數(shù)據(jù)指針是哪些變量——這是最關(guān)鍵的一環(huán),沒有這一步,其它的都不談了。
第二:不能用一般的按鍵操作,要用外部中斷。這樣才能適時打斷原來程序,控制音樂的播放。
第三:在中斷服務(wù)函數(shù)中,設(shè)置狀態(tài)變量——判斷按鍵的奇偶,奇次暫停,偶次播放;保存環(huán)境——音樂數(shù)據(jù)讀取到哪里了;設(shè)置播放函數(shù)的執(zhí)行條件——如:為1才播放,為0則不播放。
第四:在音樂播放函數(shù)中,使用中斷中的設(shè)置,控制音樂播放函數(shù)的執(zhí)行或暫停。
回復(fù)

使用道具 舉報

5#
ID:341113 發(fā)表于 2018-5-30 09:44 | 只看該作者
你看一下我的

秒計數(shù)器原理圖.rar

40.91 KB, 下載次數(shù): 45

回復(fù)

使用道具 舉報

6#
ID:241128 發(fā)表于 2018-5-30 09:47 | 只看該作者
你把這段代碼注釋掉:
if(K2==0){//K2為暫停鍵
     mydelay(50);
    m++;
    if(m==2)
    m=0;}
     if(m%2==0){
    BeepIO=1;
     }
      else
           BeepIO=0;
然后換成下面這個試試:
if(K2==0){ BeepIO^=BeepIO}
回復(fù)

使用道具 舉報

7#
ID:326331 發(fā)表于 2018-5-30 10:18 來自手機 | 只看該作者
zl2168 發(fā)表于 2018-5-30 06:49
我有一個案例,一鍵三用,可用于你參考。不要把冗長程序貼上來,別人吃飽飯不會看的,要緊的是自己下功夫。 ...

好的,謝謝你。
回復(fù)

使用道具 舉報

8#
ID:326331 發(fā)表于 2018-5-30 15:14 | 只看該作者
fzhlpp 發(fā)表于 2018-5-30 09:47
你把這段代碼注釋掉:
if(K2==0){//K2為暫停鍵
     mydelay(50);

還是不行呢。
回復(fù)

使用道具 舉報

9#
ID:326331 發(fā)表于 2018-5-30 15:17 | 只看該作者
亣靨 發(fā)表于 2018-5-30 08:40
做硬件抖動處理沒

做了的。
回復(fù)

使用道具 舉報

10#
ID:326331 發(fā)表于 2018-5-30 15:18 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2018-5-30 09:12
程序太長,沒有時間看,但你的問題我明白了:播放音樂時,怎么按鍵暫停和繼續(xù)播放。
我做過這事兒,方法是 ...

好的,超級感謝。
回復(fù)

使用道具 舉報

11#
ID:241128 發(fā)表于 2018-5-30 16:28 | 只看該作者
同時也要把下面的那段去掉:
while(m%2){
      if(K2==0){
      mydelay(50);
      m++;
      BeepIO=1;}
      else
      BeepIO=0;
      }
這段跟上段是一樣的,不知道你弄個m變量做什么用。你實際操作的時候是不是有時能暫停有時暫停不了....
回復(fù)

使用道具 舉報

12#
ID:241128 發(fā)表于 2018-5-31 09:11 | 只看該作者
本帖最后由 fzhlpp 于 2018-5-31 10:18 編輯

if(K2==0)                         //1.按鍵確定按下后執(zhí)行下面延時
         {
             mydelay(50);         //2.延時結(jié)束后執(zhí)行下面m+1
             m++;                         //3.這條語句執(zhí)行完后m的值應(yīng)該為1(一般初始化變量為0,這個值要看樓主初始化的值)
             if(m==2)                 //4.執(zhí)行到這里時因為m=1,所以不會執(zhí)行他下面的那條語句
             m=0;                         //5.這里不會被執(zhí)行
         }
if(m%2==0)                           //6.然后程序執(zhí)行到這里,因為現(xiàn)在的m=1,1除以2的余數(shù)不為0,那么這條語句的條件不成立它里面的語句不被執(zhí)行
         {
             BeepIO=1;                 //7.這里不會被執(zhí)行
     }
     else                                   //8.上面的不成立那么就執(zhí)行這條語句下面的BeepIO=0;
        BeepIO=0;                    //9.程序運行到這里執(zhí)行這條語句,應(yīng)該就是樓主的暫停吧
     while(m%2)                         //10.然后程序往下走到這里,因為m%2不為0,所以執(zhí)行循環(huán)里面的語句
         {
              if(K2==0)                // 11.再次判斷按鍵是不是還是按下的
          {
              mydelay(50);         //12.如果按鍵還是按下的那么這條延時就執(zhí)行了
              m++;                     //13.如果按鍵按下的那么這條語句也執(zhí)行了,執(zhí)行完這條語句后m=2
              BeepIO=1;             //14.如果按鍵按下的那么這條語句也執(zhí)行了,執(zhí)行完這條語句,播放又啟動了
          }
              else                     //15.上面的按鍵判斷成立下面的就不會執(zhí)行了
             BeepIO=0;
     }


如果我上面的分析正確的話,不難發(fā)現(xiàn)實際操作的時候按下按鍵始終都在播放沒有暫停,當(dāng)然程序是有暫停執(zhí)行過,看我第9條注釋 。
         只不過暫停后馬上又播放了,樓主可以把延時函數(shù)的時間加長看看就能證實這點。按鍵按住的時間不同暫停和播放的出現(xiàn)概率不同。
         歡迎拍磚...

回復(fù)

使用道具 舉報

13#
ID:241128 發(fā)表于 2018-5-31 09:20 | 只看該作者
本帖最后由 fzhlpp 于 2018-5-31 10:20 編輯

把你上面的全部刪掉用下面的代換,你可能是在按鍵釋放這塊沒做處理,所以出現(xiàn)隨機執(zhí)行功能問題。


static char key_state = 0;//這個放在你按鍵掃描函數(shù)里開始的地方
if(K2==0)
{
key_state = 1;
BeepIO^=BeepIO;
}
else  key_state = 0;//按鍵釋放
回復(fù)

使用道具 舉報

14#
ID:341944 發(fā)表于 2018-5-31 09:31 來自手機 | 只看該作者
第一:搞懂音樂播放函數(shù)的每條語句,重點是讀懂哪些語句在讀取音樂數(shù)據(jù),數(shù)據(jù)指針是哪些變量——這是最關(guān)鍵的一環(huán),沒有這一步,其它的都不談了。 第二:不能用一般的按鍵操作,要用外部中斷。這樣才能適時打斷原來程序,控制音樂的播放。 第三:在中斷服務(wù)函數(shù)中,設(shè)置狀態(tài)變量——判斷按鍵的奇偶,奇次暫停,偶次播放;保存環(huán)境——音樂數(shù)據(jù)讀取到哪里了;設(shè)置播放函數(shù)的執(zhí)行條件——如:為1才播放,為0則不播放。 第四:在音樂播放函數(shù)中,使用中斷中的設(shè)置,控制音樂播放函數(shù)的執(zhí)行或暫停。
回復(fù)

使用道具 舉報

15#
ID:320754 發(fā)表于 2018-5-31 09:33 | 只看該作者
這個感覺還是用中斷處理按鍵比較好,設(shè)成上升或下降沿觸發(fā)
回復(fù)

使用道具 舉報

16#
ID:191910 發(fā)表于 2018-5-31 09:35 | 只看該作者
你可以做一個中間變量,當(dāng)狀態(tài)反轉(zhuǎn)后,再去處理控制管腳
static unsigned char key_state = 0;
if(K2==0)
{
   while(K2==0);
   key_state =!key_state ;
}
if(key_state == 1)
BeepIO = 1;
else
BeepIO = 0;
回復(fù)

使用道具 舉報

17#
ID:326331 發(fā)表于 2018-6-1 11:13 | 只看該作者
dengyifenzhong 發(fā)表于 2018-5-31 09:35
你可以做一個中間變量,當(dāng)狀態(tài)反轉(zhuǎn)后,再去處理控制管腳
static unsigned char key_state = 0;
if(K2==0) ...

已經(jīng)解決了,謝謝你。
回復(fù)

使用道具 舉報

18#
ID:326331 發(fā)表于 2018-6-1 11:14 | 只看該作者
lvyou223 發(fā)表于 2018-5-31 09:33
這個感覺還是用中斷處理按鍵比較好,設(shè)成上升或下降沿觸發(fā)

嗯嗯,已經(jīng)解決了,謝謝你
回復(fù)

使用道具 舉報

19#
ID:326331 發(fā)表于 2018-6-1 11:17 | 只看該作者
fzhlpp 發(fā)表于 2018-5-31 09:11
if(K2==0)                         //1.按鍵確定按下后執(zhí)行下面延時
         {
             mydelay(50);         //2.延時結(jié)束后執(zhí)行下面m+1

哇哇,感動,你的講解和分析太細致全面了,謝謝你哦,我已經(jīng)解決了。嘻嘻嘻,開心。
回復(fù)

使用道具 舉報

20#
ID:326331 發(fā)表于 2018-6-1 11:20 | 只看該作者
問題已經(jīng)解決了,開心,超級感謝大家的幫助,感動筆芯
回復(fù)

使用道具 舉報

21#
ID:326331 發(fā)表于 2018-6-1 11:25 | 只看該作者
fzhlpp 發(fā)表于 2018-5-31 09:20
把你上面的全部刪掉用下面的代換,你可能是在按鍵釋放這塊沒做處理,所以出現(xiàn)隨機執(zhí)行功能問題。

壇友互動那里我還沒有權(quán)限回復(fù)你的消息,問題已經(jīng)解決了,超級感謝
回復(fù)

使用道具 舉報

22#
ID:269211 發(fā)表于 2018-6-3 16:19 | 只看該作者
用定時器就可以了,按1次TR=0,再按1次 TR=1
回復(fù)

使用道具 舉報

23#
ID:344079 發(fā)表于 2018-6-3 16:51 | 只看該作者
這里有好多大神 相信你的問題能得到解決
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 三级欧美 | 精品久久久久久 | 国产在线精品一区二区三区 | 精品欧美色视频网站在线观看 | 欧美色视频免费 | caoporn国产精品免费公开 | 国产精品高清一区二区三区 | 亚洲欧美日韩系列 | 欧美激情视频一区二区三区在线播放 | 成人免费淫片aa视频免费 | 一级看片免费视频囗交动图 | 日韩欧美福利视频 | 国产永久免费 | 黑人巨大精品 | 99久久精品一区二区成人 | 亚洲不卡在线观看 | 亚洲二区在线 | 91视频大全 | 色综合天天天天做夜夜夜夜做 | 一区精品视频在线观看 | 亚洲最大av网站 | 国产成人精品在线播放 | 色免费视频 | 欧美精品一 | 久久四虎| 成人毛片网 | 欧美日韩1区 | 亚洲精品福利视频 | 国产成人a亚洲精品 | 在线视频中文字幕 | 亚洲小视频在线播放 | 亚洲欧美日韩精品久久亚洲区 | 国产精品久久久久aaaa樱花 | 成人a视频 | 成人精品国产一区二区4080 | 免费一级毛片 | 91精品在线观看入口 | 成人精品一区二区 | a毛片 | 国产精品久久久久久久免费观看 | 日韩美av |