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

📄 mode_task.lst

📁 基于AT89C51SND1的MP3的程序设计(包括播放mp3和录音功能)
💻 LST
字号:
C51 COMPILER V7.06   MODE_TASK                                                             05/05/2005 12:12:03 PAGE 1   


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

stmt level    source

   1          /*C**************************************************************************
   2          * NAME:         mode_task.c
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2003 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      snd1c-refd-nf-4_0_3      
   7          * REVISION:     1.11     
   8          *----------------------------------------------------------------------------
   9          * PURPOSE:
  10          * This file contains the  mode task and attached routines
  11          *
  12          * NOTES:
  13          * Global Variables:
  14          *   - gl_key_press: bit in bdata space
  15          *   - gl_key:       byte in idata space
  16          *   - gl_cpt_tick:  byte in data space
  17          *****************************************************************************/
  18          
  19          
  20          /*_____ I N C L U D E S ____________________________________________________*/
  21          
  22          #include "config.h"                         /* system configuration */
  23          #include "board.h"                          /* board definition */
  24          #include "modules\display\disp.h"           /* display definition */
  25          #include "modules\song\song_task.h"         /* song task definition */
  26          #include "modules\voice\voice_task.h"       /* voice task definition */
  27          #include "modules\tool\tool_task.h"         /* tool task definition */
  28          #include "modules\kbd\kbd_task.h"           /* keyboard task definition */
  29          #include "modules\mem\mem_task.h"           /* memory task definition */
  30          #include "lib_mcu\mp3\mp3_drv.h"            /* mp3 driver definition */
  31          #include "lib_mcu\clock\clock.h"            /* clock definition */
  32          #include "mode_task.h"                      /* mode task definition */
  33          
  34          
  35          /*_____ M A C R O S ________________________________________________________*/
  36          
  37          #ifndef MEM_CARD_TYPE
                #error MEM_CARD_TYPE must be defined in config.h
              #endif
  40          #ifndef MEM_CHIP_TYPE
                #error MEM_CHIP_TYPE must be defined in config.h
              #endif
  43          
  44          #ifndef START_CHECK_CPU_VERSION
                #define START_CHECK_CPU_VERSION   TRUE
              #endif
  47          
  48          #ifndef START_SKEEP_SPLASH_SCREEN
                #define START_SKEEP_SPLASH_SCREEN FALSE
              #endif
  51          
  52          
  53          /*_____ D E F I N I T I O N ________________________________________________*/
  54          
