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

📄 spi.lst

📁 本代码为SPI/I2C转双串口驱动程序。开发环境为Keil c51.
💻 LST
字号:
C51 COMPILER V7.09   SPI                                                                   11/08/2005 15:50:14 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN SPI.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE SPI.c OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          
   3          sbit CS=P1^0;
   4          sbit SI=P1^1;
   5          sbit SO=P1^2;
   6          sbit SCLK=P1^3;
   7          
   8          
   9          void SPI_Send(char temp)
  10          {
  11   1              int i;
  12   1      
  13   1              CS=0;
  14   1              for(i=0x00;i<0x08;i++)
  15   1              {
  16   2      
  17   2                      if(temp&0x80)
  18   2                      {
  19   3                              SI=1;
  20   3                      }
  21   2                      else
  22   2                      {
  23   3                              SI=0;
  24   3                      }
  25   2                      temp=temp<<1;
  26   2      
  27   2                      SCLK=0;
  28   2                      SCLK=1;
  29   2              }
  30   1      
  31   1              CS=1;
  32   1      
  33   1      }
  34          
  35          char SPI_Read()
  36          {
  37   1              char temp;
  38   1              int i;
  39   1      
  40   1              CS=0;
  41   1      
  42   1              for(i=0x00;i<0x08;i++)
  43   1              {
  44   2                      temp=temp<<1;
  45   2      
  46   2                      SCLK=0;
  47   2                      SCLK=1;
  48   2      
  49   2                      if(SO==1)
  50   2                      {
  51   3                              temp=temp|0x01;
  52   3                      }
  53   2                      else
  54   2                      {
  55   3                              temp=temp&0xFE;
C51 COMPILER V7.09   SPI                                                                   11/08/2005 15:50:14 PAGE 2   

  56   3                      }
  57   2              }
  58   1      
  59   1              CS=1;
  60   1              return temp;
  61   1      }
  62          
  63          
  64          char SPI_ReadRegister(char Reg,char channel)
  65          {
  66   1              char RegValue;
  67   1      
  68   1              Reg=Reg<<2;
  69   1              Reg=Reg+channel;
  70   1              Reg=Reg|0x80;
  71   1      
  72   1              SPI_Send(Reg);
  73   1              RegValue=SPI_Read();
  74   1      
  75   1              return RegValue;
  76   1      }       
  77          
  78          void SPI_WriteRegister(char Reg,char channel,char RegValue)
  79          {
  80   1              Reg=Reg<<2;
  81   1              Reg=Reg+channel;
  82   1              Reg=Reg&0x7F;
  83   1      
  84   1              SPI_Send(Reg);
  85   1              SPI_Send(RegValue);
  86   1      }
  87          
  88          //-----------------------------------------
  89          //ReadData
  90          //-----------------------------------------
  91          void SPI_ReadData(char Reg,char channel,char *Value,unsigned char num)
  92          {
  93   1              Reg=Reg<<2;
  94   1              Reg=Reg+channel;
  95   1              Reg=Reg|0x80;
  96   1      
  97   1              SPI_Send(Reg);
  98   1              while(num>0)
  99   1              {
 100   2                      *Value=SPI_Read();
 101   2                      Value++;
 102   2                      num--;
 103   2              }
 104   1      }
 105          
 106          //-----------------------------------------
 107          //WriteData
 108          //-----------------------------------------
 109          void SPI_WriteData(unsigned char Reg,unsigned char channel,unsigned char *Value,unsigned char num)
 110          {
 111   1              Reg=Reg<<3;
 112   1              Reg=Reg+channel;
 113   1      
 114   1              SPI_Send(Reg);
 115   1              while(num>0)
 116   1              {
 117   2                      SPI_Send(*Value);
C51 COMPILER V7.09   SPI                                                                   11/08/2005 15:50:14 PAGE 3   

 118   2                      Value++;
 119   2                      num--;  
 120   2              }
 121   1      }       


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    316    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      24
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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