亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? beep.c

?? 一個很好的音樂發生程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
//**************************************************************************//
//   
//   程序名:     單片機音樂智能播放
//   晶  振:     11.0592MHZ                            CPU型號: AT89S52
//   功能描述:   實現單片機音樂的播放.音樂播放首數的顯示.個性簽名的間斷顯
//               示.播放時間的間斷顯示.跑馬等伴奏閃爍.暫停-開始功能鍵使用
//   參考文獻:   HTTP://WWW.MCUBLOG.COM的署名為JJJ(Jiang Jian Jun)的作品
//                                            
//
//
//                                                 寂寞高手--令狐沖
//                                                    2006-05-28
//**************************************************************************//
//該程序被稍作修改以適應本學習板配置
//////////////////////////////////////////////////////////////////////////////
#include<reg52.h>                                      

#ifndef __SOUNDPLAY_H_REVISION_FIRST__
#define __SOUNDPLAY_H_REVISION_FIRST__
#define SYSTEM_OSC   11059200                    //定義晶振頻率11059200HZ
#define SOUND_SPACE  4/5        //定義普通音符演奏的長度分率,//每4分音符間隔
  /**************************************************************************/
sbit P1_0 = P0 ^ 0;                  //對跑馬燈的定義使用
sbit P1_1 = P0 ^ 1;	
sbit P1_2 = P0 ^ 2;
sbit P1_3 = P0 ^ 3;
sbit P1_4 = P0 ^ 4;
sbit P1_5 = P0 ^ 5;
sbit P1_6 = P0 ^ 6;
sbit P1_7 = P0 ^ 7;

sbit P3_4 = P1 ^ 0;                 //對功能鍵的定義使用
sbit P3_5 = P1 ^ 1;                 
 
/**************************************************************************/
unsigned int code FreTab[12]  = { 262,277,294,311,330,349,369,392,415,440,466,494 }; 
//原始頻率表
unsigned char code SignTab[7]  = { 0,2,4,5,7,9,11 };           //1~7在頻率表中的位置
unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };      
unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定時器初值暫存 
unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音長定時器初值暫存
sbit    BeepIO =  P3^7;//定義輸出管腳 
  /**************************************************************************/
unsigned char Count=0;                            //0.05秒的變量定義
unsigned int  del;                                //過渡變量
unsigned int tcnt;                                 //過渡變量
unsigned int numble=0;                            //歌曲曲數的定義
unsigned char  min=0, sec=0;                      //1秒鐘 1分鐘的定義
  /**************************************************************************
  對整個中斷系統的設置
  為了得到較好的音效,定時器0和定時器1用于音樂播放子程序
                      初值都為10MS
  定時器2 用于播放時間的間斷顯示子程序,初值為50MS
**************************************************************************/
void InitialSound(void)
{
 BeepIO = 0;
     Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 計算TL1應裝入的初值  
 Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; // 計算TH1應裝入的初值 
 TH1 = Sound_Temp_TH1;
 TL1 = Sound_Temp_TL1;
 TMOD  |= 0x11;
 ET0    = 1;
 ET1    = 0;
 TR0    = 0;
 TR1    = 0;

 RCAP2H = 0x2c;                      //對定時器2的初始化的定義使用
 RCAP2L = 0x13;
 TH2 = 0x2c;                          // 定時器初值
 TL2 = 0x13; 
 ES = 0;                              // 關閉通信中斷
 ET2 = 1;                             // 允許T2中斷
 T2CON = 0X04;
 EA = 1;
}



void BeepTimer0(void) interrupt 1         //音符發生中斷
{
 BeepIO = !BeepIO;
 TH0    = Sound_Temp_TH0;
 TL0    = Sound_Temp_TL0;
}

void timer2Int(void) interrupt 5            //時鐘發生中斷
{
 TF2 = 0;                             // 溢出標志必須由軟件清零
 EXF2 = 0;                            // 捕獲標志必須由軟件清零
 Count++;
 if(Count==20)
  {  
   sec++;
   Count=0;
  }
 if(sec==60)
  {
   min++;
   sec=0;
  }
}



