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

📄 mem_task.lst

📁 这是atmel公司的89C51SND1C的mp3源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.20c  MEM_TASK                                                              07/10/2002 15:17:40 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE MEM_TASK
OBJECT MODULE PLACED IN ..\obj\mem_task.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\src\mem\mem_task.c BROWSE INCDIR(..\src\system;..\..\..\lib) DEFINE(KEIL
                    -) DEBUG OBJECTEXTEND PRINT(.\mem_task.lst) OBJECT(..\obj\mem_task.obj) 

stmt level    source

   1          /*C**************************************************************************
   2          * $RCSfile: mem_task.c,v $
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2002 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      $Name: DEMO_FAT_1_2_5 $      
   7          * REVISION:     $Revision: 1.8 $     
   8          * FILE_CVSID:   $Id: mem_task.c,v 1.8 2002/06/07 15:46:17 ffosse Exp $       
   9          *----------------------------------------------------------------------------
  10          * PURPOSE:
  11          * This file contains the memory task and attached routines
  12          *
  13          * NOTES:
  14          * Global Variables:
  15          *   - gl_memory:    bit in bdata space
  16          *   - gl_mem_tick:  byte in data space
  17          *****************************************************************************/
  18          
  19          /*_____ I N C L U D E S ____________________________________________________*/
  20          
  21          #include "config.h"                         /* system configuration */
  22          #include "..\display\disp.h"                /* display definition */
  23          #include "..\file\file.h"                   /* file definition */
  24          #include "..\..\..\..\lib_mem\df\df.h"      /* dataflash definition */
  25          #include "..\..\..\..\lib_mem\mmc\mmc.h"    /* mmc definition */
  26          #include "mem_task.h"                       /* memory task definition */
  27          
  28          
  29          /*_____ M A C R O S ________________________________________________________*/
  30          
  31          
  32          /*_____ D E F I N I T I O N ________________________________________________*/
  33          
  34          extern  bdata   bit     gl_memory;          /* selected memory */
  35          extern  data    Byte    gl_mem_tick;        /* memory tick counter */
  36          
  37          static  Byte    mem_state;                  /* task state */
  38          static  bit     mem_force_mmc;
  39          
  40          /*_____ D E C L A R A T I O N ______________________________________________*/
  41          
  42          
  43          
  44          /*F**************************************************************************
  45          * NAME: mem_task_init
  46          *----------------------------------------------------------------------------
  47          * PARAMS:
  48          *
  49          * return:
  50          *----------------------------------------------------------------------------
  51          * PURPOSE: 
  52          *   Memory task initialization
  53          *----------------------------------------------------------------------------
  54          * EXAMPLE:
C51 COMPILER V6.20c  MEM_TASK                                                              07/10/2002 15:17:40 PAGE 2   

  55          *----------------------------------------------------------------------------
  56          * NOTE:
  57          *----------------------------------------------------------------------------
  58          * REQUIREMENTS:
  59          *****************************************************************************/
  60          void mem_task_init (void)
  61          {
  62   1        gl_memory = MEM_DF;                       /* select on-board memory */
  63   1        mem_state = MEM_INIT;
  64   1        mem_force_mmc = FALSE;
  65   1      }
  66          
  67          
  68          /*F**************************************************************************
  69          * NAME: mem_task
  70          *----------------------------------------------------------------------------
  71          * PARAMS:
  72          *
  73          * return:
  74          *----------------------------------------------------------------------------
  75          * PURPOSE: 
  76          *   Memory management task
  77          *----------------------------------------------------------------------------
  78          * EXAMPLE:
  79          *----------------------------------------------------------------------------
  80          * NOTE:
  81          *   STATES:
  82          *   MEM_DF_INIT         DF memory selection
  83          *   MEM_DF_IDLE         DF memory is selected
  84          *   MEM_MMC1_ACQ        MMC1 card acquisition
  85          *   MEM_MMC1_SETUP      MMC1 card setup
  86          *   MEM_MMC1_IDLE       MMC1 card selected
  87          *   MEM_MMC2_ACQ        MMC2 card acquisition
  88          *   MEM_MMC2_SETUP      MMC2 card setup
  89          *   MEM_MMC2_IDLE       MMC2 card selected
  90          *   MEM_MMC1_ERROR      MMC1 card error
  91          *   MEM_MMC2_ERROR      MMC2 card error
  92          *   MEM_DF_ERR_FMT      DF not formated
  93          *   MEM_MMC1_ERR_FMT    MMC1 card not formated
  94          *   MEM_MMC2_ERR_FMT    MMC2 card not formated
  95          *----------------------------------------------------------------------------
  96          * REQUIREMENTS:
  97          *****************************************************************************/
  98          void mem_task (void)
  99          {
 100   1      Byte    func_state;
 101   1      
 102   1        switch (mem_state)
 103   1        {
 104   2          case MEM_INIT:
 105   2          {
 106   3            mmc_init();                           /* memory initialization */
 107   3            if ((mem_state = df_init()) != 0)     /* memory initialization */
 108   3            {
 109   4              print_screen(FATAL_DF_SCREEN);
 110   4              print_decim(mem_state, TRUE);       /* display faulty DF number */
 111   4              while (1);                          /* stop if bad memory */
 112   4            }
 113   3            mem_state = MEM_DF_INIT;
 114   3            break;
 115   3          }
 116   2      
C51 COMPILER V6.20c  MEM_TASK                                                              07/10/2002 15:17:40 PAGE 3   

 117   2          case MEM_DF_INIT:
 118   2          {
 119   3            Mmc_disable();
 120   3            df_init_mem();
 121   3            gl_memory = MEM_DF;                   /* select on-board memory */
 122   3            print_mem(SYMB_DF);                   /* print on-board symbol */
 123   3            if (File_mount() == OK)               /* mount file system */
 124   3            {
 125   4              mem_state = MEM_DF_IDLE;
 126   4            }
 127   3            else
 128   3            {
 129   4              mem_state = MEM_DF_ERR_FMT;         /* memory not formatted */
 130   4            }
 131   3            break;
 132   3          }
 133   2      
 134   2          case MEM_DF_IDLE:
 135   2          {
 136   3            break;
 137   3          }
 138   2      
 139   2          case MEM_MMC1_INIT:
 140   2          {
 141   3            /* reset card stack */
 142   3            mmc_init_stack();
 143   3            gl_memory = MEM_MMC;
 144   3            mem_state = MEM_MMC1_ACQ;
 145   3            gl_mem_tick = MEM_FUNCT_TIME;         /* init delay timer */
 146   3            break;
 147   3          }
 148   2      
 149   2          case MEM_MMC1_ACQ:
 150   2          {
 151   3            if (gl_mem_tick >= MEM_DELAY_TIME)
 152   3            {
 153   4              /* send operating conditions */
 154   4              func_state = mmc_single_acq();
 155   4              if (func_state == MMC_ERROR)
 156   4              {
 157   5                mem_state = MEM_MMC1_ERROR;
 158   5              }
 159   4              else
 160   4              {
 161   5                if (func_state == MMC_END)        /* end of execution */
 162   5                { /* MMC1 CSD is available now */
 163   6                  if (!mmc_init_csd())            /* init & check card validity */
 164   6                  {
 165   7                    mem_state = MEM_MMC1_ERROR;
 166   7                  }
 167   6                  else
 168   6                  {
 169   7                    mem_state = MEM_MMC1_SETUP;
 170   7                  }
 171   6                }
 172   5                gl_mem_tick = MEM_FUNCT_TIME;     /* init delay timer */
 173   5              }
 174   4            }
 175   3            break;
 176   3          }
 177   2      
 178   2          case MEM_MMC1_SETUP: 
C51 COMPILER V6.20c  MEM_TASK                                                              07/10/2002 15:17:40 PAGE 4   

 179   2          {
 180   3            if (gl_mem_tick >= MEM_DELAY_TIME)
 181   3            { /* go to transfer state */
 182   4              func_state = mmc_setup_card(MMC_CARD1);
 183   4              if (func_state == MMC_ERROR)
 184   4              {
 185   5                mem_state = MEM_MMC1_ERROR;
 186   5              }
 187   4              else
 188   4              {
 189   5                if (func_state == MMC_END)        /* end of execution */
 190   5                {
 191   6                  gl_memory = MEM_MMC;
 192   6                  if (File_mount() == OK)         /* mount file system */
 193   6                  {
 194   7                    mem_state = MEM_MMC1_IDLE;
 195   7                  }
 196   6                  else
 197   6                  {
 198   7                    mem_state = MEM_MMC1_ERR_FMT; /* card not formatted */
 199   7                  }
 200   6                  print_mem(SYMB_MMC1);           /* print MMC1 symbol */
 201   6                }
 202   5                gl_mem_tick = MEM_FUNCT_TIME;     /* init delay timer */
 203   5              }
 204   4            }
 205   3            break;
 206   3          }
 207   2      
 208   2          case MEM_MMC1_IDLE:
 209   2          {
 210   3            break;
 211   3          }
 212   2      
 213   2          case MEM_MMC2_STACK_INIT:
 214   2          {
 215   3            /* reset card stack */
 216   3            mmc_init_stack();
 217   3            gl_memory = MEM_MMC;
 218   3            mem_state = MEM_MMC2_MMC1_ACQ;
 219   3            gl_mem_tick = MEM_FUNCT_TIME;         /* init delay timer */
 220   3            break;
 221   3          }
 222   2      
 223   2          case MEM_MMC2_MMC1_ACQ:
 224   2          {
 225   3            if (gl_mem_tick >= MEM_DELAY_TIME)
 226   3            {
 227   4              /* send operating conditions */
 228   4              func_state = mmc_single_acq();
 229   4              if (func_state == MMC_ERROR)
 230   4              {
 231   5                mem_state = MEM_MMC2_ERROR;
 232   5              }
 233   4              else
 234   4              {
 235   5                if (func_state == MMC_END)        /* end of execution */
 236   5                {
 237   6                  mem_state = MEM_MMC2_MMC1_SETUP;
 238   6                }
 239   5                gl_mem_tick = MEM_FUNCT_TIME;     /* init delay timer */
 240   5              }
C51 COMPILER V6.20c  MEM_TASK                                                              07/10/2002 15:17:40 PAGE 5   

 241   4            }
 242   3            break;
 243   3          }
 244   2      
 245   2          case MEM_MMC2_MMC1_SETUP: 
 246   2          {
 247   3            if (gl_mem_tick >= MEM_DELAY_TIME)
 248   3            {
 249   4              func_state = mmc_setup_card(MMC_CARD1);
 250   4              if (func_state == MMC_ERROR)
 251   4              {
 252   5                mem_state = MEM_MMC2_ERROR;
 253   5              }
 254   4              else
 255   4              {
 256   5                if (func_state == MMC_END)        /* end of execution */
 257   5                {
 258   6                  mem_state = MEM_MMC2_ACQ;
 259   6                }
 260   5                gl_mem_tick = MEM_FUNCT_TIME;     /* init delay timer */
 261   5              }
 262   4            }
 263   3            break;
 264   3          }
 265   2      
 266   2          case MEM_MMC2_INIT:
 267   2          {
 268   3            mmc_init_next();                      /* new acquisition */
 269   3            mem_state = MEM_MMC2_ACQ;
 270   3            gl_mem_tick = MEM_FUNCT_TIME;         /* init delay timer */
 271   3            break;
 272   3          }
 273   2      
 274   2          case MEM_MMC2_ACQ:
 275   2          {
 276   3            if (gl_mem_tick >= MEM_DELAY_TIME)
 277   3            {
 278   4              /* send operating conditions */
 279   4              func_state = mmc_update_acq();
 280   4              if (func_state == MMC_ERROR)
 281   4              {
 282   5                mem_state = MEM_MMC2_ERROR;
 283   5              }
 284   4              else
 285   4              {
 286   5                if (func_state == MMC_END)        /* end of execution */
 287   5                { /* MMC2 CSD is available now */
 288   6                  if (!mmc_init_csd())            /* init & check card validity */
 289   6                  {
 290   7                    mem_state = MEM_MMC2_ERROR;
 291   7                  }
 292   6                  else
 293   6                  {
 294   7                    mem_state = MEM_MMC2_SETUP;
 295   7                  }
 296   6                }
 297   5                gl_mem_tick = MEM_FUNCT_TIME;     /* init delay timer */
 298   5              }
 299   4            }
 300   3            break;
 301   3          }
 302   2      
C51 COMPILER V6.20c  MEM_TASK                                                              07/10/2002 15:17:40 PAGE 6   

 303   2          case MEM_MMC2_SETUP: 
 304   2          {
 305   3            if (gl_mem_tick >= MEM_DELAY_TIME)
 306   3            { /* go to transfer state */

⌨️ 快捷键说明

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