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

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

?? voice_drv.c

?? 單片機學習資料主要講述MP3開發(fā) 適合初學者進行開發(fā)學習
?? C
字號:
/*C**************************************************************************
* NAME:         voice_drv.c
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3      
* REVISION:     1.9     
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the voice driver routines Timer 1 is used as conversion 
* time base, its frequency is defined in config.h
*
* NOTES:
* Global Variables:
*   - voice_buffer:    array of bytes in xdata space
*   - gl_pointer:   byte in data space
*****************************************************************************/

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

#include "config.h"                 /* system configuration */
#include "board.h"                  /* board definition */
#include "dac\dac_drv.h"            /* dac driver definition */
#include "lib_mcu\clock\clock.h"    /* clock definition */
#include "voice_drv.h"              /* voice driver definition */


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


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

extern  xdata   Byte    voice_buffer[];
extern  data    Byte    gl_pointer;

Byte    voc_volume;                     /* volume value */


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

static  void    voc_audio_init (void);


/*F**************************************************************************
* NAME: voc_rec_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Initialize the timer and ADC
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*   T1_PRIO defined in config.h
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_rec_init (void)
{
  gl_pointer = 0x00;
  Adc_set_clock(AD_CLOCK);
  Adc_enable();
  Adc_select_channel(VOICE_CHANNEL);          /* select voice channel */
  T1_init(T1_NOT_GATED, T1_TIMER, T1_MODE_2); /* 8-bit auto-reload */
  TH1 = T1_BASE;                              /* load timer */ 
  t1_set_prio(T1_PRIO);                       /* set-up priority */
  T1_enable_int();                            /* enable interrupt */
  T1_start();
}


/*F**************************************************************************
* NAME: voc_play_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Audio interface initialization
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_play_init (void)
{
  gl_pointer = 0x00;
  voc_audio_init();                       /* init audio interface */
  clock_voice_init();                     /* program the voice clocks */
}


/*L**************************************************************************
* NAME: voc_audio_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Audio interface initialization in voice mode
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*   DAC_NB_BIT and AUD_PRIO defined in config.h
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_audio_init (void)
{
  Aud_set_pcm_32(DAC_NB_BIT);
  Aud_set_voice(MSK_DUP0);
  aud_set_prio(AUD_PRIO);
  Aud_enable();
  Dac_unmute();
}


/*F**************************************************************************
* NAME: voc_play_start
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Fill audio buffer and start sample request
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*   0x80 offset is added for unsigned to signed samples conversion 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_play_start (void)
{
Byte i;

  for (i = 8; i != 0; i--)
  {
    AUDDAT = (char)voice_buffer[gl_pointer++] / (char)voc_volume;
  }
  Aud_voice_play();                       /* start sample request */
}


/*F**************************************************************************
* NAME: voc_play_stop
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Stop voice playing
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_play_stop (void)
{
  Dac_mute();                               /* silence */
  aud_stop();                               /* disable audio */
  Pll_stop();                               /* disable pll */
}


/*F**************************************************************************
* NAME: voc_inc_volume
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Increment playing volume
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_inc_volume (void)
{
  if (voc_volume != VOC_VOLUME_MAX)
  {
    voc_volume--;
  }
}


/*F**************************************************************************
* NAME: voc_dec_volume
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Decrement playing volume
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void voc_dec_volume (void)
{
  if (voc_volume != VOC_VOLUME_MIN)
  {
    voc_volume++;
  }
}


/*F**************************************************************************
* NAME: voc_rec_int
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Timer 1 interrupt function
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*   IRQ_T1 defined in extsnd1.h
*   gl_pointer is modulo 256
*   VOICE_CHANNEL is always selected by default, other conversion on 
*   BATTERY_CHANNEL may pause the Timer 1 and reselect VOICE_CHANNEL for
*   proper voice conversion.
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
Interrupt (voc_rec_int(void), IRQ_T1) 
{
  Adc_convert_idle();                       /* launch new conversion */
  voice_buffer[gl_pointer++] = (Adc_get_data_h()); /* write data in buffer */
  Adc_ack_conversion();
}


