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

📄 nrf905.lst

📁 nrf905配置程序发送接收及应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 134   1        nrf905_SpiRW(CRC16_EN | XOF_16MHz);            //CRC16模式使能,晶体振荡器频率16MHz
 135   1        SET(PORTB,CSN);                 // Disable Spi
 136   1      }
 137          
 138          uchar nrf905_SpiRW(uchar val) 
 139          {uchar temp;
 140   1      
 141   1          SPDR=val;
 142   1              while ((SPSR&(1<<SPIF))==0);
 143   1              temp=SPDR;
 144   1              return temp;
 145   1      }
 146          
 147          //PwrDown->StandBy
 148          void nrf905_StandBy()
 149          {
 150   1         SET(PORTB,PWR);
 151   1         CLR(PORTB,TRXCE);
 152   1         CLR(PORTB,TX_EN);
 153   1      }
 154          
 155          //->PwrDown
 156          void nrf905_Off()
 157          {
 158   1        CLR(PORTB,PWR);
 159   1      }
 160          
 161          //->ShockBurst Send
 162          void nrf905_TxOn()
 163          {
 164   1        SET(PORTB,PWR);
 165   1        SET(PORTB,TX_EN);
 166   1        CLR(PORTB,TRXCE);
 167   1      }
 168          
 169          //->ShockBurst Send
 170          void nrf905_TxSend()
 171          {
 172   1        SET(PORTB,TRXCE);
 173   1        DelayUs(20);//>10us
 174   1        CLR(PORTB,TRXCE);//只发送一次
 175   1      }
 176          
C51 COMPILER V7.06   NRF905                                                                03/28/2008 15:03:59 PAGE 4   

 177          //->ShockBurst Recv
 178          void nrf905_RxOn()
 179          {
 180   1        SET(PORTB,PWR);
 181   1        CLR(PORTB,TX_EN);//maybe first
 182   1        SET(PORTB,TRXCE);
 183   1      }
 184          
 185          //初始化nrf905
 186          void nrf905_Init()
 187          {
 188   1         nrf905_StandBy();
 189   1         DelayMs(10);//!!!must >3ms
 190   1         nrf905_Config();
 191   1         
 192   1         nrf905_SpiTest();//test...
 193   1         nrf905_RxOn();
 194   1      }
 195          
 196          //测试:通过读配置,判断SPI操作是否正确
 197          void nrf905_SpiTest()
 198          {uchar i;
 199   1        CLR(PORTB,CSN);                   
 200   1        nrf905_SpiRW(RC);  //读配置
 201   1        for (i=0;i<10;i++)
 202   1        { 
 203   2          RxBuf[i]=  nrf905_SpiRW(0);//read from nrf905
 204   2        }
 205   1        SET(PORTB,CSN);  
 206   1      }
 207          
 208          //写Tx地址
 209          void nrf905_SetTxAddr()
 210          {
 211   1        CLR(PORTB,CSN);                   
 212   1        nrf905_SpiRW(WTA);  //写Tx地址  
 213   1        nrf905_SpiRW(TX_ADDRESS_0);
 214   1        nrf905_SpiRW(TX_ADDRESS_1);
 215   1        nrf905_SpiRW(TX_ADDRESS_2);
 216   1        nrf905_SpiRW(TX_ADDRESS_3);
 217   1        SET(PORTB,CSN);  
 218   1      }
 219          
 220          //写Tx数据
 221          void nrf905_SetData()
 222          {uchar i;
 223   1      
 224   1        CLR(PORTB,CSN);                   
 225   1        nrf905_SpiRW(WTP);  //写TxPayload 
 226   1        for (i=0;i<SIZE;i++)
 227   1        { 
 228   2          nrf905_SpiRW(TxBuf[i]);
 229   2        }
 230   1        
 231   1        SET(PORTB,CSN);  
 232   1      }
 233          
 234          //等待发送结束
 235          void nrf905_WaitSended()
 236          {
 237   1         while ((PIND&(1<<DR))==0);
 238   1      }
C51 COMPILER V7.06   NRF905                                                                03/28/2008 15:03:59 PAGE 5   

 239          
 240          //发送TxBuf中的数据
 241          void nrf905_SendData()
 242          {
 243   1         nrf905_TxOn();//切换到发送模式
 244   1         nrf905_SetTxAddr();//写发送地址
 245   1         nrf905_SetData();//写数据
 246   1         nrf905_TxSend();//启动发送
 247   1         nrf905_WaitSended();//等待发送结束
 248   1         
 249   1      }
 250          
 251          //测试直接重新发送上次写入的数据
 252          void nrf905_SendAgain()
 253          {
 254   1         nrf905_TxOn();
 255   1         nrf905_TxSend();
 256   1         nrf905_WaitSended();
 257   1         
 258   1      }
 259          
 260          //读出接收到的数据
 261          void nrf905_ReadData()
 262          {
 263   1        uchar i;
 264   1      
 265   1        CLR(PORTB,CSN);                   
 266   1        nrf905_SpiRW(RRP);  //读RxPayload 
 267   1        for (i=0;i<SIZE;i++)
 268   1        { 
 269   2          RxBuf[i]=nrf905_SpiRW(0);//read...
 270   2        }
 271   1        
 272   1        SET(PORTB,CSN);  
 273   1      
 274   1      }

C51 COMPILATION COMPLETE.  2 WARNING(S),  1 ERROR(S)

⌨️ 快捷键说明

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