C51 COMPILER V7.06   MODE_TASK                                                             05/05/2005 12:12:03 PAGE 2   

  55          extern  bdata bit     gl_key_press;     /* set to TRUE if a key is decoded */
  56          extern  idata Byte    gl_key;           /* value of the key pressed */
  57          extern  data  Byte    gl_cpt_tick;      /* general tick counter */
  58          
  59          data  Byte    mode_state;               /* task state */
  60          
  61          
  62          /*_____ D E C L A R A T I O N ______________________________________________*/
  63          
  64          
  65          /*F**************************************************************************
  66          * NAME: mode_task_init
  67          *----------------------------------------------------------------------------
  68          * PARAMS:
  69          *
  70          * return:
  71          *----------------------------------------------------------------------------
  72          * PURPOSE: 
  73          *   Mode task initialization 
  74          *----------------------------------------------------------------------------
  75          * EXAMPLE:
  76          *----------------------------------------------------------------------------
  77          * NOTE:
  78          *----------------------------------------------------------------------------
  79          * REQUIREMENTS:
  80          *****************************************************************************/
  81          void mode_task_init (void)
  82          {
  83   1        mode_state = MODE_BOOT;
  84   1        song_task_init();
  85   1        voice_task_init();
  86   1        tool_task_init();
  87   1      }
  88          
  89          
  90          /*F**************************************************************************
  91          * NAME: mode_task
  92          *----------------------------------------------------------------------------
  93          * PARAMS:
  94          *
  95          * return:
  96          *----------------------------------------------------------------------------
  97          * PURPOSE: 
  98          *   Mode task 
  99          *----------------------------------------------------------------------------
 100          * EXAMPLE:
 101          *----------------------------------------------------------------------------
 102          * NOTE:
 103          *   STATES:
 104          *   MODE_BOOT     boot state
 105          *   MODE_SPLASH   wait splash time
 106          *   MODE_DOWNLOAD file download mode
 107          *   MODE_SONG     song playing mode
 108          *   MODE_VOICE    voice playing & recording mode
 109          *   MODE_TOOL     tool mode
 110          *   MODE_IDLE     idle mode (switch back to first task)
 111          *----------------------------------------------------------------------------
 112          * REQUIREMENTS:
 113          *****************************************************************************/
 114          void mode_task (void)
 115          {
 116   1        switch (mode_state)
C51 COMPILER V7.06   MODE_TASK                                                             05/05/2005 12:12:03 PAGE 3   

 117   1        {
 118   2          case MODE_BOOT:
 119   2          {
 120   3            #if START_CHECK_CPU_VERSION == TRUE
                    if ((NVERS != CHIP_VERSION) && (NVERS != (CHIP_VERSION + 1)))
                    {
                      print_screen(FATAL_SCREEN);
                      while (1);                          /* stop if bad chip version */
                    }
                    else
                    #endif
 128   3            {
 129   4              print_screen(SPLASH_SCREEN);
 130   4              print_string(SYS_VERSION);
 131   4              mode_state = MODE_SPLASH;
 132   4              gl_cpt_tick = SPLASH_TEMPO_INIT;
 133   4              /* workaound bug MP3 over-consumption after power-up */
 134   4              Pll_set_ndiv(534);
 135   4              Pll_set_rdiv(94);
 136   4              Mp3_set_clock(3);
 137   4              Pll_enable();        
 138   4              while (!Pll_get_lock());        /* wait PLL lock MAY BE REMOVED */ 
 139   4              Mp3_enable();                   /* start MP3 init */
 140   4              Mp3_disable();
 141   4              Pll_stop();
 142   4              /* end of workaround */
 143   4            }
 144   3            break;
 145   3          }
 146   2      
 147   2          case MODE_SPLASH:
 148   2          {
 149   3            if ((START_SKEEP_SPLASH_SCREEN == TRUE) || (gl_key_press) || (gl_cpt_tick > SPLASH_TEMPO))
 150   3            {
 151   4              gl_key_press = FALSE;               /* ack possible key press */
 152   4              mode_state = MODE_SONG;
 153   4            }
 154   3            break;
 155   3          }
 156   2      
 157   2          case MODE_DOWNLOAD:
 158   2          {
 159   3            break;
 160   3          }
 161   2      
 162   2          case MODE_SONG:
 163   2          {
 164   3            song_task();                          /* song mode */
 165   3            break;
 166   3          }
 167   2      
 168   2          case MODE_VOICE:
 169   2          {
 170   3            voice_task();                         /* voice mode */
 171   3            break;
 172   3          }
 173   2      
 174   2          case MODE_TOOL:
 175   2          {
 176   3            tool_task();                          /* tool mode */
 177   3            break;
 178   3          }
C51 COMPILER V7.06   MODE_TASK                                                             05/05/2005 12:12:03 PAGE 4   

 179   2      
 180   2          case MODE_IDLE: 
 181   2          {
 182   3            mode_state = MODE_SONG;
 183   3            break;
 184   3          }
 185   2        }
 186   1      }
 187          
 188          
 189          /*F**************************************************************************
 190          * NAME: mode_set_init
 191          *----------------------------------------------------------------------------
 192          * PARAMS:
 193          *
 194          * return:
 195          *----------------------------------------------------------------------------
 196          * PURPOSE: 
 197          *   Sets mode task in init state
 198          *----------------------------------------------------------------------------
 199          * EXAMPLE:
 200          *----------------------------------------------------------------------------
 201          * NOTE:
 202          *   Called from song, voice, mass, tool, usb tasks before stopping
 203          *----------------------------------------------------------------------------
 204          * REQUIREMENTS:
 205          *****************************************************************************/
 206          void mode_set_init (void)
 207          {
 208   1        mode_state++;
 209   1      }
 210          
 211          
 212          /*F**************************************************************************
 213          * NAME: mode_set_download
 214          *----------------------------------------------------------------------------
 215          * PARAMS:
 216          *
 217          * return:
 218          *----------------------------------------------------------------------------
 219          * PURPOSE: 
 220          *   Set mode task in download state
 221          *----------------------------------------------------------------------------
 222          * EXAMPLE:
 223          *----------------------------------------------------------------------------
 224          * NOTE:
 225          *   Called from usb task to stop the current task and switch to download task
 226          *----------------------------------------------------------------------------
 227          * REQUIREMENTS:
 228          *****************************************************************************/
 229          void mode_set_download (void)
 230          {
 231   1      #if MEM_CARD_TYPE != CARD_NONE
                mem_card_select(FALSE);                   /* try selecting card */
              #endif
 234   1        switch (mode_state)
 235   1        {
 236   2          case MODE_SONG:
 237   2          {
 238   3            while (mode_state == MODE_SONG)
 239   3            {
 240   4              kbd_set_stop();
C51 COMPILER V7.06   MODE_TASK                                                             05/05/2005 12:12:03 PAGE 5   

 241   4              song_task();                        /* exit song task */
 242   4            }
 243   3            mode_state = MODE_DOWNLOAD;
 244   3            break;
 245   3          }
 246   2        
 247   2          case MODE_VOICE:
 248   2          {
 249   3            while (mode_state == MODE_VOICE)
 250   3            {
 251   4              kbd_set_stop();
 252   4              voice_task();                       /* exit voice task */
 253   4            }
 254   3            mode_state = MODE_DOWNLOAD;
 255   3            break;
 256   3          }
 257   2        
 258   2          case MODE_TOOL:
 259   2          {
 260   3            while (mode_state == MODE_TOOL)
 261   3            {
 262   4              kbd_set_stop();
 263   4              tool_task();                        /* exit tool task */
 264   4            }
 265   3            mode_state = MODE_DOWNLOAD;
 266   3            break;
 267   3          }
 268   2      
 269   2          default:
 270   2          {
 271   3            mode_state = MODE_DOWNLOAD;
 272   3            break;
 273   3          }
 274   2        }
 275   1      }
 276          
 277          
 278          /*F**************************************************************************
 279          * NAME: mode_exit_download
 280          *----------------------------------------------------------------------------
 281          * PARAMS:
 282          *
 283          * return:
 284          *----------------------------------------------------------------------------
 285          * PURPOSE: 
 286          *   Switch mode task from download to song state
 287          *----------------------------------------------------------------------------
 288          * EXAMPLE:
 289          *----------------------------------------------------------------------------
 290          * NOTE:
 291          *   Called from usb task when disconnecting
 292          *----------------------------------------------------------------------------
 293          * REQUIREMENTS:
 294          *****************************************************************************/
 295          void mode_exit_download (void)
 296          {
 297   1        if (mode_state == MODE_DOWNLOAD)
 298   1        {
 299   2          mode_state++;
 300   2          #if MEM_CARD_TYPE != CARD_NONE
                    mem_card_select(FALSE);                   /* force reselect memory */
                  #endif
C51 COMPILER V7.06   MODE_TASK                                                             05/05/2005 12:12:03 PAGE 6   

 303   2        }
 304   1      }
 305          
 306          
 307          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    192    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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