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

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

?? song_drv.c

?? atmel at89c51snd1 做mp3的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*C**************************************************************************
* NAME:         song_drv.c
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3      
* REVISION:     1.20     
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the song driver routines
*****************************************************************************/

/*_____ I N C L U D E S ____________________________________________________*/

#include "config.h"                         /* system configuration */
#include "dac\dac_drv.h"                    /* dac driver definition */
#include "lib_mcu\aud\aud_drv.h"            /* audio driver definition */
#include "lib_mcu\mp3\mp3_drv.h"            /* mp3 driver definition */
#include "modules\file\file.h"              /* file definition */
#include "lib_mcu\clock\clock.h"            /* clock definition */
#include "song_drv.h"                       /* song driver definition */


/*_____ M A C R O S ________________________________________________________*/


/*_____ D E F I N I T I O N ________________________________________________*/

        Byte    song_sound;                 /* save the selected sound */
        Byte    mp3_volume;
xdata   Uint16  song_frame_size;            /* Frame size value for one second  */
idata   Byte    sound_volume;               /* save actual sound level          */

/*_____ D E C L A R A T I O N ______________________________________________*/

static  void    song_audio_init (void);

code Uint16 song_tab_frame_size_00 [2][16] =
    {/* 44.1 KHz MPEG1 */
      {0, 104, 130, 156, 182, 208, 261, 313, 365, 417, 522, 626, 731, 835, 1044, 0},
     /* 22.05 KHz MPEG2 */
      {0,  26, 52, 78, 104, 130, 156, 182, 208,  261,  313, 365, 417, 470, 522, 0}
    };

code Uint16 song_tab_frame_size_01 [2][16] =
    {
    /* 48 Khz MPEG1 */
      {0, 96, 120, 144, 168, 192, 240, 288, 336, 384, 480, 576, 672, 768, 960, 0},
    /* 24 Khz MPEG2 */
      {0,  24, 48, 72, 96, 120, 144, 168, 192, 240, 288, 336, 384, 432, 480, 0}
    };

code Uint16 song_tab_frame_size_10 [2][16] =

    {/* 32 Khz MPEG1  */
      {0, 144, 180, 216, 252, 288, 360, 432, 504, 576, 720, 864, 1008, 1152, 1440, 0},
     /* 16 Khz MPEG2  */
      {0,  36, 72, 108, 144, 180, 216, 252, 288, 360, 432, 504, 576, 648, 720, 0}
    };
    

code Uint16 song_tab_seek [2][16]=
{
  {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0},
  {0,  8, 16, 24, 32, 40, 48, 56,  64,  80,  96, 112, 128, 144, 160, 0}
  
};


/*F**************************************************************************
* NAME: song_snd_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Sound control initialization
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   Initializes the sound controls to their medium value
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void song_snd_init (void)
{
  dac_init();
  dac_set_vol(mp3_volume = VOLUME_MED);
  MP3BAS = BASS_MED;
  MP3MED = MEDIUM_MED;
  MP3TRE = TREBLE_MED;

  song_sound = SND_VOLUME;          /* volume control selected by default */
}



/*F**************************************************************************
* NAME: song_snd_inc
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Increment the selected sound control
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   The number of the current selected sound control is stored in the
*   variable snd_select (0.Volume; 1.Bass; 2.Medium; 3. Trebble)
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void song_snd_inc (void)
{
  switch (song_sound)
  {
    case SND_VOLUME:
    if (mp3_volume != VOLUME_MAX)
    {
        if ((MP3CON&MSK_MPBBST) && (MP3VOL > VOLUME_MED || MP3VOR > VOLUME_MED)) Mp3_clr_bass_boost(); /* should be less than -15dB */
        dac_set_vol(++mp3_volume);
      }
      break;

    case SND_BASS:
    {
      if (MP3BAS != BASS_MAX)
        MP3BAS++;
      break;
    }

    case SND_MEDIUM:
    {
      if (MP3MED != MEDIUM_MAX)
        MP3MED++;
      break;
    }

    case SND_TREBLE:
    {
      if (MP3TRE != TREBLE_MAX)
        MP3TRE++;
      break;
    }

    case SND_BBOOST:
    if(MP3VOL > VOLUME_MED || MP3VOR > VOLUME_MED) /* should be less than -15dB */
      dac_set_vol(VOLUME_MED);
    Mp3_set_bass_boost();
    break;
  }
}


