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

📄 jieshou.lst

📁 NRF905无线收发模块详细资料
💻 LST
字号:
C51 COMPILER V7.06   JIESHOU                                                               04/11/2008 22:34:51 PAGE 1   


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

stmt level    source

   1          #include <reg52.h>
   2          #include <ABSACC.h>
   3          #include <intrins.h>
   4          #include <stdio.h>
   5          #define uint unsigned int                     //0 ~ 255
   6          #define uchar unsigned char
   7          //--------------------------------------------------------------------------------------------------------
             ----------
   8          #define BYTE_BIT0       0x01
   9          #define BYTE_BIT1       0x02
  10          #define BYTE_BIT2       0x04
  11          #define BYTE_BIT3       0x08
  12          #define BYTE_BIT4       0x10
  13          #define BYTE_BIT5       0x20
  14          #define BYTE_BIT6       0x40
  15          #define BYTE_BIT7       0x80
  16          bdata unsigned  char DATA_BUF;
  17          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  18          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  19          sbit    flag    =DATA_BUF^7;
  20          sbit    flag1   =DATA_BUF^0;
  21          //--------------------------------------------------------------------------------------------------------
             ---------
  22          #define TxRxBuf_Len 32
  23          unsigned char TxRxBuffer[TxRxBuf_Len];
  24          //------------------------------------------------NRF905端口配置------------------------------------------
             ---------
  25          sbit    TXEN=P1^0;
  26          sbit    TRX_CE=P3^4;
  27          sbit    PWR=P1^1;
  28          sbit    MISO=P1^6;
  29          sbit    MOSI=P1^5;
  30          sbit    SCK=P1^7;
  31          sbit    CSN=P1^3;
  32          sbit    AM=P1^4;
  33          sbit    DR=P3^2;
  34          sbit    CD=P1^2;
  35          //-----------------------------------------------NRF905寄存器配置-----------------------------------------
             --------
  36          unsigned char idata RFConf[11]=
  37          {
  38            0x00,                             //配置命令//
  39            0x4c,
  40            0x0c,
  41            0x44,0x04,0x04,
  42            0xcc,0xcc,0xcc,0xcc,
  43            0x58,                            //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
  44          };
  45          //-----------------------------------------------NRF905控制命令-------------------------------------------
             --------
  46          #define WC              0x00
  47          #define RC              0x10
  48          #define WTP             0x20
  49          #define RTP             0x21
  50          #define WTA             0x22
