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

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

?? voice_task.c

?? 8051實現的MP3播放程序,大家可以一起學習.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*C**************************************************************************
* NAME:         voice_task.c
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3      
* REVISION:     1.13     
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the voice task and attached routines
*
* NOTES:
* Global Variables:
*   - gl_key_press:   bit in bdata space
*   - gl_key:         byte in idata space
*   - voice_buffer:      array of bytes in pdata space
*   - gl_pointer:     byte in data space
*   - gl_wav_header:  wave structure in code
*****************************************************************************/

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

#include "config.h"                         /* system configuration */
#include "lib_refd\board.h"                          /* board definition */
#include "lib_mcu\lcd\lcd_drv.h"                   /* display definition */
#include "modules\file\file.h"              /* file definition */
#include "lib_mcu\clock\clock.h"            /* clock definition */
#include "modules\mode\mode_task.h"         /* mode task definition */
#include "modules\display\disp_task.h"      /* display definition */
#include "modules\mem\mem_task.h"           /* memory task definition */
#include "voice_drv.h"                      /* voice definition */
#include "voice_task.h"                     /* voice task definition */
#include "modules\file\wav.h"               /* wav file definition */


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


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

extern  bdata   bit     gl_key_press;       /* TRUE when a key is decoded */
extern  idata   Byte    gl_key;             /* value of the key pressed */
extern  bdata   bit     gl_mem_failure;     /* memory hardware failure */

extern  data    Byte    gl_pointer;
extern  code    wav_struct  gl_wav_header;

static  idata   Byte    voice_state;        /* task state */

xdata   Byte    voice_buffer[256];

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


/*F**************************************************************************
* NAME: voice_task_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Voice task initialization
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void voice_task_init (void)
{
  voice_state = VOICE_START;
  Voc_init_volume();                            /* mid-range volume */
}


/*F**************************************************************************
* NAME: voice_task
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Voice playing / recording task
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   STATES:
*   VOICE_START      start task
*   VOICE_INSTALL     voice installation
*   VOICE_IDLE        idle state of this task
*   VOICE_PLAY_INIT   initialisation of audio interface
*   VOICE_PLAY        voice under playing
*   VOICE_PLAY_PAUSE  voice playing halted
*   VOICE_NEW         previous or next song handler
*   VOICE_PLAY_STOP   stop playing
*   VOICE_NO_MESSAGE  file system empty
*   VOICE_REC_INIT    initialisation of A to D converter
*   VOICE_RECORD      voice under recording
*   VOICE_REC_PAUSE   voice recording halted
*   VOICE_REC_STOP    stop recording
*   VOICE_ERROR       error in playing or recording
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void voice_task (void)
{
Byte    i;
static  Uint32  voc_cpt;
xdata   char * file_name;
xdata   char buff[12];

  switch (voice_state)
  {
    case VOICE_START:
    {
      print_mode_voice();                   /* select voice icon */
      print_state_blank();                  /* select blank icon */
