⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 song_task.lst

📁 串口小程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.02a   SONG_TASK                                                            09/13/2007 11:53:04 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE SONG_TASK
OBJECT MODULE PLACED IN song_task.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE modules\song\song_task.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;.
                    -\;.\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\song_task.lst) OBJECT(song_task.obj)

stmt level    source

   1          /*C**************************************************************************
   2          * NAME:         song_task.c
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2003 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      snd1c-refd-nf-4_0_3      
   7          * REVISION:     1.16     
   8          *----------------------------------------------------------------------------
   9          * PURPOSE:          
  10          * This file contains the song task and attached routines
  11          *
  12          * CONFIGURATION
  13          * Three #define must be set in config.h:
  14          *   - PLAYER_PLAY_MODE
  15          *       PLAY_DIR      play selected dir
  16          *       PLAY_DISK     play whole disk including sub-directory
  17          *   - PLAYER_PLAY_START
  18          *       START_PLAY    start playing after power-up
  19          *       START_STOP    do not play after power-up
  20          *   - PLAYER_PLAY_LOOP
  21          *       PLAY_LOOP     loop after last file of dir or disk has been played
  22          *       PLAY_NO_LOOP  no loop after last file of dir or disk has been played
  23          * NOTES:
  24          * Global Variables:
  25          *   - gl_key_press:   bit in bdata space
  26          *   - gl_key:         byte in idata space
  27          *   - gl_mem_failure: bit in bdata space
  28          *****************************************************************************/
  29          
  30          /*_____ I N C L U D E S ____________________________________________________*/
  31          
  32          #include "config.h"                         /* system configuration */
  33          #include "board.h"                          /* board definition */
  34          #include "modules\display\disp.h"           /* display definition */
  35          #include "modules\file\file.h"              /* file definition */
  36          #include "modules\mode\mode_task.h"         /* mode task definition */
  37          #include "modules\display\disp_task.h"      /* display definition */
  38          #include "modules\mem\mem_task.h"           /* memory task definition */
  39          #include "lib_mcu\clock\clock.h"            /* clock definition */
  40          #include "lib_mcu\aud\aud_drv.h"            /* audio driver definition */
  41          #include "lib_mcu\mp3\mp3_drv.h"            /* mp3 driver definition */
  42          #include "song_drv.h"                       /* song driver definition */
  43          #include "song_task.h"                      /* song task definition */
  44          
  45          
  46          
  47          extern unsigned char xdata change_data;
  48          void  intr_data_task( );
  49          
  50          extern unsigned char   mp3;
  51          
  52          /*_____ M A C R O S ________________________________________________________*/
  53          
  54          
