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

📄 ptr8000.lst

📁 MSP430的nRF905(射频芯片)例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 122   1              while(i--);     
 123   1      }       
 124          
 125          void ChangeMode(uchar num)
 126          {
 127   1              if(num==PowerDown)
 128   1              {
 129   2                      RFPWR = 0;              /* 配置为掉电模式 */
 130   2                      TX_EN = 0;
 131   2                      TRX_EN = 0;
 132   2              }
 133   1              if(num==Standby)
 134   1              {
 135   2              TRX_EN=0;
 136   2                      TX_EN=0;
 137   2                      RFPWR=1;
 138   2              }
 139   1              if(num==RXMode)
 140   1              {
 141   2      /*              TRX_EN=0;       /**/
 142   2                      TX_EN=0;
 143   2                      RFPWR=1;
 144   2                      _nop_();
 145   2                      _nop_();
 146   2              TRX_EN=1;
 147   2              }
 148   1              if(num==TXMode)
 149   1              {
 150   2              TX_EN=1;
 151   2                      RFPWR=1;
 152   2                      TRX_EN=0;
 153   2              }
 154   1              if(num==TXData)
 155   1              {
 156   2                      TRX_EN = 1;
 157   2                      Delayus(20);    
 158   2                      TRX_EN = 0;             /* ??  Make a 20us Pulse as nRF905 Datasheet */
 159   2              }
 160   1      }
 161          /*------------------------------------------------
 162                  SPI读写一体化函数SpiReadWrite()
 163          入口参数:
 164                  val  写入命令或数据
 165          出口参数:
 166                  R7   读出数据
 167          ------------------------------------------------*/
 168          uchar SpiReadWrite(uchar val)
 169          {       
 170   1              uchar i;
 171   1              ACC = val;
 172   1              for (i = 8; i > 0; i --)
 173   1              {
 174   2                      CY = RFMISO;    //取数据SO
 175   2                      _rlca_();               //存数据ACC.0读数据ACC.7同时进行
 176   2                      RFMOSI = CY;    //送数据SI
 177   2                      RFSCK = 1;              //上升沿打入数据
 178   2                      _nop_();
 179   2                      RFSCK  = 0;             //下降沿读入数据(首次为假动作)
C51 COMPILER V7.50   PTR8000                                                               03/30/2006 09:11:26 PAGE 4   

 180   2              }
 181   1              return ACC;
 182   1      }
 183          
 184          
 185          
 186          /********  配置nRF905函数  **************************************************************/
 187          void Config905(void) using 0            //配置nRF905
 188          {
 189   1              RFCSN = 0;                              /* Spi enable for write a spi command */
 190   1              SpiReadWrite(WC);               /* Write config command */
 191   1      /*      RFCSN = 1;              /***/
 192   1      /*      RFCSN = 0;              /***/
 193   1              SpiReadWrite(CH_NO_BYTE);                      //中心频率低8位
 194   1              SpiReadWrite(PA_PWR_10dBm | HFREQ_PLL_433MHz); //发射+10dBm,发射频率433MHz,中心频率第9位=0
 195   1              SpiReadWrite(TX_AFW_4BYTE | RX_AFW_4BYTE);     //接收地址宽度4字节,发送地址宽度4字节
 196   1              SpiReadWrite(RX_PW_16BYTE);                    //接收数据宽度16字节
 197   1              SpiReadWrite(TX_PW_16BYTE);                    //发送数据宽度16字节
 198   1              SpiReadWrite(RX_ADDRESS_0);                    //接收有效地址第1字节
 199   1              SpiReadWrite(RX_ADDRESS_1);                    //接收有效地址第2字节
 200   1              SpiReadWrite(RX_ADDRESS_2);                    //接收有效地址第3字节
 201   1              SpiReadWrite(RX_ADDRESS_3);                    //接收有效地址第4字节
 202   1              SpiReadWrite(CRC16_EN | XOF_16MHz);            //CRC16模式使能,晶体振荡器频率16MHz
 203   1              RFCSN = 1;                        // Disable Spi
 204   1      }
 205          
 206          void RF905_Read(uchar RFcmd,uchar *RFdata)
 207          {
 208   1              uchar i,len;
 209   1              if(RFcmd==WTA|RFcmd==RTA) len=4;
 210   1              else if(RFcmd==WC|RFcmd==RC) len=10;
 211   1              else if(RFcmd==WTP|RFcmd==RTP|RFcmd==RRP) len=16;
 212   1              else len=0;
 213   1      
 214   1              RFCSN = 0;              /* Spi enable for write a spi command */
 215   1              SpiReadWrite(RFcmd);
 216   1              for(i=0;i<len;i++) RFdata[i]=SpiReadWrite(0);
 217   1              RFCSN = 1;
 218   1      }
 219          
 220          void RF905_Write(uchar RFcmd,uchar *RFdata)
 221          {               
 222   1              uchar i,len;
 223   1              if(RFcmd==WTA|RFcmd==RTA) len=4;
 224   1              else if(RFcmd==WC|RFcmd==RC) len=10;
 225   1              else if(RFcmd==WTP|RFcmd==RTP|RFcmd==RRP) len=16;
 226   1              else len=0;
 227   1      
 228   1              RFCSN = 0;              /* Spi enable for write a spi command */
 229   1              SpiReadWrite(RFcmd);
 230   1              for(i=0;i<len;i++) SpiReadWrite(RFdata[i]);     /* len Bytes Data */
 231   1              RFCSN = 1;                        // Disable Spi
 232   1      }               
 233          
 234          
 235          
 236          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    450    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.50   PTR8000                                                               03/30/2006 09:11:26 PAGE 5   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       6
   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 + -