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

📄 s8051.lst

📁 silicon wireless开发套件F920+Si4432原理图,源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.00   S8051                                                                 11/17/2008 10:50:41 PAGE 1   


C51 COMPILER V8.00, COMPILATION OF MODULE S8051
OBJECT MODULE PLACED IN S8051.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.exe S8051.c DB OE BR

line level    source

   1          /*
   2          ** ============================================================================
   3          **
   4          ** FILE
   5          **  S8051.c
   6          **
   7          ** DESCRIPTION
   8          **  Contains all the low level, 8051 dependent functions                    
   9          **
  10          ** CREATED
  11          **  Silicon Laboratories Hungary Ltd
  12          **
  13          ** COPYRIGHT
  14          **  Copyright 2008 Silicon Laboratories, Inc.  
  15          **      http://www.silabs.com
  16          **
  17          ** ============================================================================
  18          */
  19          #include "S8051.h"
  20          #include "timers.h"
  21          
  22          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  23            +
  24            + FUNCTION NAME:  void SetHwMasterSpi(void)
  25            +
  26            + DESCRIPTION:    Initialize the HW SPI port
  27            +
  28            +     INPUT:                  data 
  29            +
  30            + RETURN:         None
  31            +
  32            + NOTES:          It doesn't control the nSEL pin
  33            +
  34            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  35          void SetHwMasterSpi(void)
  36          {
  37   1              
  38   1              SPI1CFG   = 0x40;                                       //Master SPI, CKPHA=0, CKPOL=0
  39   1              SPI1CN    = 0x00;                                       //3-wire Single Master, SPI enabled
  40   1              SPI1CKR   = (SYSCLK/(2*SPI_CLOCK))-1;
  41   1              SPI1EN   = 1;                           // Enable SPI1 module
  42   1      
  43   1              //set nSEL pins to high
  44   1          RF_NSEL_PIN = 1;
  45   1          EE_NSEL_PIN = 1;
  46   1      }
  47          
  48          
  49          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  50            +
  51            + FUNCTION NAME:  void SpiWrite(uint8 spi_in)
  52            +
  53            + DESCRIPTION:    sends 8 length data through the SPI port
  54            +
  55            +     INPUT:                  data 
C51 COMPILER V8.00   S8051                                                                 11/17/2008 10:50:41 PAGE 2   

  56            +
  57            + RETURN:         None
  58            +
  59            + NOTES:          It doesn't control the nSEL pin
  60            +
  61            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  62          void SpiWrite(uint8 spi_in)
  63          {
  64   1              SPI1DAT = spi_in;                                       //write data into the SPI register
  65   1              while( SPIF1 == 0);                                     //wait for sending the data
  66   1              SPIF1 = 0;                                                      //clear interrupt flag
  67   1      }
  68          
  69          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  70            +
  71            + FUNCTION NAME:  uint8 SpiReadWrite(uint8 data)
  72            +
  73            + DESCRIPTION:    sends and read 8 length data through the SPI port
  74            +
  75            +     INPUT:                  data 
  76            +
  77            + RETURN:         received byte
  78            +
  79            + NOTES:          it doesn't control the nSEL pin
  80            +
  81            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  82          uint8 SpiReadWrite(uint8 spi_in)
  83          {
  84   1              SPI1DAT = spi_in;                                       //write data into the SPI register
  85   1              while( SPIF1 == 0);                                     //wait for sending the data
  86   1              SPIF1 = 0;                                                      //clear interrupt flag
  87   1              return SPI1DAT;                                         //read received bytes
  88   1      }
  89          
  90          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  91            +
  92            + FUNCTION NAME:  void SpiRfWriteWord(uint16 spi_in)
  93            +
  94            + DESCRIPTION:    sends 16 length data through the SPI port
  95            +
  96            +     INPUT:                  data 
  97            +
  98            + RETURN:         None
  99            +
 100            + NOTES:          It controls the nSEL pin
 101            +
 102            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 103          void SpiRfWriteWord(UU16 spi_in)
 104          {
 105   1              RF_NSEL_PIN = 0;                                                
 106   1              SpiWrite( spi_in.U8[MSB] );
 107   1              SpiWrite( spi_in.U8[LSB] );
 108   1              RF_NSEL_PIN = 1;
 109   1      }
 110          
 111          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 112            +
 113            + FUNCTION NAME:  void SpiRfWriteAddressData(uint8 address, uint8 data1)
 114            +
 115            + DESCRIPTION:    sends 16 length data through the SPI port (address and data)
 116            +
 117            +     INPUT:                  address - register address
C51 COMPILER V8.00   S8051                                                                 11/17/2008 10:50:41 PAGE 3   

 118            +                                     data    - 8bit data 
 119            +
 120            + RETURN:         None
 121            +
 122            + NOTES:          It controls the nSEL pin
 123            +
 124            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 125          void SpiRfWriteAddressData(uint8 address, uint8 d)
 126          {
 127   1              RF_NSEL_PIN = 0;
 128   1              SpiWrite(address);
 129   1              SpiWrite(d);
 130   1              RF_NSEL_PIN = 1;
 131   1      }
 132          
 133          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 134            +
 135            + FUNCTION NAME:  uint16 SpiRfReadWriteWord(uint16 spi_in)
 136            +
 137            + DESCRIPTION:    sends and read 16 length data through the SPI port
 138            +
 139            +     INPUT:                  data 
 140            +
 141            + RETURN:         received word
 142            +
 143            + NOTES:          it controls the nSEL pin
 144            +
 145            +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 146          UU16 SpiRfReadWriteWord(UU16 spi_in)
 147          {
 148   1              UU16 temp16;
 149   1      
 150   1              RF_NSEL_PIN = 0;                                                
 151   1              temp16.U8[MSB] = SpiReadWrite( spi_in.U8[MSB] );
 152   1              temp16.U8[LSB] = SpiReadWrite( spi_in.U8[LSB] );
 153   1              RF_NSEL_PIN = 1;
 154   1      
 155   1              return temp16;
 156   1      }
 157          
 158          /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 159            +
 160            + FUNCTION NAME:  uint8 SpiReadRegister(uint8 address)
 161            +
 162            + DESCRIPTION:    Read a register of the radio 
 163            +
 164            +     INPUT:                  address - register address

⌨️ 快捷键说明

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