//      print_screen(VOICE_SCREEN);           /* display voice screen */
      print_voice_vol(Voc_get_volume());    /* display volume level */
      voice_state = VOICE_INSTALL;
      break;
    }

    case VOICE_INSTALL:
    {
      if (mem_status() != MEM_BUSY)         /* wait end of memory install */
      {
        if (mem_status() == MEM_READY)
        {
          if (File_entry_root(FILE_WAV) == OK)/* WAV file in root dir? */
          {
            print_file_name();              /* display file name */
            voice_state = VOICE_IDLE;
          }
          else
          { /* no *.wav file in root */
            voice_state = VOICE_NO_MSG;
          }
        }
        else
        { /* disk not formated */
          print_state_error();              /* error icon when not formated */
          if (gl_key_press)                 /* a key is pressed? */
          {
            switch (gl_key)
            {
              case KEY_MEM:
                mem_select_next();          /* select next memory */
                voice_state = VOICE_START;
                break;

              case KEY_MODE:
                mode_set_init();            /* exit from song task */
                voice_state = VOICE_START;
                break;
              }
            gl_key_press = FALSE;           /* ack key usage */
          }
          else
          { /* check card presence */
            if (mem_check_card() == KO)
            {
              mem_select_next();
              voice_state = VOICE_START;    /* card has been unplugged */
            }
          }
        }
      }
      break;
    }


    case VOICE_IDLE:                        /* no file openned */
    {
      if (gl_key_press)                     /* a key is pressed? */
      {
        switch (gl_key)
        {
          case KEY_PLAY:
            voice_state = VOICE_PLAY_INIT;
            break;

          case KEY_NEXT:
            file_seek_next(FILE_WAV, TRUE); /* select next message with loop */
            print_file_name();              /* display file name */
            break;

          case KEY_PREV:
            file_seek_prev(FILE_WAV, TRUE);       /* select previous message */
            print_file_name();              /* display file name */
            break;

          case KEY_REC:
            voice_state = VOICE_REC_INIT;
            break;

          case KEY_INC:
            voc_inc_volume();               /* increment volume */
            print_voice_vol(Voc_get_volume());  /* display new level */
            break;

          case KEY_DEC:
            voc_dec_volume();               /* decrement volume */
            print_voice_vol(Voc_get_volume());  /* display new level */
            break;

          case KEY_MODE:
            mode_set_init();                /* exit from voice task */
            disp_name_stop();
            voice_state = VOICE_START;
            break;

          case KEY_MEM:
            mem_select_next();              /* select next memory */
            disp_name_stop();
            voice_state = VOICE_START;
            break;

          default:
            break;
        }
        gl_key_press = FALSE;               /* ack key usage */
      }
      else
      { /* check card presence */
        if (mem_check_card() == KO)
        {
          mem_select_next();
          voice_state = VOICE_START;        /* card has been unplugged */
        }
      }
      break;
    }


    case VOICE_PLAY_INIT:
    {
      disp_clock_reset();                   /* reset clock timer */
      if (Fopen(READ) != OK)
      {
        voice_state = VOICE_ERROR;
      }
      else
      {
        Fseek(WAV_HEADER_SIZE);
        voc_play_init();                    /* init voice playing */
        voice_state = VOICE_PLL;
      }
      break;
    }


    case VOICE_PLL:
    {
      if (Pll_get_lock())                   /* pll locked? */
      {
        voc_play_start();                   /* start playing voice */
        disp_clock_start();                 /* start clock timer */
        print_state_play();                 /* display play icon */
        voc_cpt = 0;
        voice_state = VOICE_PLAY;
      }
      break;
    }


    case VOICE_PLAY:                        /* one file openned */
    {
      while ((Byte)voc_cpt != gl_pointer)
      {
        voice_buffer[(Byte)voc_cpt] = Fgetc();
        voc_cpt++;
      }
      if (gl_mem_failure)
      { /* hardware failure */
        voc_play_stop();                    /* stop playing */
        Fclose();
        voice_state = VOICE_PLAY_STOP;
        gl_key_press = FALSE;               /* no key usage */
        break;
      }
      if (Feof())
      { /* end of file reached */
        voc_play_stop();                    /* stop playing */
        Fclose();
        voice_state = VOICE_PLAY_STOP;
        gl_key_press = FALSE;               /* no key usage */
        break;
      }      
      if (gl_key_press)                     /* a key is pressed? */
      {
        switch (gl_key)
        {
          case KEY_PAUSE:
            Voc_play_pause();               /* suspend playing */
            disp_clock_stop();              /* suspend clock timer */
            print_state_pause();            /* display pause icon */
            voice_state = VOICE_PLAY_PAUSE;
            break;
  
          case KEY_NEXT:
            voc_play_stop();                /* stop playing */
            disp_clock_stop();              /* suspend clock timer */
            Fclose();
            file_seek_next(FILE_WAV, TRUE); /* select next message & loop */
            voice_state = VOICE_PLAY_NEW;
            break;
  
          case KEY_PREV:
            voc_play_stop();                /* stop playing */
            disp_clock_stop();              /* suspend clock timer */
            Fclose();
            file_seek_prev(FILE_WAV, TRUE);       /* select previous message */
            voice_state = VOICE_PLAY_NEW;
            break;
  
          case KEY_INC:
            voc_inc_volume();               /* increment volume */
            print_voice_vol(Voc_get_volume());  /* display new level */
            break;
  
          case KEY_DEC:
            voc_dec_volume();               /* decrement volume */
            print_voice_vol(Voc_get_volume());  /* display new level */
            break;
  
          case KEY_REC:
            voc_play_stop();                /* stop playing */
            Fclose();
            voice_state = VOICE_DELETE;     /* remove file from FAT */
            break;

          case KEY_STOP:
            voc_play_stop();                /* stop playing */
            Fclose();
            voice_state = VOICE_PLAY_STOP;
            break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大合| 在线播放视频一区| 欧美性猛交一区二区三区精品| 日韩一级完整毛片| 亚洲欧洲精品一区二区精品久久久| 日韩av二区在线播放| 色综合咪咪久久| 久久久99精品免费观看| 日本中文字幕一区| 色老综合老女人久久久| 国产精品视频线看| 精品一区二区三区在线视频| 欧美日韩亚洲不卡| 一区二区三区精品视频在线| 成人免费福利片| 国产日韩欧美一区二区三区综合| 麻豆91在线看| 欧美一级日韩一级| 亚洲影视在线播放| 91玉足脚交白嫩脚丫在线播放| 精品成人佐山爱一区二区| 日韩 欧美一区二区三区| 欧美特级限制片免费在线观看| 亚洲天堂中文字幕| 91在线视频播放地址| 国产亚洲一区字幕| 粉嫩13p一区二区三区| 久久精品这里都是精品| 国产一二精品视频| 久久久久97国产精华液好用吗| 国内精品伊人久久久久av影院| 欧美一级xxx| 精品一区二区三区的国产在线播放| 欧美一区二区三区视频在线观看| 性欧美大战久久久久久久久| 欧美区一区二区三区| 肉色丝袜一区二区| 91 com成人网| 麻豆国产精品一区二区三区 | 91在线观看免费视频| 国产精品乱码一区二三区小蝌蚪| 丁香六月综合激情| 国产精品美女久久久久高潮| 99久久99久久久精品齐齐| 中文字幕一区二区三| 91视视频在线观看入口直接观看www| 国产精品麻豆99久久久久久| 9i在线看片成人免费| 亚洲免费在线视频| 欧美日韩国产在线播放网站| 免费观看一级特黄欧美大片| 亚洲精品在线观| 波多野结衣中文一区| 亚洲精品中文在线影院| 欧美日韩高清影院| 国产在线精品一区二区夜色 | 精品剧情在线观看| 国产精品一区二区在线播放 | 色婷婷国产精品| 日韩电影免费在线观看网站| 日韩欧美第一区| 国产99精品视频| 亚洲国产成人av| 久久久国产精品麻豆| 欧洲一区二区三区免费视频| 日韩av不卡一区二区| 国产日产精品1区| 欧美视频自拍偷拍| 成人一区在线观看| 日韩高清在线电影| 最近日韩中文字幕| 日韩免费看的电影| 91精品1区2区| 成人夜色视频网站在线观看| 天堂va蜜桃一区二区三区漫画版| 久久免费看少妇高潮| 欧美日韩激情一区| 成人av网站免费观看| 美女性感视频久久| 一区二区三区在线免费观看 | 一区二区三区高清不卡| 久久综合久久综合亚洲| 在线观看日韩一区| 国产v综合v亚洲欧| 日本欧美一区二区| 一区二区三区四区激情| 久久伊人蜜桃av一区二区| 欧美日韩精品综合在线| 99久久精品一区| 国产成人免费av在线| 奇米一区二区三区| 亚洲精品国产第一综合99久久 | 国产99久久精品| 日韩avvvv在线播放| 亚洲在线免费播放| 国产精品免费视频一区| 久久婷婷综合激情| 精品国产乱子伦一区| 欧美一区二区三区性视频| 在线视频欧美精品| 色综合天天综合网国产成人综合天| 国产成人一区在线| 久草中文综合在线| 蜜臀va亚洲va欧美va天堂 | 国产伦精一区二区三区| 美国欧美日韩国产在线播放| 午夜欧美电影在线观看| 亚洲成人自拍偷拍| 亚洲一级二级三级在线免费观看| 综合激情网...| 国产精品传媒视频| 亚洲特级片在线| 依依成人综合视频| 亚洲一区影音先锋| 亚洲电影一区二区| 亚洲小说欧美激情另类| 亚洲精品自拍动漫在线| 亚洲综合视频在线观看| 亚洲福利电影网| 日精品一区二区| 蜜桃在线一区二区三区| 激情成人综合网| 久久91精品国产91久久小草| 国产乱子伦一区二区三区国色天香| 秋霞午夜鲁丝一区二区老狼| 蜜桃视频在线一区| 国产成人丝袜美腿| 色香蕉成人二区免费| 欧美三级视频在线播放| 欧美一区二区三区免费| 欧美精品一区二区久久久| 国产视频一区二区在线观看| 国产精品午夜久久| 一区二区三区影院| 亚洲成人一区二区| 久久精品国产澳门| 成人免费视频国产在线观看| 色婷婷久久久亚洲一区二区三区| 欧美日免费三级在线| 日韩精品一区二| 中文字幕一区二区三区色视频| 亚洲一区二区三区四区五区黄 | 一区二区三区不卡在线观看| 亚洲线精品一区二区三区八戒| 日韩avvvv在线播放| 国产一区二区日韩精品| 一本到高清视频免费精品| 欧美日韩国产高清一区| 久久色.com| 夜色激情一区二区| 精品一区二区三区免费视频| 99久久精品免费| 日韩一区二区在线播放| 亚洲视频在线观看三级| 日产精品久久久久久久性色| 国产aⅴ精品一区二区三区色成熟| 在线精品视频一区二区三四| 精品国产成人系列| 亚洲与欧洲av电影| 国产aⅴ综合色| 日韩一级视频免费观看在线| 亚洲女人的天堂| 国产在线观看一区二区| 欧美日本一区二区| 中文字幕一区二区三中文字幕| 日韩成人午夜电影| 色av成人天堂桃色av| 国产日韩v精品一区二区| 日本中文在线一区| 91官网在线观看| 国产欧美在线观看一区| 久久精品免费看| 欧美日韩精品一区二区在线播放| 国产精品看片你懂得| 九九在线精品视频| 91精品中文字幕一区二区三区| 亚洲欧美精品午睡沙发| 国产成人亚洲综合a∨婷婷| 欧美mv日韩mv| 男女男精品视频| 欧美另类久久久品| 亚洲最快最全在线视频| 91视频在线观看免费| 国产精品毛片高清在线完整版| 国产一区二区美女诱惑| 精品久久五月天| 看电视剧不卡顿的网站| 91精品国产91久久久久久一区二区| 夜夜亚洲天天久久| 91福利视频网站| 亚洲综合视频网| 欧美午夜寂寞影院| 一区二区理论电影在线观看| 99久久综合99久久综合网站| 国产精品视频看| 成a人片国产精品| 国产精品色眯眯| 99免费精品视频| 亚洲主播在线观看| 欧美日韩国产一二三|