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

📄 spi.lst

📁 矩力公司电能计量芯片实际应用电路代码资料,放心下载!
💻 LST
字号:
C51 COMPILER V7.06   SPI                                                                   04/29/2009 14:40:58 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 BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          ////////////////////////////////////////////////////////////////////////////
   2          ////////////////////////////////////////////////////////////////////////////
   3           ///////////////////////////////////////////////////////////////////////////
   4           #include "c8051.h"
   5          extern bit RESET_bz; 
   6          extern uchar SPI_CM;                  //用于存放SPI读或写的命令字
   7           extern uchar SPI_Data[3];             //用于存放SPI读或写的数据
   8          
   9           void SPIRead()
  10            {
  11   1          uchar i,k;
  12   1              SPI_CS=1;
  13   1              _nop_();
  14   1              SPI_CK=0;
  15   1              _nop_();
  16   1              _nop_();
  17   1              _nop_();
  18   1              SPI_CS=0;
  19   1              for(i=0;i<8;i++)
  20   1           {
  21   2                 SPI_CK=1;
  22   2                 if(SPI_CM&0x80)
  23   2                      SPI_DI=1;
  24   2                 else 
  25   2                      SPI_DI=0;
  26   2             _nop_();
  27   2                 _nop_();
  28   2                 _nop_();
  29   2                 _nop_();
  30   2                 _nop_();
  31   2                 _nop_();
  32   2                 SPI_CK=0;
  33   2                 SPI_CM=SPI_CM<<1;
  34   2                }
  35   1          SPI_DI=0;
  36   1              _nop_();
  37   1              _nop_();
  38   1              _nop_();
  39   1             _nop_();
  40   1                 _nop_();
  41   1                 _nop_();
  42   1              for(k=0;k<3;k++)
  43   1            {SPI_Data[k]=0;
  44   2                for(i=0;i<8;i++)
  45   2                 {SPI_Data[k]=SPI_Data[k]<<1;
  46   3                 SPI_CK=1;
  47   3                 _nop_();
  48   3                 _nop_();
  49   3                 _nop_();
  50   3                 _nop_();
  51   3                 _nop_();
  52   3                 _nop_();
  53   3                 if(SPI_DO)
  54   3                    SPI_Data[k]=SPI_Data[k]|0x01;
  55   3                        SPI_CK=0;
C51 COMPILER V7.06   SPI                                                                   04/29/2009 14:40:58 PAGE 2   

  56   3             }
  57   2                }
  58   1            SPI_CS=1;
  59   1         }
  60          //SPI写函数
  61           void SPIWrite()
  62           {
  63   1         uchar i,k;
  64   1              SPI_CS=1;
  65   1              _nop_();
  66   1                      _nop_();
  67   1              _nop_();
  68   1              _nop_();
  69   1              _nop_();
  70   1              _nop_();
  71   1              _nop_();
  72   1              _nop_();
  73   1              SPI_CK=0;
  74   1              _nop_();
  75   1              _nop_();
  76   1              _nop_();
  77   1              _nop_();
  78   1              _nop_();
  79   1              _nop_();
  80   1              SPI_CS=0;
  81   1              SPI_CM=SPI_CM&0x80;
  82   1              for(i=0;i<8;i++)
  83   1           {
  84   2                 SPI_CK=1;
  85   2                 if(SPI_CM&0x80)
  86   2                      SPI_DI=1;
  87   2                 else 
  88   2                      SPI_DI=0;
  89   2             _nop_();
  90   2                      _nop_();
  91   2              _nop_();
  92   2              _nop_();
  93   2              _nop_();
  94   2              _nop_();
  95   2              _nop_();
  96   2              _nop_();
  97   2                 SPI_CK=0;
  98   2                 SPI_CM=SPI_CM<<1;
  99   2                }
 100   1                SPI_DI=0;
 101   1                for(k=0;k<3;k++)
 102   1                   {
 103   2                         for(i=0;i<8;i++)
 104   2                         {
 105   3                         SPI_CK=1;
 106   3                         _nop_();
 107   3                              _nop_();
 108   3                      _nop_();
 109   3                              _nop_();
 110   3                      _nop_();
 111   3                      _nop_();
 112   3      
 113   3                         if(SPI_Data[k]&0x80)
 114   3                                 SPI_DI=1;
 115   3                 else
 116   3                                 SPI_DI=0;
 117   3                         _nop_();
C51 COMPILER V7.06   SPI                                                                   04/29/2009 14:40:58 PAGE 3   

 118   3                                              _nop_();
 119   3                              _nop_();
 120   3                                          _nop_();
 121   3                              _nop_();
 122   3                              _nop_();
 123   3                                         SPI_CK=0;
 124   3                                         SPI_Data[k]=SPI_Data[k]<<1;
 125   3                }
 126   2      
 127   2              }
 128   1                 SPI_DI=0;
 129   1                 SPI_CS=1;
 130   1       }
 131          
 132           ///////////////////////////////////////////////////////////////////////////
 133          void SPImtWrite()
 134           {
 135   1          SPI_Data[0]=0x00;
 136   1          SPI_Data[1]=0x00;
 137   1              SPI_Data[2]=0x00;
 138   1               SPI_CM=0xc9;
 139   1          SPIWrite( );                                   //允许校表寄存器修改
 140   1      
 141   1              SPI_Data[0]=0x00;
 142   1          SPI_Data[1]=0x00;
 143   1              SPI_Data[2]=0x00;
 144   1               SPI_CM=0x80;
 145   1          SPIWrite( );                                  //写起始校表命令字,任意三个字节写到校表寄存器00H里
 146   1      
 147   1              SPI_Data[0]=0x00;
 148   1          SPI_Data[1]=0x00;
 149   1              SPI_Data[2]=0x01;
 150   1               SPI_CM=0xaa;
 151   1          SPIWrite( );                                  //三相三线合相能量累加模式,=1为绝对值相加   =0代数相加 
 152   1      
 153   1              SPI_Data[0]=0x00;
 154   1          SPI_Data[1]=0x00;
 155   1              SPI_Data[2]=0x4f;
 156   1               SPI_CM=0x0a;                                 //三个字节数据根据公式计算出来   脉冲常数为200,电压380v,电

⌨️ 快捷键说明

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