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

📄 df.lst

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


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

stmt level    source

   1          /*C**************************************************************************
   2          * $RCSfile: df.c,v $
   3          *----------------------------------------------------------------------------
   4          * Copyright (c) 2002 Atmel.
   5          *----------------------------------------------------------------------------
   6          * RELEASE:      $Name: DEMO_FAT_1_2_5 $      
   7          * REVISION:     $Revision: 1.7 $     
   8          * FILE_CVSID:   $Id: df.c,v 1.7 2002/05/24 09:51:15 njourdan Exp $       
   9          *----------------------------------------------------------------------------
  10          * PURPOSE:
  11          * This file contains the low-level dataflash routines
  12          *
  13          * NOTES:
  14          * Global Variables:
  15          *   - gl_ptr_mem: long in data space
  16          *****************************************************************************/
  17          
  18          /*_____ I N C L U D E S ____________________________________________________*/
  19          
  20          #include "config.h"                         /* system configuration */
  21          #include "c51_drv.h"                        /* c51 driver definition */
  22          #include "..\..\lib\usb\usb_drv.h"          /* usb driver definition */
  23          #include "..\..\lib\spi\spi_drv.h"          /* spi driver definition */
  24          #include "df.h"                             /* dataflash definition */
  25          
  26          
  27          /*_____ M A C R O S ________________________________________________________*/
  28          
  29          
  30          /*_____ D E F I N I T I O N ________________________________________________*/
  31          
  32          extern  data    Uint32  gl_ptr_mem;         /* memory data pointer */
  33          
  34          static  bit     df_mem_busy;                /* memory in busy state */
  35          
  36          
  37          /*_____ D E C L A R A T I O N ______________________________________________*/
  38          
  39          static  void    df_busy (void);
  40          
  41          
  42          
  43          /*F**************************************************************************
  44          * NAME: df_init
  45          *----------------------------------------------------------------------------
  46          * PARAMS:
  47          *
  48          * return:
  49          *   memory number if failed
  50          *----------------------------------------------------------------------------
  51          * PURPOSE: 
  52          *   Dataflash controller initialization & memory check
  53          *----------------------------------------------------------------------------
  54          * EXAMPLE:
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 2   

  55          *----------------------------------------------------------------------------
  56          * NOTE:
  57          *----------------------------------------------------------------------------
  58          * REQUIREMENTS:
  59          *****************************************************************************/
  60          Byte df_init (void)
  61          {
  62   1        Spi_set_mode(SPI_MASTER_MODE_3);
  63   1        Spi_set_rate(SPI_RATE_0);
  64   1        Spi_disable_ss();
  65   1        Spi_enable();
  66   1        DF_CS0 = 0;                               /* select first memory */
  67   1        Spi_write_data(DF_RD_STATUS);             /* read status */
  68   1        Spi_ack_cmd();
  69   1        Spi_write_dummy();                        /* dummy write to get status */
  70   1        Spi_ack_read();
  71   1        if ((Spi_read_data() & DF_MSK_DENSITY) != DF_DENSITY)
  72   1        {
  73   2          return (1);
  74   2        }
  75   1        DF_CS0 = 1;
  76   1        DF_CS1 = 0;                               /* select second memory */
  77   1        Spi_write_data(DF_RD_STATUS);             /* read status */
  78   1        Spi_ack_cmd();
  79   1        Spi_write_dummy();                        /* dummy write to get status */
  80   1        Spi_ack_read();
  81   1        if ((Spi_read_data() & DF_MSK_DENSITY) != DF_DENSITY)
  82   1        {
  83   2          return (2);
  84   2        }
  85   1        DF_CS1 = 1;
  86   1        DF_CS2 = 0;                               /* select third memory */
  87   1        Spi_write_data(DF_RD_STATUS);             /* read status */
  88   1        Spi_ack_cmd();
  89   1        Spi_write_dummy();                        /* dummy write to get status */
  90   1        Spi_ack_read();
  91   1        if ((Spi_read_data() & DF_MSK_DENSITY) != DF_DENSITY)
  92   1        {
  93   2          return (3);
  94   2        }
  95   1        DF_CS2 = 1;
  96   1        DF_CS3 = 0;                               /* select fourth memory */
  97   1        Spi_write_data(DF_RD_STATUS);             /* read status */
  98   1        Spi_ack_cmd();
  99   1        Spi_write_dummy();                        /* dummy write to get status */
 100   1        Spi_ack_read();
 101   1        if ((Spi_read_data() & DF_MSK_DENSITY) != DF_DENSITY)
 102   1        {
 103   2          return (4);
 104   2        }
 105   1        DF_CS3 = 1;
 106   1        df_mem_busy = FALSE;                      /* memory ready */
 107   1        return 0;
 108   1      }
 109          
 110          
 111          /*F**************************************************************************
 112          * NAME: df_init_mem
 113          *----------------------------------------------------------------------------
 114          * PARAMS:
 115          *
 116          * return:
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 3   

 117          *----------------------------------------------------------------------------
 118          * PURPOSE: 
 119          *   Dataflash initialization
 120          *----------------------------------------------------------------------------
 121          * EXAMPLE:
 122          *----------------------------------------------------------------------------
 123          * NOTE:
 124          *----------------------------------------------------------------------------
 125          * REQUIREMENTS:
 126          *****************************************************************************/
 127          void df_init_mem (void)
 128          {
 129   1        df_mem_busy = FALSE;                      /* memory ready */
 130   1      }
 131          
 132          
 133          /*F**************************************************************************
 134          * NAME: df_busy
 135          *----------------------------------------------------------------------------
 136          * PARAMS:
 137          *
 138          * return:
 139          *----------------------------------------------------------------------------
 140          * PURPOSE: 
 141          *   Wait end of DataFlash busy status
 142          *----------------------------------------------------------------------------
 143          * EXAMPLE:
 144          *----------------------------------------------------------------------------
 145          * NOTE:
 146          *----------------------------------------------------------------------------
 147          * REQUIREMENTS:
 148          *****************************************************************************/
 149          void df_busy (void)
 150          {
 151   1        /* select right memory */
 152   1        if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
 153   1        {
 154   2          if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 155   2            DF_CS0 = 0;
 156   2          else
 157   2            DF_CS1 = 0;
 158   2        }
 159   1        else
 160   1        {
 161   2          if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 162   2            DF_CS2 = 0;
 163   2          else
 164   2            DF_CS3 = 0;
 165   2        }
 166   1        Spi_write_data(DF_RD_STATUS);             /* read status */
 167   1        Spi_ack_cmd();
 168   1        Spi_write_dummy();                        /* dummy write to get status */
 169   1        Spi_ack_read();
 170   1        while ((Spi_read_data() & DF_MSK_BIT_BUSY) == DF_MEM_BUSY)
 171   1        {
 172   2          Spi_write_dummy();                      /* dummy write to get status */
 173   2          Spi_ack_read();
 174   2        }
 175   1        DF_CS |= DF_DESEL_ALL;                    /* deselect memory */
 176   1      }
 177          
 178          
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 4   

 179          /*F**************************************************************************
 180          * NAME: df_read_open
 181          *----------------------------------------------------------------------------
 182          * PARAMS:
 183          *   pos: next read operation address
 184          *
 185          * return:
 186          *   status: TRUE: open done
 187          *           FALSE: open not done: memory is still busy
 188          *----------------------------------------------------------------------------
 189          * PURPOSE: 
 190          *   Open memory in read mode 
 191          *----------------------------------------------------------------------------
 192          * EXAMPLE:
 193          *----------------------------------------------------------------------------
 194          * NOTE:
 195          *   Address may not be synchronized on the beginning of a page
 196          *----------------------------------------------------------------------------
 197          * REQUIREMENTS:
 198          *****************************************************************************/
 199          bit df_read_open (Uint32 pos)
 200          {
 201   1        gl_ptr_mem = pos << 9;                    /* gl_ptr_mem = pos * 512 */
 202   1        if (df_mem_busy)
 203   1        {
 204   2          df_mem_busy = FALSE;
 205   2          df_busy();                              /* wait end of programming */
 206   2        }
 207   1      
 208   1        /* select right memory */
 209   1        if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
 210   1        {
 211   2          if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 212   2            DF_CS0 = 0;
 213   2          else
 214   2            DF_CS1 = 0;
 215   2        }
 216   1        else
 217   1        {

⌨️ 快捷键说明

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