C51 COMPILER V7.06   JIESHOU                                                               04/11/2008 22:34:51 PAGE 2   

  51          #define RTA             0x23
  52          #define RRP             0x24
  53          //-----------------------------------------------延时-----------------------------------------------------
             --------
  54          void Delay(uchar n)
  55          {
  56   1              uint k;
  57   1              while(n--)
  58   1              for(k=0;k<8;k++);
  59   1      }
  60          ///-----------------------------------------------SPI读函数-----------------------------------------------
             ---------
  61          unsigned char SpiRead(void)
  62          {
  63   1              unsigned char j;
  64   1              for (j=0;j<8;j++)
  65   1              {
  66   2              DATA_BUF=DATA_BUF<<1;
  67   2                      SCK=1;
  68   2                      if (MISO)       //读取最高位,保存至最末尾,通过左移位完成整个字节
  69   2                      {
  70   3                              DATA_BUF|=BYTE_BIT0;
  71   3                      }
  72   2                      else
  73   2                      {
  74   3                              DATA_BUF&=~BYTE_BIT0;
  75   3                      }
  76   2                      SCK=0;
  77   2               }
  78   1               return DATA_BUF;
  79   1      }
  80          //------------------------------------------------SPI写函数-----------------------------------------------
             ---------
  81          void SpiWrite(unsigned char send)
  82          {
  83   1              unsigned char i;
  84   1              DATA_BUF=send;
  85   1              for (i=0;i<8;i++)
  86   1              {
  87   2                      if (DATA7)      //总是发送最高位
  88   2                      {
  89   3                              MOSI=1;
  90   3                      }
  91   2                      else
  92   2                      {
  93   3                              MOSI=0;
  94   3                      }
  95   2                      SCK=1;
  96   2                      DATA_BUF=DATA_BUF<<1;
  97   2                      SCK=0;
  98   2              }
  99   1      }
 100          //--------------------------------------------------初始化nRF905状态--------------------------------------
             -------------
 101          void nRF905Init(void)
 102          {
 103   1          CSN=1;                                              // Spi  disable
 104   1              SCK=0;                                          // Spi clock line init low
 105   1              DR=0;                                           // Init DR for input
 106   1              AM=0;                                           // Init AM for input
 107   1              CD=0;                                           // Init CD for input
 108   1              PWR=1;                                  // nRF905 power on
C51 COMPILER V7.06   JIESHOU                                                               04/11/2008 22:34:51 PAGE 3   

 109   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 110   1              TXEN=0;                                 // set radio in Rx mode
 111   1      }
 112          //--------------------------------------------------NRF905初始化寄存器------------------------------------
             --------
 113          void Config905(void)
 114          {
 115   1              uchar i;
 116   1              CSN=0;                                          // Spi enable for write a spi command
 117   1              //SpiWrite(WC);                         // Write config command写放配置命令
 118   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 119   1              {
 120   2                 SpiWrite(RFConf[i]);
 121   2              }
 122   1              CSN=1;                                  // Disable Spi
 123   1      }
 124          //--------------------------------------------------NRF905接收模式----------------------------------------
             --------
 125          void SetRxMode(void)
 126          {
 127   1              TXEN=0;
 128   1              TRX_CE=1;
 129   1              Delay(1);                                       // delay for mode change(>=650us)
 130   1      }
 131          //--------------------------------------------------判断数据是否收到--------------------------------------
             --------
 132          unsigned char CheckDR(void)             //检查是否有新数据传入 Data Ready
 133          {
 134   1              if (DR=1&&TRX_CE==1 && TXEN==0)
 135   1              {
 136   2             // Delay(50)  ;
 137   2                      return 1;
 138   2              }
 139   1              else
 140   1              {
 141   2                      return 0;
 142   2              }
 143   1      }
 144          //--------------------------------------------------数据接收----------------------------------------------
             -------------
 145          void RxPacket(void)                                                     //读数据
 146          {
 147   1              uchar i;
 148   1          Delay(1);
 149   1      //      TRX_CE=0;                                       // Set nRF905 in standby mode
 150   1          Delay(100);
 151   1          TRX_CE=0;
 152   1              CSN=0;                                          // Spi enable for write a spi command
 153   1          Delay(1);
 154   1              SpiWrite(RRP);
 155   1              for (i = 0 ;i < 4 ;i++)
 156   1              {   
 157   2                      TxRxBuffer[i]=SpiRead();                // Read data and save to buffer     
 158   2              }
 159   1              CSN=1;
 160   1          Delay(10);
 161   1              TRX_CE=1;                                                       
 162   1      }
 163          //--------------------------------------------------NRF905数据接收----------------------------------------
             ---------
 164          void  RX(void)
 165          {
C51 COMPILER V7.06   JIESHOU                                                               04/11/2008 22:34:51 PAGE 4   

 166   1          SetRxMode();                        // Set nRF905 in Rx mode
 167   1          while (CheckDR()==0);
 168   1              Delay(10);
 169   1              RxPacket();
 170   1              Delay(10);
 171   1      }
 172          //-------------------------------------------------串口出事化---------------------------------------------
             --------
 173          void StartUART( void )
 174          {                                                       //波特率4800
 175   1           SCON = 0x50;
 176   1           TMOD = 0x20;
 177   1           TH1 = 0xFA;
 178   1           TL1 = 0xFA;
 179   1           PCON = 0x00;
 180   1           TR1 = 1;
 181   1      }
 182          //------------------------------------------------串口发送------------------------------------------------
             ---------
 183          void R_S_Byte(uchar R_Byte)
 184          {       
 185   1               SBUF = R_Byte;  
 186   1           while( TI == 0 );                          //查询法
 187   1               TI = 0;    
 188   1      }
 189          //--------------------------------------------------------------------------------------------------------
             ---------
 190          void main(void)
 191          {
 192   1              StartUART();
 193   1              nRF905Init();
 194   1              Config905();
 195   1              while(1)
 196   1              {
 197   2                      char i;
 198   2                      RX();
 199   2                      Delay(10);
 200   2                      CSN=0;  
 201   2                      for(i=0;i<4;i++)
 202   2                      {
 203   3                      R_S_Byte(TxRxBuffer[i]);
 204   3                      }
 205   2                      CSN=1;
 206   2                      Delay(1);
 207   2              }
 208   1      }
 209          
 210          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    301    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       1
   IDATA SIZE       =     11    ----
   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 + -