找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)智能小車的時(shí)候按鍵切換程序問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:709389 發(fā)表于 2020-4-20 18:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
30黑幣
單片機(jī)小白求助,我做智能小車的時(shí)候按鍵切換,切換到音樂模式的時(shí)候,我想的是在按一下他就停止,但是播放了音樂他就停不下來了。有大佬幫我看看出在哪嗎。附上代碼

  1. void music(void)   
  2. {

  3.    unsigned char t1;
  4.         unsigned char p,m;   //m為頻率常數(shù)變量   
  5.   unsigned char i=0;   
  6.   TMOD&=0x0f;   
  7.   TMOD|=0x01;   
  8.   TH0=0xd8;TL0=0xef;   
  9.   IE=0x82;   
  10. play:   
  11.    while(1)   
  12.     {   
  13.     a:          p=music_tab[i];
  14.        if(p==0x00)       { i=0, delay4(1000); goto play;}     //如果碰到結(jié)束符,延時(shí)1秒,回到開始再來一遍   
  15.        else if(p==0xff)  { i=i+1;delay4(100),TR0=0; goto a;}  //若碰到休止符,延時(shí)100ms,繼續(xù)取下一音符   
  16.             else         {m=music_tab[i++], n=music_tab[i++];}//取頻率常數(shù) 和 節(jié)拍常數(shù)   
  17.                                                         TR0=1;                                             //開定時(shí)器1   
  18.            while(n!=0) Beep=~Beep,delay3(m);                         //等待節(jié)拍完成, 通過P1口輸出音頻(可多聲道哦!)   
  19.        TR0=0;                                             //關(guān)定時(shí)器1   
  20.     }   
  21.         }


  22. void main()                               //主程序入口
  23. {

  24.   bit RunFlag=0;                          //定義小車運(yùn)行標(biāo)志位
  25. // LedFlash=3000;                                       //對(duì)閃燈數(shù)據(jù)進(jìn)行初始化
  26. // EX1=1;                                               //同意開啟外部中斷1
  27.   IT1=1;                                               //設(shè)定外部中斷1為低邊緣觸發(fā)類型
  28.   EA=1;                                                //總中斷開啟
  29.   tingzhi();   
  30.         //初始化小車運(yùn)行狀態(tài)
  31.         
  32.   while(1)                                //程序主循環(huán)
  33.   {
  34.              if(P3_2 == 0)
  35.           {
  36.            delay_nms(10);
  37.            if(P3_2 == 0)
  38.            {
  39.                      temp++;
  40.                   while(!P3_2);
  41.            }
  42.           }
  43.           if(temp > 4)
  44.           {
  45.           temp = 1;
  46.           }
  47.           switch(temp)
  48.           {
  49.                     case 1:Beep=1;tingzhi();break;        
  50.                                 
  51.                 case 2:Robot_Avoidance();EX1 = 0;break; //ShowPort = LedShowData[2];
  52.                         
  53.                 case 3://SB1 = 1;
  54.                                                 EX1 = 1;break;//ShowPort = LedShowData[3];
  55.                 case 4:tingzhi();music();EX1=1;break;
  56.                
  57.           }

  58.   }
  59. }
復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:236035 發(fā)表于 2020-4-21 13:34 | 只看該作者
如果tingzhi()是關(guān)閉音樂,那你貼出來的代碼沒問題。就應(yīng)該單獨(dú)測(cè)試一下播放音樂和停止音樂。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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