/*說明**********************************************************************
  曲譜存貯格式 unsigned char code MusicName{音高,音長,音高,音長...., 0,0};
  末尾:0,0 表示結束(Important)

  音高由三位數字組成:
    個位是表示 1~7 這七個音符 
    十位是表示音符所在的音區:1-低音,2-中音,3-高音;
    百位表示這個音符是否要升半音: 0-不升,1-升半音。
 
  音長最多由三位數字組成: 
    個位表示音符的時值,其對應關系是: 
     |數值(n):  |0 |1 |2 |3 | 4 | 5 | 6 
     |幾分音符: |1 |2 |4 |8 |16 |32 |64   音符=2^n
    十位表示音符的演奏效果(0-2):  0-普通,1-連音,2-頓音
    百位是符點位: 0-無符點,1-有符點

  調用演奏子程序的格式
    Play(樂曲名,調號,升降八度,演奏速度);
  |樂曲名           : 要播放的樂曲指針,結尾以(0,0)結束;
  |調號(0-11)       : 是指樂曲升多少個半音演奏;
  |升降八度(1-3)   : 1:降八度, 2:不升不降, 3:升八度;
  |演奏速度(1-12000): 值越大速度越快;
***************************************************************************/


/**************************************************************************/
void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)
{
 unsigned int NewFreTab[12];  //新的頻率表
 unsigned char i,j;
 unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;
 unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;

 
 for(i=0;i<12;i++)     // 根據調號及升降八度來生成新的頻率表 
 {
  j = i + Signature;
  if(j > 11)
  {
   j = j-12;
   NewFreTab[i] = FreTab[j]*2;
  }
  else
   NewFreTab[i] = FreTab[j];


  if(Octachord == 1)
   NewFreTab[i]>>=2;
  else if(Octachord == 3)
   NewFreTab[i]<<=2;
 }         
 
 SoundLength = 0;
 while(Sound[SoundLength] != 0x00) //計算歌曲長度
 {
  SoundLength+=2;
 }


 Point = 0;
 Tone   = Sound[Point]; 
 Length = Sound[Point+1];    // 讀出第一個音符和它時時值
 
 LDiv0 = 12000/Speed;    // 算出1分音符的長度(幾個10ms)  
 LDiv4 = LDiv0/4;      // 算出4分音符的長度 
 LDiv4 = LDiv4-LDiv4*SOUND_SPACE;  // 普通音最長間隔標準 
 TR0   = 0;
 TR1   = 1;
 while(Point < SoundLength)
 {
  SL=Tone%10;         //計算出音符 
  SM=Tone/10%10;         //計算出高低音 
  SH=Tone/100;         //計算出是否升半 
  CurrentFre = NewFreTab[SignTab[SL-1]+SH];  //查出對應音符的頻率  
  if(SL!=0)
  {
   if (SM==1) CurrentFre >>= 2;   //低音 
   if (SM==3) CurrentFre <<= 2;   //高音
   Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//計算計數器初值
   Sound_Temp_TH0 = Temp_T/256; 
   Sound_Temp_TL0 = Temp_T%256; 
   TH0 = Sound_Temp_TH0;  
   TL0 = Sound_Temp_TL0 + 12; //加12是對中斷延時的補償 
  }
  SLen=LengthTab[Length%10];  //算出是幾分音符
  XG=Length/10%10;    //算出音符類型(0普通1連音2頓音) 
  FD=Length/100;
  LDiv=LDiv0/SLen;    //算出連音音符演奏的長度(多少個10ms)
  if (FD==1) 
   LDiv=LDiv+LDiv/2;
  if(XG!=1) 
   if(XG==0)     //算出普通音符的演奏長度 
    if (SLen<=4) 
     LDiv1=LDiv-LDiv4;
    else
     LDiv1=LDiv*SOUND_SPACE;
   else
    LDiv1=LDiv/2;   //算出頓音的演奏長度 
  else
   LDiv1=LDiv;
  if(SL==0) LDiv1=0;
   LDiv2=LDiv-LDiv1;   //算出不發音的長度 
    if (SL!=0)
  {
   TR0=1;
   for(i=LDiv1;i>0;i--)  //發規定長度的音 
   {
    while(TF1==0);
    TH1 = Sound_Temp_TH1;
    TL1 = Sound_Temp_TL1;
    TF1=0;
  }
/*************************************************************************
功能鍵子程序,直接嵌入音樂播放程序之中
P1-0 P1-1 P1-2 P1-3 P1-4 P1-5 P1-6 P1-7六個跑馬燈實現發出每個音符時的間斷閃爍
P3-4 P3-5兩鍵 實現暫停和開始的功能
為以后的二次開發,特留下兩個功能鍵  以備后用
*************************************************************************/
   {
   if(i==1*LDiv1/1024)
       {P1_0=0;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_6=1;P1_7=1;}
   if(i==51*LDiv1/1024)
       {P1_0=0;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_6=1;P1_7=1;}
   if(i==101*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=1;P1_4=1;P1_5=1;P1_6=1;P1_7=1;}
   if(i==151*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=1;P1_5=1;P1_6=1;P1_7=1;}
   if(i==201*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=0;P1_5=1;P1_6=1;P1_7=1;}
   if(i==251*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=0;P1_5=0;P1_6=1;P1_7=1;}
   if(i==301*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=0;P1_5=0;P1_6=1;P1_7=1;}
   if(i==351*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=0;P1_5=0;P1_6=0;P1_7=1;}
   if(i==401*LDiv1/1024)
       {P1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=0;P1_5=0;P1_6=0;P1_7=0;}

   if(P3_4==0)
      for(i=300;i>0;i--) 
        for(j=300;j>0;j--);
           if(P3_4==0)
             EA=0;
   if(P3_5==0)
      for(i=300;i>0;i--) 
        for(j=300;j>0;j--);
           if(P3_5==0)
             EA=1;
}

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人高清| 日韩一区精品字幕| jizz一区二区| 国产精品毛片久久久久久| 成+人+亚洲+综合天堂| 国产精品嫩草影院av蜜臀| 99视频精品全部免费在线| 亚洲精品自拍动漫在线| 欧美片在线播放| 蜜臀精品一区二区三区在线观看| 日韩写真欧美这视频| 国产一区二区三区免费| 1区2区3区精品视频| 欧美日韩精品一区二区三区 | 国产欧美中文在线| www.欧美精品一二区| 一区二区三区.www| 日韩午夜在线播放| 成人av影视在线观看| 亚洲影院免费观看| 精品电影一区二区三区| 成人免费毛片a| 亚洲国产成人av| 精品久久久久久无| 91色porny在线视频| 日本不卡视频在线观看| 国产欧美日产一区| 欧美日韩国产电影| 国产风韵犹存在线视精品| 亚洲美女视频一区| 精品国产91亚洲一区二区三区婷婷| 成人av免费在线观看| 日本中文在线一区| 国产精品短视频| 欧美一区二区免费| 一本久久综合亚洲鲁鲁五月天| 美女视频黄 久久| 亚洲男人都懂的| 久久久91精品国产一区二区精品| 在线观看亚洲精品视频| 国产成人在线视频网站| 婷婷综合久久一区二区三区| 亚洲国产精品激情在线观看| 欧美一区二区三区日韩| 91视频xxxx| 国产91精品一区二区麻豆网站| 天堂在线一区二区| 亚洲精品欧美在线| 国产丝袜美腿一区二区三区| 欧美日本乱大交xxxxx| 成人国产一区二区三区精品| 裸体歌舞表演一区二区| 一区二区三区四区不卡在线| 中文幕一区二区三区久久蜜桃| 欧美变态tickle挠乳网站| 欧美日韩高清一区二区不卡| 91丝袜美腿高跟国产极品老师| 韩国欧美国产1区| 美腿丝袜亚洲三区| 五月婷婷色综合| 一区二区三区在线免费视频| 免播放器亚洲一区| 石原莉奈在线亚洲二区| 一区二区欧美视频| 亚洲乱码中文字幕综合| 中文字幕亚洲欧美在线不卡| 国产亚洲精品福利| 久久这里只有精品视频网| 日韩一级在线观看| 4438成人网| 91精品国产免费| 欧美一区二区三区在线看| 69p69国产精品| 91麻豆精品国产91久久久久久久久 | 美女性感视频久久| 日韩二区在线观看| 免费在线看成人av| 免费看精品久久片| 麻豆国产欧美一区二区三区| 免费久久精品视频| 激情五月婷婷综合网| 精品一二三四区| 国产福利不卡视频| 成人av影院在线| 色中色一区二区| 欧美日韩中文字幕一区| 5858s免费视频成人| 精品国产伦一区二区三区免费 | 国产午夜精品一区二区三区四区| 久久理论电影网| 国产精品乱人伦| 樱花影视一区二区| 日韩影视精彩在线| 国产最新精品免费| 风流少妇一区二区| 色妞www精品视频| 欧美吻胸吃奶大尺度电影| 欧美一区二区黄| 久久久久久一级片| 亚洲少妇最新在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲福利视频三区| 国产伦精品一区二区三区免费| 成人免费高清视频在线观看| 欧美性一二三区| 欧美成人性福生活免费看| 日本一区二区电影| 亚洲福中文字幕伊人影院| 卡一卡二国产精品| 97久久精品人人做人人爽| 欧美美女一区二区三区| 久久久久久久av麻豆果冻| 亚洲欧美日韩一区二区三区在线观看| 日韩精品乱码av一区二区| 国产91精品免费| 欧美日韩国产123区| 国产亚洲一区字幕| 亚洲国产精品尤物yw在线观看| 精品午夜久久福利影院 | 亚洲男人天堂av| 久久99蜜桃精品| 色久综合一二码| 亚洲精品在线电影| 亚洲国产欧美另类丝袜| 国产成人在线免费观看| 欧美男女性生活在线直播观看| 国产欧美一区二区三区鸳鸯浴 | 成人免费视频播放| 91精品国产色综合久久 | 亚洲一区影音先锋| 国产成人亚洲综合a∨猫咪| 欧美色区777第一页| 中文字幕欧美国产| 蜜臀av性久久久久蜜臀aⅴ四虎 | 色婷婷一区二区三区四区| 精品国产91乱码一区二区三区| 亚洲综合一区二区| 成人av手机在线观看| 久久综合av免费| 日韩不卡手机在线v区| 一本一道波多野结衣一区二区 | 一区在线中文字幕| 九九在线精品视频| 欧美日韩成人综合在线一区二区 | 亚洲欧美日韩电影| 国产黄人亚洲片| 久久―日本道色综合久久| 爽好久久久欧美精品| 欧美午夜理伦三级在线观看| 中文字幕欧美区| 丁香亚洲综合激情啪啪综合| 精品少妇一区二区三区日产乱码 | **欧美大码日韩| 国产成人免费在线观看不卡| 欧美xfplay| 久久精品国产一区二区| 制服丝袜日韩国产| 日韩精品电影在线观看| 在线成人av影院| 午夜私人影院久久久久| 欧美在线一区二区三区| 一区二区三区在线视频观看58| a亚洲天堂av| 亚洲免费av在线| 91捆绑美女网站| 亚洲精品亚洲人成人网| 91九色02白丝porn| 亚洲精品欧美激情| 在线视频你懂得一区| 亚洲国产中文字幕| 在线观看91av| 久久国产成人午夜av影院| 精品少妇一区二区三区视频免付费 | 这里只有精品电影| 免费一级片91| 久久夜色精品一区| 从欧美一区二区三区| 国产精品久久久久久久久晋中 | 欧美中文字幕一区二区三区 | 成人丝袜18视频在线观看| 国产精品美女一区二区| 色综合色狠狠综合色| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩五月天| 蜜桃av噜噜一区二区三区小说| 精品奇米国产一区二区三区| 国产又黄又大久久| 综合电影一区二区三区 | 亚洲欧美怡红院| 欧美性极品少妇| 久久aⅴ国产欧美74aaa| 国产丝袜欧美中文另类| 色综合视频在线观看| 日韩激情中文字幕| 久久网站最新地址| 99精品欧美一区| 日韩影院精彩在线| 国产日韩欧美在线一区| 在线观看一区日韩| 精品在线一区二区三区|