/*F**************************************************************************
* NAME: song_snd_dec
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Decrement the selected sound control
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   The number of the current selected sound control is stored in the
*   variable snd_select (0.Volume; 1.Bass; 2.Medium; 3. Trebble)
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void song_snd_dec (void)
{
  switch (song_sound)
  {
    case SND_VOLUME:
    if (mp3_volume != VOLUME_MIN) dac_set_vol(--mp3_volume);
      break;

    case SND_BASS:
    {
      if (MP3BAS != BASS_MIN)
        MP3BAS--;
      break;
    }

    case SND_MEDIUM:
    {
      if (MP3MED != MEDIUM_MIN)
        MP3MED--;
      break;
    }

    case SND_TREBLE:
    {
      if (MP3TRE != TREBLE_MIN)
        MP3TRE--;
      break;
    }

    case SND_BBOOST:
    Mp3_clr_bass_boost();
    break;
  }
}


/*F**************************************************************************
* NAME: song_snd_select
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Select next sound control
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void song_snd_select (void)
{
  song_sound = (song_sound + 1) % NB_SOUND;
}


/*F**************************************************************************
* NAME: song_get_sound
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   sound selected: SND_VOLUME, SND_BASS, SND_MEDIUM, SND_TREBLE
*----------------------------------------------------------------------------
* PURPOSE: 
*   Returns selected sound control
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
Byte song_get_sound (void)
{
  return (song_sound);
}


/*F**************************************************************************
* NAME: song_get_level
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   level of sound selected
*----------------------------------------------------------------------------
* PURPOSE:
*   Returns selected sound level
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
Byte song_get_level (void)
{
  switch (song_sound)
  {
    case SND_VOLUME: return mp3_volume;
    case SND_BASS:   return MP3BAS;
    case SND_MEDIUM: return MP3MED;
    case SND_TREBLE: return MP3TRE;
    case SND_BBOOST: return (MP3CON&MSK_MPBBST)?1:0;
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草伊人久久| 亚洲黄色免费网站| 国产一区二区三区四| 久久久99精品免费观看不卡| 国产精品一区二区在线看| 亚洲男同性视频| 色呦呦国产精品| 午夜一区二区三区视频| 欧美一区欧美二区| 国产在线乱码一区二区三区| 国产人伦精品一区二区| a级精品国产片在线观看| 一区二区三区在线视频免费| 欧美一三区三区四区免费在线看 | 亚瑟在线精品视频| 91麻豆精品国产91久久久使用方法 | av一区二区三区在线| 一区二区三区四区视频精品免费| 欧美日本国产一区| 国产精品一区免费在线观看| 亚洲伦在线观看| 日韩欧美一级二级三级久久久| 丁香婷婷深情五月亚洲| 亚洲在线观看免费视频| 精品成人佐山爱一区二区| av网站一区二区三区| 日本中文字幕一区二区有限公司| 欧美高清在线精品一区| 欧美日韩中文字幕精品| 国产91高潮流白浆在线麻豆| 亚洲成人资源网| 中文字幕不卡在线观看| 欧美精品 国产精品| 成人福利在线看| 日本欧美加勒比视频| 亚洲欧美成人一区二区三区| 精品久久久久久久久久久院品网| 日本精品视频一区二区三区| 国产一区欧美一区| 午夜久久久久久久久久一区二区| 欧美激情一区二区| 欧美成人精品1314www| 在线视频你懂得一区二区三区| 国产精品主播直播| 麻豆久久一区二区| 亚洲一级在线观看| **性色生活片久久毛片| 精品成人一区二区| 欧美一区二区在线免费观看| 色综合久久久久综合| 国产另类ts人妖一区二区| 午夜电影久久久| 一区二区三区日韩精品视频| 国产欧美va欧美不卡在线| 日韩欧美一区二区久久婷婷| 欧美日韩不卡一区二区| 91麻豆国产在线观看| 成人动漫在线一区| 国产精品888| 国产专区综合网| 久久99蜜桃精品| 久久99国产精品久久99果冻传媒| 日韩主播视频在线| 五月婷婷综合在线| 亚洲国产人成综合网站| 亚洲国产精品一区二区久久 | 青青草一区二区三区| 香蕉成人啪国产精品视频综合网| 一区二区三区中文在线观看| 亚洲欧美日韩在线不卡| 亚洲视频免费观看| 中文字幕人成不卡一区| 国产精品福利在线播放| 中文字幕亚洲一区二区av在线 | 色婷婷精品大在线视频| 91麻豆免费在线观看| 在线视频综合导航| 欧美日韩在线一区二区| 制服丝袜在线91| 日韩欧美国产综合在线一区二区三区 | 91精品国产入口| 欧美高清视频不卡网| 91精品久久久久久久久99蜜臂| 在线播放91灌醉迷j高跟美女 | 欧美群妇大交群的观看方式| 欧美军同video69gay| 日韩一区二区三区观看| 日韩欧美一区二区免费| 久久久久久久精| 国产精品欧美极品| 亚洲一二三区在线观看| 日韩精品一二三四| 久草热8精品视频在线观看| 国产一区不卡在线| av影院午夜一区| 欧美日韩免费高清一区色橹橹| 91精品国产91综合久久蜜臀| 精品国产乱码久久久久久夜甘婷婷| 久久久国产午夜精品| 中文字幕日本不卡| 丝袜亚洲另类丝袜在线| 国产精品综合一区二区三区| 99精品久久99久久久久| 在线不卡的av| 中文字幕精品三区| 日韩制服丝袜av| 福利一区二区在线| 精品视频1区2区3区| 久久精品视频网| 亚洲制服欧美中文字幕中文字幕| 免费在线欧美视频| 不卡视频一二三四| 国产精品不卡在线| 亚洲妇女屁股眼交7| 国内精品久久久久影院色| 91在线免费播放| 91精品国产黑色紧身裤美女| 欧美激情在线看| 男男成人高潮片免费网站| 91视频一区二区三区| 精品国产区一区| 亚洲一区二区三区免费视频| 国产一区二区导航在线播放| 欧美在线短视频| 欧美国产丝袜视频| 欧美aaaaaa午夜精品| 色偷偷久久人人79超碰人人澡| 精品国产三级电影在线观看| 亚洲国产日韩综合久久精品| 成人黄色a**站在线观看| 日韩欧美一级片| 一区二区免费在线| 国产成人在线视频网址| 5858s免费视频成人| 亚洲人成人一区二区在线观看| 国产一区二区精品久久91| 欧美一区二区视频在线观看 | 在线综合亚洲欧美在线视频| 亚洲色图在线播放| 粉嫩av亚洲一区二区图片| 91精品国产乱码久久蜜臀| 亚洲综合偷拍欧美一区色| 播五月开心婷婷综合| 久久免费美女视频| 开心九九激情九九欧美日韩精美视频电影 | 成人免费的视频| 精品电影一区二区三区| 日本三级亚洲精品| 欧美三级日韩三级| 亚洲香肠在线观看| 色综合一区二区| 亚洲色图欧美偷拍| 99精品视频在线免费观看| 国产精品久久久久婷婷二区次| 国产一区激情在线| 精品免费视频.| 极品销魂美女一区二区三区| 日韩一区国产二区欧美三区| 亚洲不卡一区二区三区| 欧美日韩国产欧美日美国产精品| 国产精品第一页第二页第三页| 国产999精品久久久久久绿帽| 久久人人97超碰com| 国产真实乱偷精品视频免| ww久久中文字幕| 国产精品自在欧美一区| 国产欧美综合在线| 成人av在线网站| 亚洲天堂网中文字| 在线视频你懂得一区| 亚洲成人黄色影院| 91精品久久久久久久99蜜桃| 蜜桃视频在线观看一区| 精品国产免费视频| 国产精品1区2区3区在线观看| 国产欧美日韩久久| 91在线国产福利| 亚洲成人黄色小说| 精品日韩一区二区| 国产电影精品久久禁18| 日韩理论片中文av| 欧洲精品一区二区三区在线观看| 午夜视频在线观看一区二区| 91精品国模一区二区三区| 色综合久久久久久久| 一区二区三区国产| 911精品国产一区二区在线| 狠狠色丁香久久婷婷综合_中 | 欧美一级理论片| 国产成人在线色| 一区二区三区精品在线观看| 欧美日韩国产片| 国产精品一区在线观看你懂的| 国产农村妇女精品| 91高清在线观看| 久久福利视频一区二区| 亚洲欧美在线观看| 欧美精品一卡二卡| 福利一区二区在线| 三级精品在线观看|