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

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

?? song_drv.c

?? 單片機學習資料主要講述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)
{ 
  song_audio_init();
  dac_init();
  Dac_unmute();
  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一区二区三区免费野_久草精品视频
亚洲男同性视频| 亚洲精品久久久蜜桃| 免费观看一级特黄欧美大片| 欧美久久免费观看| 日韩电影网1区2区| 亚洲精品在线网站| 日本高清视频一区二区| 亚洲电影一区二区| 久久精品一区二区| 99精品在线免费| 午夜精品一区二区三区免费视频| 在线观看一区二区精品视频| 久88久久88久久久| 亚洲免费观看高清完整版在线| 欧美日韩中文字幕一区二区| 美女免费视频一区| 亚洲一区在线观看视频| 国产亚洲欧美激情| 国产精品正在播放| 午夜国产精品影院在线观看| 久久久久成人黄色影片| 欧美日韩精品二区第二页| 成人午夜私人影院| 精品亚洲成av人在线观看| 午夜视频一区在线观看| 国产精品美女一区二区三区| 精品国产乱码91久久久久久网站| 欧美日本不卡视频| 欧美最新大片在线看 | 国产精品久久久久婷婷二区次| 欧美美女一区二区在线观看| 欧美视频一区在线| 一本久道中文字幕精品亚洲嫩| 国产电影一区在线| 岛国精品在线播放| jlzzjlzz亚洲女人18| 91麻豆精品视频| 欧洲一区在线观看| 欧美日韩精品欧美日韩精品一 | 午夜久久久久久久久| 亚洲国产日韩精品| 亚洲成av人片在线| 蜜桃久久精品一区二区| 国产一区亚洲一区| 色综合久久88色综合天天6| 欧美日韩中文字幕精品| 日韩一区国产二区欧美三区| 欧美成人福利视频| 亚洲欧美一区二区不卡| 日韩精品欧美精品| 成人黄色软件下载| 欧美色偷偷大香| 久久精品夜色噜噜亚洲a∨| 国产精品国产精品国产专区不蜜| 亚洲国产精品尤物yw在线观看| 久久超碰97中文字幕| 国产999精品久久| 91精品国产高清一区二区三区蜜臀| 欧美videos大乳护士334| 亚洲欧美激情视频在线观看一区二区三区| 色88888久久久久久影院按摩| 欧美高清hd18日本| 中文字幕五月欧美| 激情综合五月婷婷| 欧美一级高清片在线观看| 一区二区视频免费在线观看| 日本成人在线电影网| 91在线观看免费视频| 久久久久久久精| 国产精品99久久久久久宅男| 日韩精品一区二区三区蜜臀| 首页综合国产亚洲丝袜| 欧美性感一区二区三区| 一区二区成人在线观看| bt欧美亚洲午夜电影天堂| 中文字幕欧美日韩一区| 韩国av一区二区三区在线观看| 日韩视频中午一区| 蜜桃视频在线一区| 国产欧美一区二区精品性色超碰| 蜜桃av噜噜一区二区三区小说| 3d动漫精品啪啪1区2区免费| 日韩精品久久理论片| 欧美成人综合网站| 成人中文字幕电影| 亚洲一区二区中文在线| 欧美一级艳片视频免费观看| 久久狠狠亚洲综合| 亚洲天堂精品在线观看| 欧美精选一区二区| 国产精品99久久不卡二区| 亚洲人快播电影网| 日韩精品一区二区三区视频播放| 国产激情精品久久久第一区二区| 欧美国产综合色视频| 91精品啪在线观看国产60岁| 国产揄拍国内精品对白| 亚洲人吸女人奶水| 欧美精品一区二区高清在线观看| 99精品国产热久久91蜜凸| 日本不卡一区二区三区| 亚洲婷婷综合色高清在线| 精品国产凹凸成av人导航| 欧美无乱码久久久免费午夜一区 | 91在线免费看| 精品一区二区三区日韩| 天堂成人免费av电影一区| 国产精品美女一区二区在线观看| 精品国产一区二区三区久久久蜜月 | 欧美精品一区二区三区高清aⅴ| 一本色道久久综合精品竹菊| 国产成人免费视频精品含羞草妖精 | 日本电影亚洲天堂一区| 国产成人av电影| 精品一区二区在线看| 国内精品伊人久久久久av一坑| 一区二区三区免费在线观看| 亚洲精品网站在线观看| 亚洲激情成人在线| 亚洲成va人在线观看| 亚洲一卡二卡三卡四卡五卡| 亚洲成人午夜电影| 美国av一区二区| 成人美女视频在线观看| 99精品视频一区二区三区| 99精品国产热久久91蜜凸| 色偷偷一区二区三区| 欧美日韩黄色一区二区| 久久亚洲一区二区三区明星换脸| 久久九九国产精品| 怡红院av一区二区三区| 日本视频免费一区| 国产精品一区在线观看你懂的| 99久久精品免费看国产| 欧美精选在线播放| 国产三区在线成人av| 亚洲三级理论片| 九九精品一区二区| 91成人在线精品| 国产人成一区二区三区影院| 亚洲国产综合视频在线观看| 国产成人精品免费视频网站| 欧美在线你懂的| 国产精品福利影院| 精品一区二区久久久| 欧美日韩一区中文字幕| 亚洲图片另类小说| 成熟亚洲日本毛茸茸凸凹| 日韩欧美一区二区免费| 亚洲精品一二三| 波多野结衣精品在线| 日韩欧美国产电影| 亚洲一区在线看| 欧美日韩一级二级三级| 亚洲日本va午夜在线电影| 丰满放荡岳乱妇91ww| 国产免费久久精品| 国产一区二三区好的| 2024国产精品| 国产精品中文字幕一区二区三区| 日韩美一区二区三区| 久久国产精品色婷婷| 久久人人爽爽爽人久久久| 国产精品一区二区三区乱码| 日本一区二区动态图| 成人午夜视频免费看| 亚洲男人的天堂网| 精品污污网站免费看| 免费人成精品欧美精品| 久久久青草青青国产亚洲免观| 国产高清不卡一区| 亚洲日本青草视频在线怡红院| 欧美日韩在线播放| 成人一区在线观看| 亚洲免费伊人电影| 欧美电视剧免费全集观看| 国产伦精品一区二区三区在线观看| 国产精品天干天干在线综合| 在线一区二区观看| 国产精一区二区三区| 午夜久久久影院| 亚洲欧美在线观看| 日韩精品一区在线| 一本大道久久a久久精品综合| 麻豆成人91精品二区三区| 中文字幕欧美一区| 欧美成人精品福利| 欧美美女激情18p| 99久久国产综合精品女不卡| 日本不卡视频一二三区| 亚洲成人精品一区二区| 青青草一区二区三区| 亚洲国产成人私人影院tom| 91成人在线免费观看| 精品美女一区二区三区| 国产精品456露脸| 一区二区成人在线| www亚洲一区| 欧美性做爰猛烈叫床潮| 一本久道中文字幕精品亚洲嫩|