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

📄 spi.lst

📁 这是C8051F005的SPI通信程序
💻 LST
字号:
C51 COMPILER V8.02   SPI                                                                   03/23/2009 10:26:45 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN SPI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe SPI.c DB OE

line level    source

   1          #include <c8051f020.h>
   2          #include <stdio.h>
   3          #include <intrins.h>
   4          
   5          unsigned int Count1msInc;
   6          unsigned int AT450XXPageAddr;
   7          
   8          void SYSCLK_Init (void);
   9          void PORT_Init (void);
  10          void SPI0_Init (void);
  11          void Timer0_Init (void);
  12          
  13          #define SYSCLK     11059200
  14          #define DF_RESET     P4&=~0x10; P4|=0x10;      // AT45DB081复位
  15          #define DF_RDY_BUSY    P4|=0x20; while(!(P4&0x20));  // 等待AT45DB081准备好
  16          #define DF_CHIP_SELECT    P4&=~0x4;       // AT45DB081片选开
  17          #define DF_CHIP_NOSELECT   P4|=0x4;       // AT45DB081片选关
  18          #define RAM_CHIP_SELECT_BANK0  ES0=1;P4 = 0xF4;  
  19          #define RAM_CHIP_SELECT_BANK1  P4 = 0xF5;  
  20          #define BUFFER_1 0x00       // buffer 1
  21          #define BUFFER_2 0x01       // buffer 2
  22          #define BUFFER_1_WRITE 0x84     // buffer 1 write
  23          #define BUFFER_2_WRITE 0x87     // buffer 2 write
  24          #define BUFFER_1_READ  0x54     // buffer 1 read (change to 0xD4 for SPI mode 0,3)
  25          #define BUFFER_2_READ  0x56     // buffer 2 read (change to 0xD6 for SPI mode 0,3)
  26          #define B1_TO_PAGE_WITH_ERASE 0x83    // buffer 1 to main memory page program with built-in erase
  27          #define B2_TO_PAGE_WITH_ERASE 0x86    // buffer 2 to main memory page program with built-in erase
  28          #define B1_TO_PAGE_WITHOUT_ERASE 0x88   // buffer 1 to main memory page program without built-in erase
  29          #define B2_TO_PAGE_WITHOUT_ERASE 0x89   // buffer 2 to main memory page program without built-in erase
  30          #define PAGE_PROG_THROUGH_B1 0x82    // main memory page program through buffer 1
  31          #define PAGE_PROG_THROUGH_B2 0x85    // main memory page program through buffer 2
  32          #define AUTO_PAGE_REWRITE_THROUGH_B1 0x58  // auto page rewrite through buffer 1
  33          #define AUTO_PAGE_REWRITE_THROUGH_B2 0x59  // auto page rewrite through buffer 2
  34          #define PAGE_TO_B1_COMP 0x60     // main memory page compare to buffer 1
  35          #define PAGE_TO_B2_COMP 0x61     // main memory page compare to buffer 2
  36          #define PAGE_TO_B1_XFER 0x53     // main memory page to buffer 1 transfer
  37          #define PAGE_TO_B2_XFER 0x55     // main memory page to buffer 2 transfer
  38          #define STATUS_REGISTER 0x57
  39          #define MAIN_MEMORY_PAGE_READ 0x52    // main memory page read (change to 0xD2 for SPI mode 0,3)
  40          
  41          void SendSPIByte(unsigned char ch)
  42          {
  43   1        SPIF = 0;
  44   1        SPI0DAT = ch;
  45   1        while (SPIF == 0);      // 等待写结束           
  46   1      } 
  47          unsigned char GetSPIByte(void)
  48          {
  49   1              SPIF = 0;
  50   1        SPI0DAT = 0;
  51   1        while (SPIF == 0);
  52   1        return  SPI0DAT;                   // 等待读结束
  53   1      }
  54          //启用缓存1读
  55          void FlashBuffer1Read(unsigned int star_addr,unsigned int len, unsigned char *buffer) //从缓冲区1的指定位

⌨️ 快捷键说明

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