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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2014|回復: 2
打印 上一主題 下一主題
收起左側

單片機音樂播放控制不了

[復制鏈接]
跳轉到指定樓層
樓主
大神門幫我看看這個程序,仿真時一運行音樂就開始播放了,我想通過一個按鍵來控制播放,可是我不管怎么加條件還是控制不了,急急急

#include "reg51.h"
unsigned char Count;
sbit _Speak =P1^0 ;
unsigned char code SONG[] ={      //祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00};

void Time0_Init()
{
TMOD = 0x01;
IE   = 0x82;
TH0  = 0xD8;
TL0  = 0xEF;  //12MZ晶振,10ms
}

void Time0_Int() interrupt 1
{
TH0 = 0xD8;
TL0 = 0xEF;
Count++;   //長度加1
}

/*-------------------------------------------------
功能:1MS延時子程序
-------------------------------------------------*/
void Delay_xMs(unsigned int x)
{
    unsigned int i,j;
    for( i =0;i < x;i++ )
    {
        for( j =0;j<3;j++ );
    }
}

void Play_Song(unsigned char i)
{
unsigned char Temp1,Temp2;
unsigned int Addr;
Count = 0;      //中斷計數器清0
Addr = i * 217;
while(1)
{
  Temp1 = SONG[Addr++];
     if ( Temp1 == 0xFF )          //休止符
     {
      TR0 = 0;
      Delay_xMs(100);
     }
     else if ( Temp1 == 0x00 )   //歌曲結束符
     {
      return;
     }
     else
     {
      Temp2 = SONG[Addr++];
      TR0 = 1;
     while(1)
     {
       _Speak = ~_Speak;
       Delay_xMs(Temp1);
       if ( Temp2 == Count )
       {
        Count = 0;
        break;
       }
      }
     }
}
}
/*-------------------------------------------------
功能:主程序
-------------------------------------------------*/
void main()
{
Time0_Init();   //定時器0中斷初始化
while(1)
{
  Play_Song(0);  //播放
}
}

新建壓縮(zipped)文件夾.zip

57.61 KB, 下載次數: 4

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

使用道具 舉報

沙發
ID:160834 發表于 2018-4-6 13:07 | 只看該作者
在你 sbit  _Speak =P1^0 ; 下面加一個按鈕定義。 sbit   KEY1 =P1^1;

void main()
{
    Time0_Init();   //定時器0中斷初始化
   while(1)
{
    if (KEY1 == 0)
   {
     //這里可以加個延時作消抖。
      Play_Song(0);  //播放
   }
  }
}

你的程序已仿真試過。沒有問題。程序加上紅色部分就可以一個按鈕控制播了。

回復

使用道具 舉報

板凳
ID:277480 發表于 2018-4-6 20:18 來自手機 | 只看該作者
QIANLILI 發表于 2018-4-6 13:07
在你 sbit  _Speak =P1^0 ; 下面加一個按鈕定義。 sbit   KEY1 =P1^1;

void main()

好的謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日夜夜操天天干 | www.色.com| 国产一区二区在线免费观看 | 精品欧美二区 | 精品一级 | 国产蜜臀| 午夜视频一区二区三区 | 国产精品久久久久久二区 | 一级无毛片 | 国产成人精品久久久 | 综合欧美亚洲 | 国产欧美一区二区精品久导航 | 成人在线免费视频观看 | 亚洲一区二区三区免费在线 | 久久一二区| 国产乱码一二三区精品 | 国产精品mv在线观看 | 久久91精品国产一区二区 | 伊人伊成久久人综合网站 | 久久精品一区 | 日日摸天天添天天添破 | 国产精品一二三区 | 日韩欧美亚洲 | 一区二区日韩精品 | 91在线免费视频 | 宅女噜噜66国产精品观看免费 | 色橹橹欧美在线观看视频高清 | 国产a区 | 欧美在线高清 | 在线视频成人 | 国产高清美女一级a毛片久久w | 久草在线高清 | 午夜精品网站 | 成人片免费看 | 精品国产91乱码一区二区三区 | 伊人超碰| 日韩欧美在线视频一区 | 国产免费观看视频 | 欧美精品在线观看 | 免费在线视频精品 | 欧美一区二区三区久久精品视 |