C51 COMPILER V7.02a   SONG_TASK                                                            09/13/2007 11:53:04 PAGE 2   

  55          /*_____ D E F I N I T I O N ________________________________________________*/
  56          
  57          extern  bdata   bit     gl_key_press;       /* TRUE when a key is decoded */
  58          extern  idata   Byte    gl_key;             /* value of the key pressed */
  59          extern  bdata   bit     gl_mem_failure;     /* memory hardware failure */
  60          
  61          #ifndef REFD                                /* add compatibility with refd/demo */
              #error
              #define disp_end_of_play()
              #endif
  65          
  66          Byte    song_state;                         /* task state */
  67          static  bit     song_loop;                  /* auto replay */
  68          
  69          
  70          /*_____ D E C L A R A T I O N ______________________________________________*/
  71          
  72          
  73          /*F**************************************************************************
  74          * NAME: song_task_init
  75          *----------------------------------------------------------------------------
  76          * PARAMS:
  77          *
  78          * return:
  79          *----------------------------------------------------------------------------
  80          * PURPOSE: 
  81          *   Song playing task initialization
  82          *----------------------------------------------------------------------------
  83          * EXAMPLE:
  84          *----------------------------------------------------------------------------
  85          * NOTE:
  86          *----------------------------------------------------------------------------
  87          * REQUIREMENTS:
  88          *****************************************************************************/
  89          void song_task_init (void)
  90          {
  91   1        song_loop = PLAYER_PLAY_LOOP;             /* default loop playing */
  92   1        song_snd_init();                          /* init sound control */
  93   1        song_state = SONG_START;
  94   1      }
  95          
  96          
  97          /*F**************************************************************************
  98          * NAME: song_task
  99          *----------------------------------------------------------------------------
 100          * PARAMS:
 101          *
 102          * return:
 103          *----------------------------------------------------------------------------
 104          * PURPOSE: 
 105          *   Song playing task
 106          *----------------------------------------------------------------------------
 107          * EXAMPLE:
 108          *----------------------------------------------------------------------------
 109          * NOTE:
 110          *----------------------------------------------------------------------------
 111          * REQUIREMENTS:
 112          *****************************************************************************/
 113          void song_task (void)
 114          {
 115   1      Byte  cpt_data;
 116   1      bit     loop;
C51 COMPILER V7.02a   SONG_TASK                                                            09/13/2007 11:53:04 PAGE 3   

 117   1        
 118   1        if (Mp3_frame_request())
 119   1        {
 120   2          cpt_data = 0;
 121   2          do
 122   2          {
 123   3            Mp3_load(Fgetc());                    /* send data while requested */
 124   3            cpt_data++;
 125   3            /* workaround for 320Kbs frame support */
 126   3            if ((cpt_data & 0x40) == 0x40)
 127   3            {
 128   4              Mp3_set_full();
 129   4              Mp3_reset_full();                   /* ack 64 Bytes write */
 130   4              break;
 131   4            }
 132   3            if (gl_mem_failure)
 133   3            { /* hardware failure */
 134   4              song_state = SONG_ERROR;            /* in case of read error */
 135   4              break;
 136   4            }
 137   3           
 138   3          }
 139   2          while (Mp3_frame_request());            /* until frame request */
 140   2      
 141   2          while (Mp3_frame_request())             /* frame request ? */
 142   2          {
 143   3                 
 144   3            Mp3_load(Fgetc()); /* send data while requested */
 145   3            if (gl_mem_failure)
 146   3            { /* hardware failure */
 147   4              song_state = SONG_ERROR;            /* in case of read error */
 148   4              break;
 149   4            }
 150   3          }
 151   2        }
 152   1         
 153   1      
 154   1       if(mp3==5)
 155   1        {
 156   2          mp3=0; 
 157   2          song_state=  SONG_NEXT;                                                               ////////////////
             -//////////////////////////
 158   2         }
 159   1      
 160   1      
 161   1        switch (song_state)
 162   1        {
 163   2          case SONG_START:
 164   2          {
 165   3              print_mode_song();                    /* select song icon */
 166   3               print_state_blank();                  /* select blank icon */
 167   3              print_screen(SONG_SCREEN);            /* display song screen */
 168   3              print_sound_level();                  /* display volume level */
 169   3            song_state = SONG_INSTALL;
 170   3            break;
 171   3          }
 172   2      
 173   2      
 174   2          case SONG_INSTALL:
 175   2          {
 176   3            if (mem_status() != MEM_BUSY)         /* wait end of memory install */
 177   3            {
C51 COMPILER V7.02a   SONG_TASK                                                            09/13/2007 11:53:04 PAGE 4   

 178   4              if (mem_status() == MEM_READY)
 179   4              { /* disk formated */
 180   5                /* this may be changed to retrieve last saved position */
 181   5                if (File_entry_root(FILE_MP3| FILE_DIR) == OK) /* goto root directory */
 182   5                {
 183   6                  print_file_name();              /* display file name */
 184   6                  #if PLAYER_PLAY_START == START_STOP
 185   6                    song_state = SONG_IDLE;
 186   6                  #else
                            if (File_type() == FILE_DIR)
                            { /* file_type is dir */
                            #if PLAYER_PLAY_MODE == PLAY_DISK
                              song_state = SONG_NEW;      /* enter dir and play */
                            #else
                              song_state = SONG_NEXT;     /* stay in root dir */
                            #endif
                            }
                            else
                            { /* file_type is MP3 */
                              song_state = SONG_INIT;
                            }
                          #endif
 200   6                }
 201   5                else
 202   5                { /* root is empty of song & diretory */
 203   6                  song_state = SONG_NO_SONG;
 204   6                }
 205   5              }
 206   4              else
 207   4              { /* disk not formated */
 208   5                print_state_error();              /* error icon when not formated */
 209   5                if (gl_key_press)                 /* a key is pressed? */
 210   5                {
 211   6                  switch (gl_key)
 212   6                  {
 213   7                    case KEY_MEM:
 214   7                      mem_select_next();          /* select next memory */
 215   7                      song_state = SONG_START;
 216   7                      break;
 217   7      
 218   7                    case KEY_MODE:
 219   7                      mode_set_init();            /* exit from song task */
 220   7                      song_state = SONG_START;
 221   7                      break;
 222   7                  }
 223   6                  gl_key_press = FALSE;           /* ack key usage */
 224   6                }
 225   5                else
 226   5                { /* check card presence */
 227   6                  if (mem_check_card() == KO)
 228   6                  {
 229   7                    mem_select_next();
 230   7                    song_state = SONG_START;      /* card has been unplugged */
 231   7                  }
 232   6                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -