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

📄 mem_task.lst

📁 一个可作为mp3播放器固件的代码集,包括解码,播放,控制,任务管理等.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MEM_TASK                                                              09/20/2005 21:47:43 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MEM_TASK
OBJECT MODULE PLACED IN mem_task.obj
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE modules\mem\mem_task.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;.\;
                    -.\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\mem_task.lst) OBJECT(mem_task.obj)

line level    source

   1          /*C**************************************************************************
   2          * NAME:         mem_task.c
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2003 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      snd1c-refd-nf-4_0_3      
   7          * REVISION:     1.23     
   8          *----------------------------------------------------------------------------
   9          * PURPOSE:
  10          * This file contains the memory task and attached routines
  11          *
  12          * NOTES:
  13          * Global Variables:
  14          *   - gl_memory:    bit in bdata space
  15          *   - gl_mem_tick:  byte in data space
  16          *****************************************************************************/
  17          
  18          /*_____ I N C L U D E S ____________________________________________________*/
  19          
  20          #include "config.h"                         /* system configuration */
  21          #include "modules\display\disp.h"           /* display definition */
  22          #include "modules\file\file.h"              /* file definition */
  23          #include "hard.h"                           /* low level function definition */
  24          #include "mem_task.h"                       /* memory task definition */
  25          
  26          /*_____ M A C R O S ________________________________________________________*/
  27          
  28          
  29          /*_____ D E F I N I T I O N ________________________________________________*/
  30          
  31          extern  bdata   bit     gl_memory;          /* selected memory */
  32          extern  bdata   bit     fs_memory;          /* selected file system */
  33          extern  data    Byte    gl_mem_tick;        /* memory tick counter */
  34          
  35          Byte    mem_state;                          /* task state */
  36          static  bit     mem_force_mmc;
  37          
  38          /*_____ D E C L A R A T I O N ______________________________________________*/
  39          
  40          
  41          
  42          /*F**************************************************************************
  43          * NAME: mem_task_init
  44          *----------------------------------------------------------------------------
  45          * PARAMS:
  46          *
  47          * return:
  48          *----------------------------------------------------------------------------
  49          * PURPOSE: 
  50          *   Memory task initialization
  51          *----------------------------------------------------------------------------
  52          * EXAMPLE:
  53          *----------------------------------------------------------------------------
  54          * NOTE:
C51 COMPILER V7.50   MEM_TASK                                                              09/20/2005 21:47:43 PAGE 2   

  55          *----------------------------------------------------------------------------
  56          * REQUIREMENTS:
  57          *****************************************************************************/
  58          void mem_task_init (void)
  59          {
  60   1        mem_state = MEM_INIT;
  61   1        mem_force_mmc = FALSE;
  62   1        #if MEM_CHIP_TYPE != CHIP_NONE
  63   1          gl_memory = MEM_CHIP;             /* select on-board memory */
  64   1        #else
                  gl_memory = MEM_CARD;             /* select card memory */
                #endif
  67   1        #if (MEM_CARD_TYPE != CARD_NONE) && (CARD_SOCKET_NB == 2)
                  if (Card_get_socket() == MEM_CARD_2)
                  {
                    Card_select_next();   
                  }
                #endif
  73   1      }
  74          
  75          
  76          /*F**************************************************************************
  77          * NAME: mem_task
  78          *----------------------------------------------------------------------------
  79          * PARAMS:
  80          *
  81          * return:
  82          *----------------------------------------------------------------------------
  83          * PURPOSE: 
  84          *   Memory management task
  85          *----------------------------------------------------------------------------
  86          * EXAMPLE:
  87          *----------------------------------------------------------------------------
  88          * NOTE:
  89          *   STATES:
  90          *   MEM_INIT            memories initialization
  91          *   MEM_CHIP_INIT       on-chip memory selection
  92          *   MEM_CHIP_IDLE       on-chip memory is selected
  93          *   MEM_CHIP_ERR_FMT    on-chip memory not formated
  94          *   MEM_CARD_INIT       card initialization
  95          *   MEM_CARD_IDLE       card selected
  96          *   MEM_CARD_ERR        card error
  97          *   MEM_CARD_ERR_FMT    card not formated
  98          *   MEM_CARD_NO_CARD    no card insert
  99          *----------------------------------------------------------------------------
 100          * REQUIREMENTS:
 101          *****************************************************************************/
 102          void mem_task (void)
 103          {
 104   1      Byte state;
 105   1      
 106   1        switch (mem_state)
 107   1        {
 108   2          case MEM_INIT:
 109   2          {
 110   3            #if MEM_CHIP_TYPE != CHIP_NONE          /* if chip defined */
 111   3              if (Hard_chip_init() == OK)           /* if init chip OK */
 112   3              {
 113   4                mem_state = MEM_CHIP_INIT;          /* install chip */
 114   4              }
 115   3              #if MEM_CARD_TYPE != CARD_NONE        /* if card defined */
                        if (Hard_card_init() == KO)         /* init card */
C51 COMPILER V7.50   MEM_TASK                                                              09/20/2005 21:47:43 PAGE 3   

                        {
                          if (mem_state == MEM_INIT)          /* if chip and card init failed */
                          {
                            print_screen(FATAL_CHIP_SCREEN);    /* fatal error */
                            while(1);
                          }
                        }
                        else
                        {
                          if (mem_state == MEM_INIT)
                          {
                            mem_state = MEM_CARD_INIT;         /* install card */
                          }
                        }
                      #else
 132   3                if (mem_state == MEM_INIT)          /* if chip init failed and no card defined */
 133   3                {
 134   4                  print_screen(FATAL_CHIP_SCREEN);    /* fatal error */
 135   4                  while(1);
 136   4                }
 137   3              #endif
 138   3            #else
                      if (Hard_card_init() == OK)         /* init card */
                      {
                        mem_state = MEM_CARD_INIT;
                      }
                    #endif
 144   3            break;
 145   3          }
 146   2      
 147   2          case MEM_CHIP_INIT:
 148   2          {
 149   3            #if (MEM_CHIP_TYPE == CHIP_NONE)
                      mem_state = MEM_CARD_INIT;
                      break;
                    #else
 153   3              Hard_card_uninstall();
 154   3              state = Hard_chip_install();
 155   3              if (state == MEM_OK)
 156   3              {
 157   4                gl_memory = MEM_CHIP;                 /* select on-board memory */
 158   4                print_mem(SYMB_CHIP);                 /* print on-board symbol */
 159   4                #if (MEM_CHIP_FS == FS_FAT_32) || (MEM_CHIP_FS == FS_FAT_12_16)
 160   4                  fs_memory = FS_MEM_FAT;
 161   4                #else
                          fs_memory = FS_MEM_ISO;
                        #endif
 164   4                if (File_mount() == OK)               /* mount file system */
 165   4                {
 166   5                  mem_state = MEM_CHIP_IDLE;
 167   5                }
 168   4                else
 169   4                {
 170   5                  mem_state = MEM_CHIP_ERR_FMT;       /* memory not formatted */
 171   5                }
 172   4              }
 173   3              break;
 174   3            #endif
 175   3          }
 176   2      
 177   2          case MEM_CHIP_IDLE:
 178   2          {
C51 COMPILER V7.50   MEM_TASK                                                              09/20/2005 21:47:43 PAGE 4   

 179   3            break;
 180   3          }
 181   2      
 182   2          case MEM_CHIP_ERR_FMT:
 183   2          {
 184   3            break;
 185   3          }
 186   2      
 187   2          case MEM_CARD_INIT:
 188   2          {
 189   3            #if (MEM_CARD_TYPE == CARD_NONE)
 190   3              mem_state = MEM_CHIP_INIT;
 191   3              break;
 192   3            #else
                      state = Hard_card_install(); /* get state of card install */
                      if (state == MEM_OK)  /* if card installation OK */
                      {
                        if (Card_check_presence() == OK) /* always check if a card is present */
                        {
                          gl_memory = MEM_CARD; /* select card for interface */
                          #if CARD_SOCKET_NB == 2    /* if project define two card sockets */
                            if (Card_get_socket() == MEM_CARD_1)
                            {
                              print_mem(SYMB_CARD1);  /* print CARD1 symbol */
                            }
                            else
                            {
                              print_mem(SYMB_CARD2);  /* print CARD2 symbol */
                            }
                          #else                       /* if project define only one socket */
                            print_mem(SYMB_CARD);     /* print CARD symbol */
                          #endif
              
                          #if (MEM_CARD_FS == FS_FAT_32) || (MEM_CARD_FS == FS_FAT_12_16)
                            fs_memory = FS_MEM_FAT;
                          #else
                            fs_memory = FS_MEM_ISO;
                          #endif
              
                          if (File_mount() == OK)     /* Install file system */
                          {
                            mem_state = MEM_CARD_IDLE;/* if fs OK set card as idle */
                          }
                          else
                          {
                            mem_state = MEM_CARD_ERR_FMT;/* fs is not OK */
                          }
                        }
                        else
                        {
                          mem_state = MEM_CARD_NO_CARD; /* no card in socket */
                        }
                      }
                      else
                      {
                        if (state == MEM_KO)
                        {
                          #if CARD_SOCKET_NB == 2              /* if 2 card sources defines */
                            if (Card_get_socket() == MEM_CARD_2)
                            {
                              mem_state = MEM_CHIP_INIT;  /* 2nd card socket -> select on board memory */
                            }            
C51 COMPILER V7.50   MEM_TASK                                                              09/20/2005 21:47:43 PAGE 5   

                            Card_select_next();                  /* select next card source */
                          #else
                            #if MEM_CHIP_TYPE != CHIP_NONE
                              mem_state = MEM_CHIP_INIT;    /* select on board memory */
                            #else
                              mem_state = MEM_CARD_NO_CARD;
                            #endif
                          #endif
                        }
                      }
                      break;
                    #endif
 253   3          }
 254   2      
 255   2          case MEM_CARD_IDLE:
 256   2          {
 257   3            break;
 258   3          }
 259   2      
 260   2          case MEM_CARD_ERR:
 261   2          {
 262   3            #if (MEM_CARD_TYPE != CARD_NONE)
                      #if (CARD_SOCKET_NB == 2)   /* if 2x card socket */
                        if (mem_force_mmc)
                        {
                          mem_state = MEM_CARD_INIT;
                        }
                        else
                        {
                          Hard_card_uninstall();
                          if (Card_get_socket() == MEM_CARD_1)
                          {
                            mem_state = MEM_CARD_INIT;
                          }
                          else
                          {
                            mem_state = MEM_CHIP_INIT;
                          }
                          Card_select_next();
                        }
                      #endif
                    #endif
 283   3            
 284   3            break;
 285   3          }
 286   2      
 287   2          case MEM_CARD_ERR_FMT:
 288   2          {
 289   3            break;
 290   3          }
 291   2      
 292   2          case MEM_CARD_NO_CARD:          /* medium is not present or tray (CDR) is open */
 293   2          {
 294   3            #if (MEM_CARD_TYPE != CARD_NONE)
                      if (Card_check_presence() == OK)   /* if we detect a medium */
                        mem_state = MEM_CARD_INIT;  /* init this medium */

⌨️ 快捷键说明

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