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

📄 spi.lst

📁 串行存储芯片AT45DB161B的驱动程序
💻 LST
字号:
C51 COMPILER V7.06   SPI                                                                   06/12/2008 23:57:32 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN SPI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SPI.C DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2           * All rights reserved.         
   3           * atmel corporation data flash at45db161B driver.
   4           */
   5          
   6          #ifndef __SPI_C__
   7          #define __SPI_C__
   8          
   9          //#pragma LARGE  
  10          #include "SPI.h"
  11          #include "config.h"
  12          #include <stdlib.h>
  13          #include <intrins.h>
  14          // AT45DB161 operate code define
  15          #define AT45DB_BUFFER1_XFER         0x53
  16          #define AT45DB_BUFFER2_XFER         0x55
  17          #define AT45DB_BUFFER1_WRITE    0x84
  18          #define AT45DB_BUFFER2_WRITE    0x87
  19          #define AT45DB_WRITE_ONLY1          0x88
  20          #define AT45DB_WRITE_ONLY2          0x89
  21          #define AT45DB_PAGE_ERASE           0x81
  22          #define AT45DB_STATUS_READ          0xd7
  23          #define AT45DB_ARRAY_READ           0xE8
  24          
  25          // Added by alex 2007/10/24
  26          #define MAIN_TO_BUFFER1_TRANSFER        0x53
  27          #define BUFFER1_WRITE_ONLY                      0x84
  28          #define BUFFER1_TO_MAIN_IN_ERASE        0x83
  29          #define AUTO_PAGE_REWRITE                       0x58
  30          
  31          #define _at45db_begin()        _nop_();\ 
  32                                         _nop_();\ 
  33                                                                          EE_CS = 0;
  34          
  35          #define _at45db_end()           EE_CS = 1;
  36          
  37          void delay_ms(unsigned long count)
  38          {
  39   1              unsigned char i;
  40   1              while (count--)
  41   1              {
  42   2                      for (i=0; i<180; i++)
  43   2                      {
  44   3                              _nop_();
  45   3                  _nop_();
  46   3                      }
  47   2              }
  48   1      }
  49          
  50          void _delayxms(unsigned short count)
  51          {
  52   1              unsigned char i;
  53   1              while (count--)
  54   1              {
  55   2                      for (i=0; i<120; i++)
C51 COMPILER V7.06   SPI                                                                   06/12/2008 23:57:32 PAGE 2   

  56   2                      {
  57   3                              _nop_();
  58   3                      }
  59   2              }
  60   1      }
  61          
  62          
  63          void at45db_init()
  64          {
  65   1              _delayxms(100);
  66   1      
  67   1              EE_RST = 1;
  68   1              EE_CS  = 1;
  69   1              EE_SCK = 1;
  70   1              EE_SO  = 1;
  71   1              EE_SI  = 1;
  72   1      }
  73          
  74          
  75          void _at45db_write8(unsigned char udata)   //small
  76          {
  77   1              unsigned char i;
  78   1              for (i = 0; i < 8; i ++)
  79   1              {
  80   2                      EE_SCK = 0;
  81   2                      if ((udata & 0x80) == 0x80)
  82   2                      {
  83   3                              EE_SO = 1;
  84   3                      }
  85   2                      else
  86   2                      {
  87   3                              EE_SO = 0;
  88   3                      }
  89   2                      udata = udata << 1;
  90   2                      EE_SCK = 1;
  91   2              }
  92   1              EE_SO = 0;
  93   1              EE_SCK = 0;
  94   1      }
  95          
  96          unsigned char _at45db_read8()   //small
  97          {
  98   1              //unsigned char i, rdata = 0x00;
  99   1              unsigned char i;        
 100   1          xdata unsigned char rdata = 0x00;
 101   1          //EE_SI = 1;
 102   1              for (i = 0; i < 8; i ++)
 103   1              {
 104   2                      EE_SCK = 1;
 105   2                      
 106   2              rdata = (rdata << 1) | EE_SI;
 107   2                      
 108   2                      EE_SCK = 0;
 109   2              }
 110   1      
 111   1              return rdata;
 112   1      }
 113          
 114          
 115          unsigned char _at45db_check_busy()
 116          {
 117   1              unsigned char idle = 0x80;
C51 COMPILER V7.06   SPI                                                                   06/12/2008 23:57:32 PAGE 3   

 118   1              unsigned short i = 1024;
 119   1      
 120   1              while (i --)                                                    // 

⌨️ 快捷键说明

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