/*F**************************************************************************
* NAME: voc_play_int
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Audio interrupt function
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*   IRQ_AUD defined in extsnd1.h
*   The underrun condition is not tested as it must not appear
*   0x80 offset is added for unsigned to signed samples conversion 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
Interrupt (voc_play_int (void), IRQ_AUD)
{
  ACC= AUDSTA;                        /* dummy read to clear flags */
  AUDDAT = (char)(voice_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
  AUDDAT = (char)(voice_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
  AUDDAT = (char)(voice_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
  AUDDAT = (char)(voice_buffer[gl_pointer++] + 0x80)/(char)voc_volume;
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久国产精品| 久久er精品视频| 精品在线观看视频| 91亚洲午夜精品久久久久久| 日韩欧美二区三区| 亚洲精品美腿丝袜| 国产乱子伦一区二区三区国色天香| 色综合久久66| 日韩免费福利电影在线观看| 1024成人网| 国产精品白丝jk白祙喷水网站 | 成人精品电影在线观看| 欧美日韩国产片| 最新中文字幕一区二区三区 | 欧美日韩专区在线| 亚洲欧洲韩国日本视频| 国产精品538一区二区在线| 欧美日韩欧美一区二区| 自拍偷拍国产亚洲| 成人性生交大片免费看中文| 欧美精选午夜久久久乱码6080| 国产精品婷婷午夜在线观看| 精品亚洲成a人| 91久久线看在观草草青青| 国产精品免费视频一区| 丰满亚洲少妇av| 26uuuu精品一区二区| 激情文学综合网| 精品久久久久久久久久久院品网| 日韩中文字幕1| 在线成人免费观看| 日韩高清不卡一区二区| 欧美一区日本一区韩国一区| 日韩av午夜在线观看| 91精品免费观看| 欧美电影一区二区| 亚洲午夜在线观看视频在线| 国产成人精品一区二区三区网站观看| 欧美mv日韩mv亚洲| 精品在线观看视频| 久久久久久99久久久精品网站| 经典三级视频一区| 久久女同性恋中文字幕| 国产真实乱子伦精品视频| 欧美成人精精品一区二区频| 国产精品99久久久久久似苏梦涵 | 久久久精品免费免费| 日韩av电影天堂| 欧美一区二区三区四区高清| 美国av一区二区| 久久视频一区二区| 成人av在线观| 国产欧美日韩另类视频免费观看| 国产精品一二三四| 亚洲欧洲三级电影| 欧美做爰猛烈大尺度电影无法无天| 亚洲在线免费播放| 欧美一区二区三区婷婷月色| 麻豆精品久久精品色综合| 久久精品日韩一区二区三区| 久久99国产精品麻豆| 国产视频在线观看一区二区三区| 波多野结衣中文一区| 中文字幕av资源一区| 99在线视频精品| 亚洲国产日韩综合久久精品| 日韩欧美国产成人一区二区| 久久99精品久久久久婷婷| 日韩伦理电影网| 日韩欧美你懂的| 一本久道久久综合中文字幕| 石原莉奈在线亚洲三区| 国产精品久久久久天堂| 制服丝袜在线91| 成人av在线影院| 麻豆国产精品777777在线| 亚洲日本va午夜在线影院| 日韩一级完整毛片| 91福利视频在线| 国产美女视频一区| 亚洲一本大道在线| 中文字幕欧美国产| 日韩一区二区三区观看| 91麻豆6部合集magnet| 国产专区综合网| 丝袜美腿亚洲综合| 亚洲欧洲中文日韩久久av乱码| 日韩视频一区二区三区在线播放| 91在线国产观看| 国产成人精品亚洲777人妖 | 亚洲男人天堂av网| 国产日本欧美一区二区| 91精品免费在线观看| 在线观看日韩毛片| 91在线免费视频观看| 国产成人精品影院| 久久国产尿小便嘘嘘| 日韩国产精品久久久久久亚洲| 国产精品二三区| 久久99国产精品免费网站| 亚洲精品国产品国语在线app| 欧美精品一区二区三区一线天视频| 欧美三级中文字幕在线观看| 色哟哟精品一区| 99综合电影在线视频| 国产激情一区二区三区| 久久99国产精品免费| 日本视频在线一区| 日韩精品久久理论片| 亚洲午夜免费电影| 亚洲一区影音先锋| 亚洲第一搞黄网站| 性欧美大战久久久久久久久| 亚洲午夜一区二区| 五月天国产精品| 日韩专区欧美专区| 免费美女久久99| 麻豆免费看一区二区三区| 青椒成人免费视频| 久久国产精品99久久人人澡| 久草精品在线观看| 国产麻豆精品theporn| 国产乱子伦一区二区三区国色天香| 风间由美中文字幕在线看视频国产欧美| 欧美一区二区三区电影| 欧美剧情电影在线观看完整版免费励志电影| 成人激情视频网站| 99国产精品国产精品久久| 成人国产视频在线观看| 91视频你懂的| 欧美三级视频在线观看| 777色狠狠一区二区三区| 日韩欧美中文一区| 国产三级三级三级精品8ⅰ区| 亚洲国产精品成人综合 | 国产精品美女久久久久久久久久久| 欧美国产日本韩| 亚洲精品中文字幕在线观看| 亚洲小说欧美激情另类| 蜜芽一区二区三区| 国产91高潮流白浆在线麻豆| 92国产精品观看| 欧美一级免费大片| 久久久午夜电影| 亚洲美女偷拍久久| 人禽交欧美网站| 国产老肥熟一区二区三区| 日韩电影在线一区| 亚洲欧洲日产国码二区| 亚洲一区二区在线播放相泽| 日韩影院免费视频| 国产成人av网站| 欧美中文字幕一二三区视频| 日韩欧美一区二区免费| 国产精品久久久久影视| 丝瓜av网站精品一区二区| 国产999精品久久久久久绿帽| 91国偷自产一区二区三区成为亚洲经典| 欧美一区二区三区不卡| 亚洲国产电影在线观看| 日本亚洲电影天堂| 成人av电影在线播放| 日韩一区二区三区电影| 日韩毛片在线免费观看| 久久99日本精品| 91福利国产精品| 亚洲国产精品激情在线观看| 日本中文字幕一区| 日本韩国欧美三级| 国产肉丝袜一区二区| 成人性生交大片免费看在线播放| 欧洲日韩一区二区三区| 日韩欧美国产综合| 亚洲免费在线电影| 懂色av一区二区三区免费看| 日韩视频中午一区| 亚洲国产中文字幕在线视频综合| 成人永久看片免费视频天堂| 日韩一区二区三区电影在线观看| 一区二区高清免费观看影视大全| 国产成人在线免费| 久久久久久久综合色一本| 日本不卡高清视频| 欧美专区在线观看一区| 亚洲少妇屁股交4| 国产91在线观看丝袜| 精品999在线播放| 裸体歌舞表演一区二区| 777午夜精品免费视频| 亚洲大片免费看| 欧美日韩中文精品| 亚洲最大成人网4388xx| 91麻豆高清视频| 亚洲天堂av老司机| 91蜜桃免费观看视频| 综合久久国产九一剧情麻豆| k8久久久一区二区三区| 欧美日韩一区不卡| 综合久久国产九一剧情麻豆| 成人av资源在线|